Merge updates from master

This commit is contained in:
Repository mirror & CI
2025-05-30 06:54:23 +00:00
14 changed files with 2 additions and 944 deletions

View File

@@ -1,5 +1,3 @@
DIST ruby-3.1.6.tar.xz 15273916 BLAKE2B feb697b8d01ebde0042e679b814c4c95481c6afa607db46ad1511fb0d1a555d7800725e847e90dd9944ef42575c5205cf711025a165a65b6070743701631929c SHA512 a3159648706d6d11ce9613201141e884b3accc69bf928c756de8a8f2b71d219886e91435d30cf2c30e85af31f87801138e10106344766100f1b80662c7244652
DIST ruby-3.1.7.tar.xz 15196628 BLAKE2B 9e94bc1e3eac75864f700261aa734f4907f3005e8ffa6cbc82d6da7612554f162036a9f25fb6a5c0e35ec11efaaf1e638f47b6de45c8ceac82f6d4d3ff040a14 SHA512 44e013f6e8d159a49125d24eaf02f58e02997fcd7bd4f4370250248c2d3264fb45183e33797638a7d9a2907fb48fe1b46f5f45514d60a800f96bce2c10baca82
DIST ruby-3.2.6.tar.xz 15126888 BLAKE2B d59352e5543b96abe3de5f10b578c2b910a0f18f848fb32a10b80f8e882e7c687a3149ce6ab6ba1271731b8668e1dd47754b778def13010a587aa8544e881943 SHA512 78f7fc76d47c772b9bc313cbcb57a2c0f1a975e09cfe46a3083f6f603d62b0031bd4c55896c8353c1c343974d45077e06e310111198d870883e06a0cf6fd03ce
DIST ruby-3.2.7.tar.xz 15128228 BLAKE2B a75717dde36669c7b62e7175fb74f2a6f5c7590e7b56ced3d35f1c626d3b7f67eed8b32705187708828622478166d3b630215f828773fe677af67996f0da6d3c SHA512 c10b6fd27fad3bbd33d780c0a3eccb5df2a8465a89d2294ea6f14c7e5e8f7c8ea30b8a8b68bf8903c76f9133c5d984d5d66052ec4eb413153c739e6eea24beed
DIST ruby-3.2.8.tar.xz 15130380 BLAKE2B 8d5223bfcec8804f9b52202a3e153c62427cd3a7cc7c2323ee8ea6fdb1b8e5e4cddec7516cf1db3dab7e06ae50122ae36760e518bcf471e344a7b7dffea5603c SHA512 19ff96619945d907e509803b85ecf21750ffa4ae033045272feb43c183ab180d0033b98cf47c18804e448f01bc1928e3b833c61c98446dbe6be31fb9ea6b059d

View File

@@ -1,15 +0,0 @@
Fix compilation with socks5 USE flag.
Patch by Phobos Kappa in https://bugs.gentoo.org/762253
--- a/ext/socket/sockssocket.c 2020-12-25 05:33:01.000000000 +0200
+++ b/ext/socket/sockssocket.c 2020-12-28 15:42:50.310029778 +0200
@@ -34,7 +34,7 @@
init = 1;
}
- return rsock_init_inetsock(sock, host, port, Qnil, Qnil, INET_SOCKS, Qnil);
+ return rsock_init_inetsock(sock, host, port, Qnil, Qnil, INET_SOCKS, Qnil, Qnil);
}
#ifdef SOCKS5

View File

@@ -1,20 +0,0 @@
--- a/tool/rbinstall.rb.~1~ 2020-12-25 04:33:01.000000000 +0100
+++ b/tool/rbinstall.rb 2020-12-25 10:05:34.629096405 +0100
@@ -897,7 +897,7 @@
end
def install_default_gem(dir, srcdir, bindir)
- gem_dir = Gem.default_dir
+ gem_dir = ENV['GEM_DESTDIR']
install_dir = with_destdir(gem_dir)
prepare "default gems from #{dir}", gem_dir
makedirs(Gem.ensure_default_gem_subdirectories(install_dir, $dir_mode).map {|d| File.join(gem_dir, d)})
@@ -1018,7 +1018,7 @@
end
Gem.instance_variable_set(:@ruby, ruby_path) if Gem.ruby != ruby_path
- gem_dir = Gem.default_dir
+ gem_dir = ENV['GEM_DESTDIR']
install_dir = with_destdir(gem_dir)
prepare "bundled gems", gem_dir
RbInstall.no_write do

View File

@@ -1,20 +0,0 @@
--- a/tool/rbinstall.rb.~1~ 2020-12-25 04:33:01.000000000 +0100
+++ b/tool/rbinstall.rb 2020-12-25 10:05:34.629096405 +0100
@@ -897,7 +897,7 @@
end
def install_default_gem(dir, srcdir, bindir)
- gem_dir = Gem.default_dir
+ gem_dir = ENV['GEM_DESTDIR']
install_dir = with_destdir(gem_dir)
prepare "default gems from #{dir}", gem_dir
makedirs(Gem.ensure_default_gem_subdirectories(install_dir, $dir_mode).map {|d| File.join(gem_dir, d)})
@@ -1010,7 +1010,7 @@
end
install?(:ext, :comm, :gem, :'bundled-gems') do
- gem_dir = Gem.default_dir
+ gem_dir = ENV['GEM_DESTDIR']
install_dir = with_destdir(gem_dir)
prepare "bundled gems", gem_dir
RbInstall.no_write do

View File

