dev-lang/ruby: add 3.4.1

Signed-off-by: Hans de Graaff <graaff@gentoo.org>
This commit is contained in:
Hans de Graaff 2024-12-26 07:39:04 +01:00
parent 6a79cb636b
commit 5e4cd90aa7
No known key found for this signature in database
GPG Key ID: DB347F938654FA34
4 changed files with 378 additions and 0 deletions

View File

@ -7,3 +7,4 @@ DIST ruby-3.2.6.tar.xz 15126888 BLAKE2B d59352e5543b96abe3de5f10b578c2b910a0f18f
DIST ruby-3.3.4.tar.xz 16366580 BLAKE2B e10b81ad7838e3d443ce0b12b8372faebb001f00a32dc0fa1f5e37c46baae99ea714e7f2a8741f0294255312030e844f32fc5d1c3695545cf8303e85b3255f21 SHA512 b26461a13ff82a08a282f10108028bb2a2e4a28da6182a291062fc54089c6655d79c22cc69d59156f9b11cb10a17fe8c69d489343fbae123a45f03361b95c9eb
DIST ruby-3.3.5.tar.xz 16403660 BLAKE2B 4fa242ceeaf0dbf0d048b3f116f149f299c1a0ccca500a47929344da523cd3c49365381777e56546fe94003ee90ccc1f2cc957697eb82cd8beb7311b0b00287c SHA512 dd5c6a7f74854e143e0ca46b9d7c0d1983fc4886f5f733cd108345dbf4b21f61ad978ad6806e05a57b7af28fd9216dd38d7145808188bbb3695a7f3a4eda3883
DIST ruby-3.3.6.tar.xz 16398228 BLAKE2B 7e2fb58ca1f5ee7ab9c2fd7b24fdbf9eef9805329cdf23c9926bac0268344f101475c2c7aacb26f73c4c5f73704727e19a9cc074c4587b9c53a115d6fb0a5e85 SHA512 c4b86188bf539fa737932e1ba5b746bc295e7c43b2f8cca2668eb7c88aa7228e2ce9032bbcd244a7d558a11bc842445b5fbeac3503ca7d223b63c53e08dba4ab
DIST ruby-3.4.1.tar.xz 17222800 BLAKE2B 949cb57aeb6af4ca70d6638a2cd38ec9d067a3798ec27e02ee5934c902b74684b9f96d9fc00c1b22932de20b38b5bd3403a9a1a1bfe0c1caa380327d376d4c45 SHA512 8d2e34117696f9debf463ae1eed288fdbb5c1a12e32800e901b69218e3b7302a0066052077e2ebca851e3a635296199bd5a10437eea1d6f787f69a77bb865680

View File

@ -0,0 +1,11 @@
--- a/tool/rbinstall.rb 2022-11-13 08:12:27.373041649 +0100
+++ b/tool/rbinstall.rb 2022-11-13 08:16:09.110406705 +0100
@@ -994,7 +994,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

@ -0,0 +1,54 @@
https://bugs.gentoo.org/701494
From 40ccf3b91071d3603335b0b7095613ef1843f9e1 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
@@ -858,8 +858,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

