summaryrefslogtreecommitdiff
path: root/dev-lang
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2024-12-30 06:30:40 +0000
committerV3n3RiX <venerix@koprulu.sector>2024-12-30 06:30:40 +0000
commit7d7cc3f0fa58454952dec67b110b41d503bca422 (patch)
tree1a8f98c27530104edbec5993a3ae262b82a25823 /dev-lang
parent0e12f8e53cdddba84b0eb27dca59153e2cf52309 (diff)
gentoo auto-resync : 30:12:2024 - 06:30:40
Diffstat (limited to 'dev-lang')
-rw-r--r--dev-lang/Manifest.gzbin22143 -> 22142 bytes
-rw-r--r--dev-lang/ruby/Manifest4
-rw-r--r--dev-lang/ruby/files/3.4/010-default-gem-location.patch11
-rw-r--r--dev-lang/ruby/files/3.4/902-hppa-pthread-stack-size.patch54
-rw-r--r--dev-lang/ruby/ruby-3.4.1.ebuild312
5 files changed, 381 insertions, 0 deletions
diff --git a/dev-lang/Manifest.gz b/dev-lang/Manifest.gz
index 49edecaaf6b5..76fc24b1cd33 100644
--- a/dev-lang/Manifest.gz
+++ b/dev-lang/Manifest.gz
Binary files differ
diff --git a/dev-lang/ruby/Manifest b/dev-lang/ruby/Manifest
index c4fb84d07f3c..fc230e7b4c89 100644
--- a/dev-lang/ruby/Manifest
+++ b/dev-lang/ruby/Manifest
@@ -18,6 +18,8 @@ AUX 3.3/012-mkdir-path.patch 334 BLAKE2B 13410c0946849ac2bd983c86854846cd5011209
AUX 3.3/013-test-rlimit-constants.patch 5271 BLAKE2B 600482bc229bae2cc5cda7e9ceb74554d3c2bf4abf69ef79df12e0bead26a929a5806effbd111f44e9ec05bd25166e8d7e9fa879ab090add9ce0e4e40980f4fa SHA512 98173a270849ea1648f8fb1cff42c62f38d39851de0872cf225264ea6917d829ccf957743fe51c125a545dbc3372ed8bb1472139f0f230fb1ad5cde2c3562318
AUX 3.3/901-musl-stacksize.patch 749 BLAKE2B 422d53ef7fc1e76bd7466ff67da7cefd3665282ce0e29d16e2455e8f2bcbe081c0b9d31119eed6d6b53f6200fa72d623e9c04e0ebd6594397cf1dad344e8049a SHA512 f9ad0a50a0672a88b89cba9c452c090e0fe47fe41c640951b1b14970e1219a27c9ef3a1b53650b135d607830ae7a09b6a8916e45263415b58122c07262e90b1b
AUX 3.3/902-hppa-pthread-stack-size.patch 1690 BLAKE2B 84c8478a69e108c68f96eeb0f36b1f94e069193ce124c0ca5c6143c0c9a2f0c62c7927a1a61a85270f449d03b4c6f5bd735e02ce1da1df0749602e655f177778 SHA512 d871b1c0a5d58bb197def0e00310e38fc145520dbbd1245079b2ebab0f89878f21a22f27c388fe2a7557244db28f0acb97edddf9bdf4adbeb00327e01c5215a6
+AUX 3.4/010-default-gem-location.patch 356 BLAKE2B f44459799fff80c7f14e5e7d674ee9ed22863cdb84838e0fad55a66f615fa91e3e4de30377c04a385927feea67c6046c837eb7a647fbe162685309ea3f9ea420 SHA512 894075663d409a117ad94abd63d6562c90b87a725ef56d02ad7c187532b99a56128be2f5f64d0e72763d1c14213707de84c920415107df875218489796bc4a5a
+AUX 3.4/902-hppa-pthread-stack-size.patch 1690 BLAKE2B 84c8478a69e108c68f96eeb0f36b1f94e069193ce124c0ca5c6143c0c9a2f0c62c7927a1a61a85270f449d03b4c6f5bd735e02ce1da1df0749602e655f177778 SHA512 d871b1c0a5d58bb197def0e00310e38fc145520dbbd1245079b2ebab0f89878f21a22f27c388fe2a7557244db28f0acb97edddf9bdf4adbeb00327e01c5215a6
DIST ruby-3.1.4.tar.xz 15316604 BLAKE2B 5d771c267451c05ae192991976957d43d1131e652ac5a90a8dfff9deba97cf6b139d0113f5d2ed44225a545aa79a1c732555de1efc83d1010d097ec35f7e92dd SHA512 a627bb629a10750b8b2081ad451a41faea0fc85d95aa1e267e3d2a0f56a35bb58195d4a8d13bbdbd82f4197a96dae22b1cee1dfc83861ec33a67ece07aef5633
DIST ruby-3.1.5.tar.xz 15293020 BLAKE2B 5d886f45f2a27dbe7682f5afc234d4992ffc5006cfaa98f23c29e1fff0323c277ffec827c71ee75885b4f2cf0bf7baed4ea239ae32283578213821e597bf51da SHA512 a9883f4d074825bb1f54ef3429a9a71341274bd2de1aa8ea32bce19b6b9c1bac5e5dc4c34a92b8e7caa73ba71d7ed7c546a6fec6f1fd3d8986974dce214f6d49
DIST ruby-3.1.6.tar.xz 15273916 BLAKE2B feb697b8d01ebde0042e679b814c4c95481c6afa607db46ad1511fb0d1a555d7800725e847e90dd9944ef42575c5205cf711025a165a65b6070743701631929c SHA512 a3159648706d6d11ce9613201141e884b3accc69bf928c756de8a8f2b71d219886e91435d30cf2c30e85af31f87801138e10106344766100f1b80662c7244652
@@ -27,6 +29,7 @@ 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
EBUILD ruby-3.1.4-r3.ebuild 8517 BLAKE2B d5d65a391f344b5bafbab680e9104ed214249c9a1af59bf42f0cd7326b5ea3a88510be23c22befc945715ea45fe2cc9be8beeaab9c59cb1e344b1bd54681172e SHA512 47cf354f9621f9ba2c68f7fe36c04979591fcc80124cf89d3d48b96bf1cc1ec242417f098676971e1060d37f1a20d9f4ae08133f925d45c81d60124fd118635d
EBUILD ruby-3.1.5.ebuild 8842 BLAKE2B 31e5da6ecdb45602037d5a1bce209844060271528b39139a3f8c9421c3ffea747fb6602702ee989a12ff08f999586841b24d6e7f05e0fdd2b6ecb5860c866b2b SHA512 3b5deeb36ea66a58907a89c637f8f3a0354ea861a4bab159f211cedef3a48cf3b6f5609d441c9516ea81ab4f032111370ff3da37395f30ca28428aeb0286fffc
EBUILD ruby-3.1.6-r1.ebuild 8913 BLAKE2B 8286499d12dbc8d3936d75235b93d153b16e8a03b92a32277ce430417e1d95fadb2d92e969e6ec3c0b183fd1eb68feecf917897f6af8d784ff426674b3ef0ff9 SHA512 702dee12eab7ac6f6cb990903fbe3a517e1fedecef74b8ec57893c567eeae454d516ee787360291305c00bea1853ec96824420eb005afeb086f489a4d3f8feaa
@@ -38,4 +41,5 @@ EBUILD ruby-3.2.6-r2.ebuild 9359 BLAKE2B 6b5a6f999bee0c942be5fcaaa374c18b1439f52
EBUILD ruby-3.3.4-r2.ebuild 9342 BLAKE2B 1fb9189635dda8aeec17105c784b4fa5b4158853c2d4a51a02f640067b9d6b5ed9e268a99df931f197bb877c6c38b5eea7975775235d3b19909a74ab36339844 SHA512 019a14c2ba878385d12ef1fcfa00c4dcb09c504c5d36817822989b883eb76eca17558cd78548c3777b740346c0db570c1b8c1cc77c593d557685ff1f60fbf19a
EBUILD ruby-3.3.5-r1.ebuild 9342 BLAKE2B 1fb9189635dda8aeec17105c784b4fa5b4158853c2d4a51a02f640067b9d6b5ed9e268a99df931f197bb877c6c38b5eea7975775235d3b19909a74ab36339844 SHA512 019a14c2ba878385d12ef1fcfa00c4dcb09c504c5d36817822989b883eb76eca17558cd78548c3777b740346c0db570c1b8c1cc77c593d557685ff1f60fbf19a
EBUILD ruby-3.3.6-r1.ebuild 9538 BLAKE2B 3033453c764967229bc140d0851881a471c6fb02a8366657787b4b9cb139777443ca9fd50392ffca90b3ff1b91f51ba526bd1a58d4fcd2b471c297fe201ea252 SHA512 d979cd2df7949b4fe22bb5ca28c9a39e6256df024dab2c906d9abb1dec7e843b2c0150d875b27ac07936239a9583cb0b8429105a3436be8f4858a6fecd6789cd
+EBUILD ruby-3.4.1.ebuild 10235 BLAKE2B 29946e6df5b2a6b7f981399d0c49e81fc212cd19a67c2ea59b355c4a52a016ab3e2a244592ad5766e8846407f925e62a23124aedef53e5c01ec66116a760736d SHA512 191b74008848bb2b46e008448d093b92ce1a0b98d2bab8b4eba7856b7f5f226806f2c20a022b6dea9b7bd76928fb1f39ff7171141605aa276e69b2bfc2d7bbde
MISC metadata.xml 504 BLAKE2B 49be2bb1dba034b23a8294cca0e5419099b487973a43db31c0edc4b9a2a08eb1b54437b0c7e6a9e6d8a5c0145cd73464f830ec04ca62540416c32b2d094cdd63 SHA512 e9991c588874e36f6a0abb12125bcd3f2b1e787df62d9f7089053959286b56676a9f35c7e82116274f169bfa22359be8df59fca6454be559e7669d2e78dc4c22
diff --git a/dev-lang/ruby/files/3.4/010-default-gem-location.patch b/dev-lang/ruby/files/3.4/010-default-gem-location.patch
new file mode 100644
index 000000000000..36009ad66f61
--- /dev/null
+++ b/dev-lang/ruby/files/3.4/010-default-gem-location.patch
@@ -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
diff --git a/dev-lang/ruby/files/3.4/902-hppa-pthread-stack-size.patch b/dev-lang/ruby/files/3.4/902-hppa-pthread-stack-size.patch
new file mode 100644
index 000000000000..96e24a340ad9
--- /dev/null
+++ b/dev-lang/ruby/files/3.4/902-hppa-pthread-stack-size.patch
@@ -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
+
diff --git a/dev-lang/ruby/ruby-3.4.1.ebuild b/dev-lang/ruby/ruby-3.4.1.ebuild
new file mode 100644
index 000000000000..1bfb9e5090b5
--- /dev/null
+++ b/dev-lang/ruby/ruby-3.4.1.ebuild
@@ -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
+}