@@ -1,33 +0,0 @@
From 47988e63d65098ce1e6484f03ae5e2ca42bd7963 Mon Sep 17 00:00:00 2001
From: Sorah Fukumori <her@sorah.jp>
Date: Sat, 8 Jan 2022 14:03:02 +0900
Subject: [PATCH] test_readline#test_without_tty: Use EnvUtil.rubybin
`ruby` is not always available in certain build environments and
configure options. Choose appropriate command line using EnvUtil.
---
test/readline/test_readline.rb | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/test/readline/test_readline.rb b/test/readline/test_readline.rb
index be338c6c0d484e..be6e65f32ef22d 100644
--- a/test/readline/test_readline.rb
+++ b/test/readline/test_readline.rb
@@ -6,6 +6,8 @@
require "open3"
module BasetestReadline
+ RUBY = EnvUtil.rubybin
+
INPUTRC = "INPUTRC"
TERM = "TERM"
SAVED_ENV = %w[COLUMNS LINES]
@@ -839,7 +841,7 @@ def test_without_tty
loader = "use_lib_reline"
end
if loader
- res, exit_status = Open3.capture2e("ruby -I#{__dir__} -Ilib -rhelper -e '#{loader}; Readline.readline(%{y or n?})'", stdin_data: "y\n")
+ res, exit_status = Open3.capture2e("#{RUBY} -I#{__dir__} -Ilib -rhelper -e '#{loader}; Readline.readline(%{y or n?})'", stdin_data: "y\n")
assert exit_status.success?, "It should work fine without tty, but it failed.\nError output:\n#{res}"
end
end

View File

@@ -1,147 +0,0 @@
From bea20365f43ee115ea6219c7113647eed3d9e342 Mon Sep 17 00:00:00 2001
From: matoro <matoro@users.noreply.github.com>
Date: Wed, 7 Aug 2024 13:15:00 -0400
Subject: [PATCH] Replace specific constant tests with just type checks
As detailed in the attached issue, these constants can and do vary e.g.
between architectures on Linux. Hardcoding and asserting that they are
equal to specific values pretty much defeats the purpose of building
these in at compile time. Instead, simply assert that they exist and
are integers.
Fixes: https://github.com/ruby/spec/issues/1150
---
core/process/constants_spec.rb | 116 ++++++++++++++++++++-------------
1 file changed, 69 insertions(+), 47 deletions(-)
diff --git a/core/process/constants_spec.rb b/core/process/constants_spec.rb
index 616c54b8e..57cacadef 100644
--- a/spec/ruby/core/process/constants_spec.rb
+++ b/spec/ruby/core/process/constants_spec.rb
@@ -2,64 +2,81 @@
describe "Process::Constants" do
platform_is :darwin, :netbsd, :freebsd do
- it "has the correct constant values on BSD-like systems" do
- Process::WNOHANG.should == 1
- Process::WUNTRACED.should == 2
- Process::PRIO_PROCESS.should == 0
- Process::PRIO_PGRP.should == 1
- Process::PRIO_USER.should == 2
- Process::RLIM_INFINITY.should == 9223372036854775807
- Process::RLIMIT_CPU.should == 0
- Process::RLIMIT_FSIZE.should == 1
- Process::RLIMIT_DATA.should == 2
- Process::RLIMIT_STACK.should == 3
- Process::RLIMIT_CORE.should == 4
- Process::RLIMIT_RSS.should == 5
- Process::RLIMIT_MEMLOCK.should == 6
- Process::RLIMIT_NPROC.should == 7
- Process::RLIMIT_NOFILE.should == 8
+ it "are all present on BSD-like systems" do
+ %i[
+ WNOHANG
+ WUNTRACED
+ PRIO_PROCESS
+ PRIO_PGRP
+ PRIO_USER
+ RLIM_INFINITY
+ RLIMIT_CPU
+ RLIMIT_FSIZE
+ RLIMIT_DATA
+ RLIMIT_STACK
+ RLIMIT_CORE
+ RLIMIT_RSS
+ RLIMIT_MEMLOCK
+ RLIMIT_NPROC
+ RLIMIT_NOFILE
+ ].each do |const|
+ Process.const_defined?(const).should be_true
+ Process.const_get(const).should be_an_instance_of(Integer)
+ end
end
end
platform_is :darwin do
- it "has the correct constant values on Darwin" do
- Process::RLIM_SAVED_MAX.should == 9223372036854775807
- Process::RLIM_SAVED_CUR.should == 9223372036854775807
- Process::RLIMIT_AS.should == 5
+ it "are all present on Darwin" do
+ %i[
+ RLIM_SAVED_MAX
+ RLIM_SAVED_CUR
+ RLIMIT_AS
+ ].each do |const|
+ Process.const_defined?(const).should be_true
+ Process.const_get(const).should be_an_instance_of(Integer)
+ end
end
end
platform_is :linux do
- it "has the correct constant values on Linux" do
- Process::WNOHANG.should == 1
- Process::WUNTRACED.should == 2
- Process::PRIO_PROCESS.should == 0
- Process::PRIO_PGRP.should == 1
- Process::PRIO_USER.should == 2
- Process::RLIMIT_CPU.should == 0
- Process::RLIMIT_FSIZE.should == 1
- Process::RLIMIT_DATA.should == 2
- Process::RLIMIT_STACK.should == 3
- Process::RLIMIT_CORE.should == 4
- Process::RLIMIT_RSS.should == 5
- Process::RLIMIT_NPROC.should == 6
- Process::RLIMIT_NOFILE.should == 7
- Process::RLIMIT_MEMLOCK.should == 8
- Process::RLIMIT_AS.should == 9
-
- # These values appear to change according to the platform.
- values = [4294967295, 9223372036854775807, 18446744073709551615]
- values.include?(Process::RLIM_INFINITY).should be_true
- values.include?(Process::RLIM_SAVED_MAX).should be_true
- values.include?(Process::RLIM_SAVED_CUR).should be_true
+ it "are all present on Linux" do
+ %i[
+ WNOHANG
+ WUNTRACED
+ PRIO_PROCESS
+ PRIO_PGRP
+ PRIO_USER
+ RLIMIT_CPU
+ RLIMIT_FSIZE
+ RLIMIT_DATA
+ RLIMIT_STACK
+ RLIMIT_CORE
+ RLIMIT_RSS
+ RLIMIT_NPROC
+ RLIMIT_NOFILE
+ RLIMIT_MEMLOCK
+ RLIMIT_AS
+ RLIM_INFINITY
+ RLIM_SAVED_MAX
+ RLIM_SAVED_CUR
+ ].each do |const|
+ Process.const_defined?(const).should be_true
+ Process.const_get(const).should be_an_instance_of(Integer)
+ end
end
end
platform_is :netbsd, :freebsd do
- it "Process::RLIMIT_SBSIZE" do
- Process::RLIMIT_SBSIZE.should == 9 # FIXME: what's it equal?
- Process::RLIMIT_AS.should == 10
+ it "are all present on NetBSD and FreeBSD" do
+ %i[
+ RLIMIT_SBSIZE
+ RLIMIT_AS
+ ].each do |const|
+ Process.const_defined?(const).should be_true
+ Process.const_get(const).should be_an_instance_of(Integer)
+ end
end
end