@ -0,0 +1,312 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
RUST_OPTIONAL="yes"
inherit autotools flag-o-matic multiprocessing rust
MY_P="${PN}-$(ver_cut 1-3)"
DESCRIPTION="An object-oriented scripting language"
HOMEPAGE="https://www.ruby-lang.org/"
SRC_URI="https://cache.ruby-lang.org/pub/ruby/$(ver_cut 1-2)/${MY_P}.tar.xz"
S=${WORKDIR}/${MY_P}
LICENSE="|| ( Ruby-BSD BSD-2 )"
SLOT=$(ver_cut 1-2)
MY_SUFFIX=$(ver_rs 1 '' ${SLOT})
RUBYVERSION=${SLOT}.0
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 jemalloc jit socks5 +ssl static-libs systemtap tk valgrind xemacs"
RDEPEND="
berkdb? ( sys-libs/db:= )
gdbm? ( sys-libs/gdbm:= )
jemalloc? ( dev-libs/jemalloc:= )
jit? ( ${RUST_DEPEND} )
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/zlib
virtual/libcrypt:=
>=app-eselect/eselect-ruby-20241225
"
DEPEND="
${RDEPEND}
valgrind? ( dev-debug/valgrind )
"
BUNDLED_GEMS="
>=dev-ruby/minitest-5.25.4[ruby_targets_ruby34(-)]
>=dev-ruby/power_assert-2.0.5[ruby_targets_ruby34(-)]
>=dev-ruby/rake-13.2.1[ruby_targets_ruby34(-)]
>=dev-ruby/test-unit-3.6.7[ruby_targets_ruby34(-)]
>=dev-ruby/rexml-3.4.0[ruby_targets_ruby34(-)]
>=dev-ruby/rss-0.3.1[ruby_targets_ruby34(-)]
>=dev-ruby/net-ftp-0.3.8[ruby_targets_ruby34(-)]
>=dev-ruby/net-imap-0.5.4[ruby_targets_ruby34(-)]
>=dev-ruby/net-pop-0.1.2[ruby_targets_ruby34(-)]
>=dev-ruby/net-smtp-0.5.0[ruby_targets_ruby34(-)]
>=dev-ruby/matrix-0.4.2[ruby_targets_ruby34(-)]
>=dev-ruby/prime-0.1.3[ruby_targets_ruby34(-)]
>=dev-ruby/rbs-3.8.0[ruby_targets_ruby34(-)]
>=dev-ruby/typeprof-0.30.1[ruby_targets_ruby34(-)]
>=dev-ruby/debug-1.10.0[ruby_targets_ruby34(-)]
>=dev-ruby/racc-1.8.1[ruby_targets_ruby34(-)]
>=dev-ruby/mutex_m-0.3.0[ruby_targets_ruby34(-)]
>=dev-ruby/getoptlong-0.2.1[ruby_targets_ruby34(-)]
>=dev-ruby/base64-0.2.0[ruby_targets_ruby34(-)]
>=dev-ruby/bigdecimal-3.1.8[ruby_targets_ruby34(-)]
>=dev-ruby/observer-0.1.2[ruby_targets_ruby34(-)]
>=dev-ruby/abbrev-0.1.2[ruby_targets_ruby34(-)]
>=dev-ruby/resolv-replace-0.1.1[ruby_targets_ruby34(-)]
>=dev-ruby/rinda-0.2.0[ruby_targets_ruby34(-)]
>=dev-ruby/drb-2.2.1[ruby_targets_ruby34(-)]
>=dev-ruby/nkf-0.2.0[ruby_targets_ruby34(-)]
>=dev-ruby/syslog-0.2.0[ruby_targets_ruby34(-)]
>=dev-ruby/csv-3.3.2[ruby_targets_ruby34(-)]
>=dev-ruby/repl_type_completor-0.1.9[ruby_targets_ruby34(-)]
"
PDEPEND="
${BUNDLED_GEMS}
virtual/rubygems[ruby_targets_ruby34(-)]
>=dev-ruby/bundler-2.5.11[ruby_targets_ruby34(-)]
>=dev-ruby/did_you_mean-1.6.3[ruby_targets_ruby34(-)]
>=dev-ruby/irb-1.11.0[ruby_targets_ruby34(-)]
>=dev-ruby/json-2.7.2[ruby_targets_ruby34(-)]
>=dev-ruby/rdoc-6.6.2[ruby_targets_ruby34(-)]
xemacs? ( app-xemacs/ruby-modes )
"
pkg_setup() {
use jit && rust_pkg_setup
}
src_prepare() {
eapply "${FILESDIR}"/"${SLOT}"/010*.patch
eapply "${FILESDIR}"/"${SLOT}"/902*.patch
if use elibc_musl ; then
eapply "${FILESDIR}"/${SLOT}/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
# Avoid the irb default gemspec since we will install the normal gem
# instead. This avoids a file collision with dev-ruby/irb.
rm lib/irb/irb.gemspec || 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 \
spec/ruby/library/socket/tcpsocket/{initialize,open}_spec.rb \
spec/ruby/library/socket/socket/connect_spec.rb || die
# Remove webrick tests because setting LD_LIBRARY_PATH does not work for them.
rm -rf tool/test/webrick || die
# Avoid tests using the system ruby
sed -i -e '/test_\(dumb_terminal\|tty_amibuous_width\)/aomit "Uses system ruby"' test/reline/test_reline.rb || die
# Avoid testing against hard-coded blockdev devices that most likely are not available
sed -i -e '/def blockdev/a@blockdev = nil' test/ruby/test_file_exhaustive.rb || die
# Avoid tests that require gem downloads
sed -e '/^check/ s/\(test-syntax-suggest\|\$(PREPARE_SYNTAX_SUGGEST)\)//g' \
-i common.mk || die
# Avoid test that fails intermittently
sed -e '/test_gem_exec_gem_uninstall/aomit "Fails intermittently"' \
-i test/rubygems/test_gem_commands_exec_command.rb || die
# Avoid test fragile for git command output not matching on whitespace
sed -e '/test_pretty_print/aomit "Fragile for output differences"' \
-i test/rubygems/test_gem_source_git.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
# 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
# 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
# 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
# Fix co-routine selection for x32, bug 933070
[[ ${CHOST} == *gnux32 ]] && myconf="${myconf} --with-coroutine=amd64"
# 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
[[ ${CHOST} == *-darwin* ]] || export LIBPATHENV=""
INSTALL="${EPREFIX}/usr/bin/install -c" econf \
--program-suffix=${MY_SUFFIX} \
--with-soname=ruby${MY_SUFFIX} \
--enable-shared \
--enable-pthread \
--disable-rpath \
--without-baseruby \
--with-compress-debug-sections=no \
--enable-mkmf-verbose \
--with-out-ext="${modules}" \
$(use_with jemalloc jemalloc) \
$(use_enable jit jit-support) \
$(use_enable jit yjit) \
$(use_enable socks5 socks) \
$(use_enable systemtap dtrace) \
$(use_enable doc install-doc) \
$(use_enable static-libs static) \
$(use_enable static-libs install-static-library) \
$(use_with static-libs static-linked-ext) \
$(use_enable debug) \
${myconf} \
$(use_with valgrind) \
--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 README*
dodoc -r doc
}
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
}