View File

@@ -1,28 +0,0 @@
From 868f873a78034016fc05d79061245695e3c372fc Mon Sep 17 00:00:00 2001
From: matoro <matoro@users.noreply.github.com>
Date: Thu, 23 May 2024 16:10:32 -0400
Subject: [PATCH] Skip test_interrupt_in_other_thread on arm32-linux
This is a combination of main Ruby commit
https://github.com/ruby/ruby/commit/aefc98891c42024039f19ef45bdfe93fbc590b7c
and my PR correcting the regex https://github.com/ruby/ruby/pull/10819.
Upstream Ruby requests that changes to this test go to readline-ext repo
before being backported to 3.2 branch.
---
test/readline/test_readline.rb | 3 +++
1 file changed, 3 insertions(+)
diff --git a/test/readline/test_readline.rb b/test/readline/test_readline.rb
index 746a3a5ba1..86d3862739 100644
--- a/test/readline/test_readline.rb
+++ b/test/readline/test_readline.rb
@@ -481,6 +481,9 @@ def test_interrupt_in_other_thread
# likewise with 32-bit userspace on 64-bit kernel
omit if /\Ax86_64-linux-(?:x32|i[3-6]686)\z/ =~ RUBY_PLATFORM
+ # Skip arm32-linux (Travis CI). See aefc988 in main ruby repo.
+ omit "Skip arm32-linux" if /armv[0-9+][a-z]-linux/ =~ RUBY_PLATFORM
+
if defined?(TestReadline) && self.class == TestReadline
use = "use_ext_readline"
elsif defined?(TestRelineAsReadline) && self.class == TestRelineAsReadline

View File

@@ -1,26 +0,0 @@
musl has a conservative stacksize, as compared to glibc, so treat it
like other systems with such stacksize
diff --git a/thread_pthread.c b/thread_pthread.c
index 951885ffa0..e2d662143b 100644
--- a/thread_pthread.c
+++ b/thread_pthread.c
@@ -721,7 +721,7 @@ ruby_init_stack(volatile VALUE *addr
{
native_main_thread.id = pthread_self();
-#if MAINSTACKADDR_AVAILABLE
+#if MAINSTACKADDR_AVAILABLE && !(defined(__linux__) && !defined(__GLIBC__))
if (native_main_thread.stack_maxsize) return;
{
void* stackaddr;
@@ -1680,7 +1680,7 @@ ruby_stack_overflowed_p(const rb_thread_t *th, const void *addr)
#ifdef STACKADDR_AVAILABLE
if (get_stack(&base, &size) == 0) {
-# ifdef __APPLE__
+# if defined(__APPLE__) || (defined(__linux__) && !defined(__GLIBC__))
if (pthread_equal(th->thread_id, native_main_thread.id)) {
struct rlimit rlim;
if (getrlimit(RLIMIT_STACK, &rlim) == 0 && rlim.rlim_cur > size) {

View File

@@ -1,54 +0,0 @@
https://bugs.gentoo.org/701494
From 91bfb8a5166f4530ce556a11a4b7fb64983b7686 Mon Sep 17 00:00:00 2001
From: Sam James <sam@gentoo.org>
Date: Fri, 7 Apr 2023 11:46:12 +0100
Subject: [PATCH] thread_pthread: Grow main_stack if required (fixes tests on
HPPA)
On HPPA, test_insns.rb fails (along with various Ruby gems) with
'stack level too deep (SystemStackError)'. This turns out to be because HPPA
defaults to a small(er) stack.
With this change, most of Ruby's test suite now passes on HPPA.
Thanks to both Dave and Helge for the investigation and coming up with the
patch.
Bug: https://bugs.gentoo.org/701494
Bug: https://bugs.debian.org/881773
Bug: https://bugs.debian.org/881772 (for PPC64)
Bug: https://github.com/rack/rack/issues/1640
Thanks-to: John David Anglin <dave.anglin@bell.net>
Thanks-to: Helge Deller <deller@gmx.de>
Signed-off-by: Sam James <sam@gentoo.org>
--- a/thread_pthread.c
+++ b/thread_pthread.c
@@ -738,8 +738,22 @@ size_t pthread_get_stacksize_np(pthread_t);
# define MAINSTACKADDR_AVAILABLE 0
# endif
#endif
-#if MAINSTACKADDR_AVAILABLE && !defined(get_main_stack)
-# define get_main_stack(addr, size) get_stack(addr, size)
+#if MAINSTACKADDR_AVAILABLE
+static int get_stack(void **, size_t *);
+static int
+get_main_stack(void **addr, size_t *size)
+{
+ int ret = get_stack(addr, size);
+
+#ifdef __hppa__
+ /* On some architectures, the initial stack size may be too small, but fortunately,
+ it's growable. Bump it up to the minimum needed if it is too small. */
+ if (*size < RUBY_VM_THREAD_VM_STACK_SIZE)
+ *size = RUBY_VM_THREAD_VM_STACK_SIZE;
+#endif
+
+ return ret;
+}
#endif
#ifdef STACKADDR_AVAILABLE
--
2.40.0

View File

@@ -1,289 +0,0 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit autotools flag-o-matic multiprocessing
MY_P="${PN}-$(ver_cut 1-3)"
S=${WORKDIR}/${MY_P}
SLOT=$(ver_cut 1-2)
MY_SUFFIX=$(ver_rs 1 '' ${SLOT})
RUBYVERSION=${SLOT}.0
DESCRIPTION="An object-oriented scripting language"
HOMEPAGE="https://www.ruby-lang.org/"
SRC_URI="https://cache.ruby-lang.org/pub/ruby/${SLOT}/${MY_P}.tar.xz"
LICENSE="|| ( Ruby-BSD BSD-2 )"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="berkdb debug doc examples gdbm ipv6 jemalloc jit socks5 +ssl static-libs systemtap tk valgrind xemacs"
RDEPEND="
berkdb? ( sys-libs/db:= )
gdbm? ( sys-libs/gdbm:= )
jemalloc? ( dev-libs/jemalloc:= )
jit? ( || ( sys-devel/gcc:* llvm-core/clang:* ) )
ssl? (
dev-libs/openssl:0=
)
socks5? ( >=net-proxy/dante-1.1.13 )
systemtap? ( dev-debug/systemtap )
tk? (
dev-lang/tcl:0=[threads]
dev-lang/tk:0=[threads]
)
dev-libs/libyaml
dev-libs/libffi:=
sys-libs/readline:0=
sys-libs/zlib
virtual/libcrypt:=
>=app-eselect/eselect-ruby-20231008
"
DEPEND="
${RDEPEND}
valgrind? ( dev-debug/valgrind )
"
BUNDLED_GEMS="
>=dev-ruby/irb-1.4.1[ruby_targets_ruby31(-)]
>=dev-ruby/minitest-5.15.0[ruby_targets_ruby31(-)]
>=dev-ruby/power_assert-2.0.1[ruby_targets_ruby31(-)]
>=dev-ruby/rake-13.0.6-r2[ruby_targets_ruby31(-)]
>=dev-ruby/rbs-2.1.0[ruby_targets_ruby31(-)]
>=dev-ruby/rexml-3.2.5[ruby_targets_ruby31(-)]
>=dev-ruby/rss-0.2.9[ruby_targets_ruby31(-)]
>=dev-ruby/test-unit-3.5.3[ruby_targets_ruby31(-)]
>=dev-ruby/typeprof-0.12.2[ruby_targets_ruby31(-)]
"
PDEPEND="
${BUNDLED_GEMS}
virtual/rubygems[ruby_targets_ruby31(-)]
>=dev-ruby/bundler-2.3.3[ruby_targets_ruby31(-)]
>=dev-ruby/did_you_mean-1.6.1[ruby_targets_ruby31(-)]
>=dev-ruby/json-2.6.1[ruby_targets_ruby31(-)]
>=dev-ruby/rdoc-6.3.3[ruby_targets_ruby31(-)]
xemacs? ( app-xemacs/ruby-modes )
"
src_prepare() {
eapply "${FILESDIR}"/"${SLOT}"/011*.patch
eapply "${FILESDIR}"/"${SLOT}"/012*.patch
eapply "${FILESDIR}"/"${SLOT}"/013*.patch
eapply "${FILESDIR}"/"${SLOT}"/020*.patch
eapply "${FILESDIR}"/"${SLOT}"/902*.patch
if use elibc_musl ; then
eapply "${FILESDIR}"/3.1/901-musl-*.patch
fi
einfo "Unbundling gems..."
cd "$S"
# Remove bundled gems that we will install via PDEPEND, bug
# 539700.
rm -fr gems/* || die
touch gems/bundled_gems || die
# Don't install CLI tools since they will clash with the gem
rm -f bin/{racc,racc2y,y2racc} || die
sed -i -e '/executables/ s:^:#:' lib/racc/racc.gemspec || die
einfo "Removing bundled libraries..."
rm -fr ext/fiddle/libffi-3.2.1 || die
# Remove webrick tests because setting LD_LIBRARY_PATH does not work for them.
rm -rf tool/test/webrick || die
# Remove tests that are known to fail or require a network connection
rm -f test/ruby/test_process.rb test/rubygems/test_gem{,_path_support}.rb || die
rm -f test/rinda/test_rinda.rb test/socket/test_tcp.rb test/fiber/test_address_resolve.rb test/resolv/test_addr.rb \
spec/ruby/library/socket/tcpsocket/{initialize,open}_spec.rb|| die
sed -i -e '/def test_test/askip "Depends on system setup"' test/ruby/test_file_exhaustive.rb || die
# MJIT is broken and removed in later ruby versions.
rm -f test/ruby/test_jit.rb || die
# This test calls out to the system ruby which is not being tested
# and may not be the same version.
sed -e '/test_without_tty/aomit "Calls system ruby"' \
-i test/readline/test_readline.rb || die
if use prefix ; then
# Fix hardcoded SHELL var in mkmf library
sed -i -e "s#\(SHELL = \).*#\1${EPREFIX}/bin/sh#" lib/mkmf.rb || die
fi
eapply_user
eautoreconf
}
src_configure() {
local modules="win32,win32ole" myconf=
# Ruby's build system does interesting things with MAKEOPTS and doesn't
# handle MAKEOPTS="-Oline" or similar well. Just filter it all out
# and use -j/-l parsed out from the original MAKEOPTS, then use that.
# Newer Portage sets this option by default in GNUMAKEFLAGS if nothing
# is set by the user in MAKEOPTS. See bug #900929 and bug #728424.
local makeopts_tmp="-j$(makeopts_jobs) -l$(makeopts_loadavg)"
unset MAKEOPTS MAKEFLAGS GNUMAKEFLAGS
export MAKEOPTS="${makeopts_tmp}"
# Avoid a hardcoded path to mkdir to avoid issues with mixed
# usr-merge and normal binary packages, bug #932386.
export ac_cv_path_mkdir=mkdir
# -fomit-frame-pointer makes ruby segfault, see bug #150413.
filter-flags -fomit-frame-pointer
append-flags -fno-omit-frame-pointer
# In many places aliasing rules are broken; play it safe
# as it's risky with newer compilers to leave it as it is.
append-flags -fno-strict-aliasing
# Ruby 3.1 does not compile against the gnu23 standard, bug
# #943767. Given that Ruby 3.1 is EOL in March 2025 just opt to use
# the older standard.
append-flags -std=gnu17
# Workaround for bug #938302
if use systemtap && has_version "dev-debug/systemtap[-dtrace-symlink(+)]" ; then
export DTRACE="${BROOT}"/usr/bin/stap-dtrace
fi
# Socks support via dante
if use socks5 ; then
# Socks support can't be disabled as long as SOCKS_SERVER is
# set and socks library is present, so need to unset
# SOCKS_SERVER in that case.
unset SOCKS_SERVER
fi
# Increase GC_MALLOC_LIMIT if set (default is 8000000)
if [ -n "${RUBY_GC_MALLOC_LIMIT}" ] ; then
append-flags "-DGC_MALLOC_LIMIT=${RUBY_GC_MALLOC_LIMIT}"
fi
# ipv6 hack, bug 168939. Needs --enable-ipv6.
use ipv6 || myconf="${myconf} --with-lookup-order-hack=INET"
# Determine which modules *not* to build depending in the USE flags.
if ! use berkdb ; then
modules="${modules},dbm"
fi
if ! use gdbm ; then
modules="${modules},gdbm"
fi
if ! use ssl ; then
modules="${modules},openssl"
fi
if ! use tk ; then
modules="${modules},tk"
fi
# Provide an empty LIBPATHENV because we disable rpath but we do not
# need LD_LIBRARY_PATH by default since that breaks USE=multitarget
# #564272
# except on Darwin, where we really need LIBPATHENV to set the right
# DYLD_ stuff during the invocation of miniruby for it to work
#
# --with-setjmp-type=setjmp for bug #949016
[[ ${CHOST} == *-darwin* ]] || export LIBPATHENV=""
INSTALL="${EPREFIX}/usr/bin/install -c" econf \
--program-suffix=${MY_SUFFIX} \
--with-soname=ruby${MY_SUFFIX} \
--with-readline-dir="${EPREFIX}"/usr \
--enable-shared \
--enable-pthread \
--disable-rpath \
--without-baseruby \
--with-compress-debug-sections=no \
--with-setjmp-type=setjmp \
--enable-mkmf-verbose \
--with-out-ext="${modules}" \
$(use_with jemalloc jemalloc) \
$(use_enable jit jit-support ) \
$(use_enable socks5 socks) \
$(use_enable systemtap dtrace) \
$(use_enable doc install-doc) \
--enable-ipv6 \
$(use_enable static-libs static) \
$(use_enable static-libs install-static-library) \
$(use_with static-libs static-linked-ext) \
$(use_enable debug) \
$(use_with valgrind) \
${myconf} \
--enable-option-checking=no
# Makefile is broken because it lacks -ldl
rm -rf ext/-test-/popen_deadlock || die
}
src_compile() {
local -x LD_LIBRARY_PATH="${S}${LD_LIBRARY_PATH+:}${LD_LIBRARY_PATH}"
emake V=1 EXTLDFLAGS="${LDFLAGS}" MJIT_CFLAGS="${CFLAGS}" MJIT_OPTFLAGS="" MJIT_DEBUGFLAGS=""
}
src_test() {
local -x LD_LIBRARY_PATH="${S}${LD_LIBRARY_PATH+:}${LD_LIBRARY_PATH}"
emake V=1 check
}
src_install() {
# Remove the remaining bundled gems. We do this late in the process
# since they are used during the build to e.g. create the
# documentation.
einfo "Removing default gems before installation"
rm -rf lib/bundler* lib/rdoc/rdoc.gemspec || die
# Ruby is involved in the install process, we don't want interference here.
unset RUBYOPT
local MINIRUBY=$(echo -e 'include Makefile\ngetminiruby:\n\t@echo $(MINIRUBY)'|make -f - getminiruby)
local -x LD_LIBRARY_PATH="${S}:${ED}/usr/$(get_libdir)${LD_LIBRARY_PATH+:}${LD_LIBRARY_PATH}"
local -x RUBYLIB="${S}:${ED}/usr/$(get_libdir)/ruby/${RUBYVERSION}"
for d in $(find "${S}/ext" -type d) ; do
RUBYLIB="${RUBYLIB}:$d"
done
# Create directory for the default gems
local gem_home="${EPREFIX}/usr/$(get_libdir)/ruby/gems/${RUBYVERSION}"
mkdir -p "${D}/${gem_home}" || die "mkdir gem home failed"
emake V=1 DESTDIR="${D}" GEM_DESTDIR=${gem_home} install
# Remove installed rubygems and rdoc copy
rm -rf "${ED}/usr/$(get_libdir)/ruby/${RUBYVERSION}/rubygems" || die "rm rubygems failed"
rm -rf "${ED}/usr/bin/"gem"${MY_SUFFIX}" || die "rm rdoc bins failed"
rm -rf "${ED}/usr/$(get_libdir)/ruby/${RUBYVERSION}"/rdoc* || die "rm rdoc failed"
rm -rf "${ED}/usr/bin/"{bundle,bundler,ri,rdoc}"${MY_SUFFIX}" || die "rm rdoc bins failed"
if use doc; then
emake DESTDIR="${D}" GEM_DESTDIR=${gem_home} install-doc
fi
if use examples; then
dodoc -r sample
fi
dodoc ChangeLog NEWS.md doc/NEWS* README*
}
pkg_postinst() {
if [[ ! -n $(readlink "${EROOT}"/usr/bin/ruby) ]] ; then
eselect ruby set ruby${MY_SUFFIX}
fi
elog
elog "To switch between available Ruby profiles, execute as root:"
elog "\teselect ruby set ruby(30|31|...)"
elog
}
pkg_postrm() {
eselect ruby cleanup
}

View File

@@ -1,289 +0,0 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit autotools flag-o-matic multiprocessing
MY_P="${PN}-$(ver_cut 1-3)"
S=${WORKDIR}/${MY_P}
SLOT=$(ver_cut 1-2)
MY_SUFFIX=$(ver_rs 1 '' ${SLOT})
RUBYVERSION=${SLOT}.0
DESCRIPTION="An object-oriented scripting language"
HOMEPAGE="https://www.ruby-lang.org/"
SRC_URI="https://cache.ruby-lang.org/pub/ruby/${SLOT}/${MY_P}.tar.xz"
LICENSE="|| ( Ruby-BSD BSD-2 )"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="berkdb debug doc examples gdbm ipv6 jemalloc jit socks5 +ssl static-libs systemtap tk valgrind xemacs"
RDEPEND="
berkdb? ( sys-libs/db:= )
gdbm? ( sys-libs/gdbm:= )
jemalloc? ( dev-libs/jemalloc:= )
jit? ( || ( sys-devel/gcc:* llvm-core/clang:* ) )
ssl? (
dev-libs/openssl:0=
)
socks5? ( >=net-proxy/dante-1.1.13 )
systemtap? ( dev-debug/systemtap )
tk? (
dev-lang/tcl:0=[threads]
dev-lang/tk:0=[threads]
)
dev-libs/libyaml
dev-libs/libffi:=
sys-libs/readline:0=
sys-libs/zlib
virtual/libcrypt:=
>=app-eselect/eselect-ruby-20231008
"
DEPEND="
${RDEPEND}
valgrind? ( dev-debug/valgrind )
"
BUNDLED_GEMS="
>=dev-ruby/irb-1.4.1[ruby_targets_ruby31(-)]
>=dev-ruby/minitest-5.15.0[ruby_targets_ruby31(-)]
>=dev-ruby/power_assert-2.0.1[ruby_targets_ruby31(-)]
>=dev-ruby/rake-13.0.6-r2[ruby_targets_ruby31(-)]
>=dev-ruby/rbs-2.1.0[ruby_targets_ruby31(-)]
>=dev-ruby/rexml-3.2.5[ruby_targets_ruby31(-)]
>=dev-ruby/rss-0.2.9[ruby_targets_ruby31(-)]
>=dev-ruby/test-unit-3.5.3[ruby_targets_ruby31(-)]
>=dev-ruby/typeprof-0.12.2[ruby_targets_ruby31(-)]
"
PDEPEND="
${BUNDLED_GEMS}
virtual/rubygems[ruby_targets_ruby31(-)]
>=dev-ruby/bundler-2.3.3[ruby_targets_ruby31(-)]
>=dev-ruby/did_you_mean-1.6.1[ruby_targets_ruby31(-)]
>=dev-ruby/json-2.6.1[ruby_targets_ruby31(-)]
>=dev-ruby/rdoc-6.3.3[ruby_targets_ruby31(-)]
xemacs? ( app-xemacs/ruby-modes )
"
src_prepare() {
eapply "${FILESDIR}"/"${SLOT}"/011*.patch
eapply "${FILESDIR}"/"${SLOT}"/012*.patch
eapply "${FILESDIR}"/"${SLOT}"/013*.patch
eapply "${FILESDIR}"/"${SLOT}"/020*.patch
eapply "${FILESDIR}"/"${SLOT}"/902*.patch
if use elibc_musl ; then
eapply "${FILESDIR}"/3.1/901-musl-*.patch
fi
einfo "Unbundling gems..."
cd "$S"
# Remove bundled gems that we will install via PDEPEND, bug
# 539700.
rm -fr gems/* || die
touch gems/bundled_gems || die
# Don't install CLI tools since they will clash with the gem
rm -f bin/{racc,racc2y,y2racc} || die
sed -i -e '/executables/ s:^:#:' lib/racc/racc.gemspec || die
einfo "Removing bundled libraries..."
rm -fr ext/fiddle/libffi-3.2.1 || die
# Remove webrick tests because setting LD_LIBRARY_PATH does not work for them.
rm -rf tool/test/webrick || die
# Remove tests that are known to fail or require a network connection
rm -f test/ruby/test_process.rb test/rubygems/test_gem{,_path_support}.rb || die
rm -f test/rinda/test_rinda.rb test/socket/test_tcp.rb test/fiber/test_address_resolve.rb test/resolv/test_addr.rb \
spec/ruby/library/socket/tcpsocket/{initialize,open}_spec.rb|| die
sed -i -e '/def test_test/askip "Depends on system setup"' test/ruby/test_file_exhaustive.rb || die
# MJIT is broken and removed in later ruby versions.
rm -f test/ruby/test_jit.rb || die
# This test calls out to the system ruby which is not being tested
# and may not be the same version.
sed -e '/test_without_tty/aomit "Calls system ruby"' \
-i test/readline/test_readline.rb || die
if use prefix ; then
# Fix hardcoded SHELL var in mkmf library
sed -i -e "s#\(SHELL = \).*#\1${EPREFIX}/bin/sh#" lib/mkmf.rb || die
fi
eapply_user
eautoreconf
}
src_configure() {
local modules="win32,win32ole" myconf=
# Ruby's build system does interesting things with MAKEOPTS and doesn't
# handle MAKEOPTS="-Oline" or similar well. Just filter it all out
# and use -j/-l parsed out from the original MAKEOPTS, then use that.
# Newer Portage sets this option by default in GNUMAKEFLAGS if nothing
# is set by the user in MAKEOPTS. See bug #900929 and bug #728424.
local makeopts_tmp="-j$(makeopts_jobs) -l$(makeopts_loadavg)"
unset MAKEOPTS MAKEFLAGS GNUMAKEFLAGS
export MAKEOPTS="${makeopts_tmp}"
# Avoid a hardcoded path to mkdir to avoid issues with mixed
# usr-merge and normal binary packages, bug #932386.
export ac_cv_path_mkdir=mkdir
# -fomit-frame-pointer makes ruby segfault, see bug #150413.
filter-flags -fomit-frame-pointer
append-flags -fno-omit-frame-pointer
# In many places aliasing rules are broken; play it safe
# as it's risky with newer compilers to leave it as it is.
append-flags -fno-strict-aliasing
# Ruby 3.1 does not compile against the gnu23 standard, bug
# #943767. Given that Ruby 3.1 is EOL in March 2025 just opt to use
# the older standard.
append-flags -std=gnu17
# Workaround for bug #938302
if use systemtap && has_version "dev-debug/systemtap[-dtrace-symlink(+)]" ; then
export DTRACE="${BROOT}"/usr/bin/stap-dtrace
fi
# Socks support via dante
if use socks5 ; then
# Socks support can't be disabled as long as SOCKS_SERVER is
# set and socks library is present, so need to unset
# SOCKS_SERVER in that case.
unset SOCKS_SERVER
fi
# Increase GC_MALLOC_LIMIT if set (default is 8000000)
if [ -n "${RUBY_GC_MALLOC_LIMIT}" ] ; then
append-flags "-DGC_MALLOC_LIMIT=${RUBY_GC_MALLOC_LIMIT}"
fi
# ipv6 hack, bug 168939. Needs --enable-ipv6.
use ipv6 || myconf="${myconf} --with-lookup-order-hack=INET"
# Determine which modules *not* to build depending in the USE flags.
if ! use berkdb ; then
modules="${modules},dbm"
fi
if ! use gdbm ; then
modules="${modules},gdbm"
fi
if ! use ssl ; then
modules="${modules},openssl"
fi
if ! use tk ; then
modules="${modules},tk"
fi
# Provide an empty LIBPATHENV because we disable rpath but we do not
# need LD_LIBRARY_PATH by default since that breaks USE=multitarget
# #564272
# except on Darwin, where we really need LIBPATHENV to set the right
# DYLD_ stuff during the invocation of miniruby for it to work
#
# --with-setjmp-type=setjmp for bug #949016
[[ ${CHOST} == *-darwin* ]] || export LIBPATHENV=""
INSTALL="${EPREFIX}/usr/bin/install -c" econf \
--program-suffix=${MY_SUFFIX} \
--with-soname=ruby${MY_SUFFIX} \
--with-readline-dir="${EPREFIX}"/usr \
--enable-shared \
--enable-pthread \
--disable-rpath \
--without-baseruby \
--with-compress-debug-sections=no \
--with-setjmp-type=setjmp \
--enable-mkmf-verbose \
--with-out-ext="${modules}" \
$(use_with jemalloc jemalloc) \
$(use_enable jit jit-support ) \
$(use_enable socks5 socks) \
$(use_enable systemtap dtrace) \
$(use_enable doc install-doc) \
--enable-ipv6 \
$(use_enable static-libs static) \
$(use_enable static-libs install-static-library) \
$(use_with static-libs static-linked-ext) \
$(use_enable debug) \
$(use_with valgrind) \
${myconf} \
--enable-option-checking=no
# Makefile is broken because it lacks -ldl
rm -rf ext/-test-/popen_deadlock || die
}
src_compile() {
local -x LD_LIBRARY_PATH="${S}${LD_LIBRARY_PATH+:}${LD_LIBRARY_PATH}"
emake V=1 EXTLDFLAGS="${LDFLAGS}" MJIT_CFLAGS="${CFLAGS}" MJIT_OPTFLAGS="" MJIT_DEBUGFLAGS=""
}
src_test() {
local -x LD_LIBRARY_PATH="${S}${LD_LIBRARY_PATH+:}${LD_LIBRARY_PATH}"
emake V=1 check
}
src_install() {
# Remove the remaining bundled gems. We do this late in the process
# since they are used during the build to e.g. create the
# documentation.
einfo "Removing default gems before installation"
rm -rf lib/bundler* lib/rdoc/rdoc.gemspec || die
# Ruby is involved in the install process, we don't want interference here.
unset RUBYOPT
local MINIRUBY=$(echo -e 'include Makefile\ngetminiruby:\n\t@echo $(MINIRUBY)'|make -f - getminiruby)
local -x LD_LIBRARY_PATH="${S}:${ED}/usr/$(get_libdir)${LD_LIBRARY_PATH+:}${LD_LIBRARY_PATH}"
local -x RUBYLIB="${S}:${ED}/usr/$(get_libdir)/ruby/${RUBYVERSION}"
for d in $(find "${S}/ext" -type d) ; do
RUBYLIB="${RUBYLIB}:$d"
done
# Create directory for the default gems
local gem_home="${EPREFIX}/usr/$(get_libdir)/ruby/gems/${RUBYVERSION}"
mkdir -p "${D}/${gem_home}" || die "mkdir gem home failed"
emake V=1 DESTDIR="${D}" GEM_DESTDIR=${gem_home} install
# Remove installed rubygems and rdoc copy
rm -rf "${ED}/usr/$(get_libdir)/ruby/${RUBYVERSION}/rubygems" || die "rm rubygems failed"
rm -rf "${ED}/usr/bin/"gem"${MY_SUFFIX}" || die "rm rdoc bins failed"
rm -rf "${ED}/usr/$(get_libdir)/ruby/${RUBYVERSION}"/rdoc* || die "rm rdoc failed"
rm -rf "${ED}/usr/bin/"{bundle,bundler,ri,rdoc}"${MY_SUFFIX}" || die "rm rdoc bins failed"
if use doc; then
emake DESTDIR="${D}" GEM_DESTDIR=${gem_home} install-doc
fi
if use examples; then
dodoc -r sample
fi
dodoc ChangeLog NEWS.md doc/NEWS* README*
}
pkg_postinst() {
if [[ ! -n $(readlink "${EROOT}"/usr/bin/ruby) ]] ; then
eselect ruby set ruby${MY_SUFFIX}
fi
elog
elog "To switch between available Ruby profiles, execute as root:"
elog "\teselect ruby set ruby(30|31|...)"
elog
}
pkg_postrm() {
eselect ruby cleanup
}

View File

@@ -1,4 +1,4 @@
# Copyright 1999-2024 Gentoo Authors
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: ruby-fakegem.eclass
@@ -23,8 +23,6 @@ case ${EAPI} in
*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
esac
# flag-o-matic is only required for ruby31 support.
inherit flag-o-matic
inherit ruby-ng
# @ECLASS_VARIABLE: RUBY_FAKEGEM_NAME
@@ -426,16 +424,6 @@ EOF
each_fakegem_configure() {
debug-print-function ${FUNCNAME} "$@"
# Ruby 3.1 has a varargs implementation that is not compatible with
# gnu23. Ruby 3.1 is EOL in March 2025 and will be removed shortly
# after that.
case ${RUBY} in
*ruby31)
append-flags -std=gnu17
filter-flags -std=gnu23
;;
esac
tc-export PKG_CONFIG
for extension in "${RUBY_FAKEGEM_EXTENSIONS[@]}" ; do
CC=$(tc-getCC) ${RUBY} --disable=did_you_mean -C ${extension%/*} ${extension##*/} --with-cflags="${CFLAGS}" --with-ldflags="${LDFLAGS}" ${RUBY_FAKEGEM_EXTENSION_OPTIONS} || die

View File

@@ -20,7 +20,7 @@ fi
LICENSE="BSD"
SLOT="0"
IUSE="X legacy-renderer +qtutils systemd"
IUSE="X +qtutils systemd"
# hyprpm (hyprland plugin manager) requires the dependencies at runtime
# so that it can clone, compile and install plugins.
@@ -91,7 +91,6 @@ pkg_setup() {
src_configure() {
local emesonargs=(
$(meson_feature legacy-renderer legacy_renderer)
$(meson_feature systemd)
$(meson_feature X xwayland)
)

View File

@@ -328,12 +328,6 @@ dev-python/unittest-or-fail
# test failures blocking the stabilization request for months.
<dev-python/mpi4py-4
# Hans de Graaff <graaff@gentoo.org> (2025-04-19)
# Ruby 3.1 is no longer supported upstream and will no longer
# receive security updates. This mask also includes any
# remaining ruby31-only packages.
dev-lang/ruby:3.1
# Conrad Kostecki <conikost@gentoo.org> (2025-04-18)
# Package not needed anymore by the only consumer net-dns/hash-slinger.
# Masked for removal on 2025-05-18. Bug #952341