diff options
author | mirror@stealer.net <mirror@stealer.net> | 2025-07-25 07:00:42 +0000 |
---|---|---|
committer | mirror@stealer.net <mirror@stealer.net> | 2025-07-25 07:00:42 +0000 |
commit | 60f1808f3195b437362ef0a30428ec923abc423d (patch) | |
tree | 963c91cee380607098729a600d760d99f691efec /dev-lang | |
parent | 64dc40a80f7487e9a375a5115baa4d3f9dbd6a7e (diff) |
2025-07-25 06:40:52+00:00
Diffstat (limited to 'dev-lang')
-rw-r--r-- | dev-lang/Manifest.gz | bin | 22474 -> 22475 bytes | |||
-rw-r--r-- | dev-lang/ruby/Manifest | 4 | ||||
-rw-r--r-- | dev-lang/ruby/ruby-3.2.9.ebuild | 305 | ||||
-rw-r--r-- | dev-lang/ruby/ruby-3.3.9.ebuild | 304 |
4 files changed, 613 insertions, 0 deletions
diff --git a/dev-lang/Manifest.gz b/dev-lang/Manifest.gz Binary files differindex f88563aaa19c8..8016c81641815 100644 --- a/dev-lang/Manifest.gz +++ b/dev-lang/Manifest.gz diff --git a/dev-lang/ruby/Manifest b/dev-lang/ruby/Manifest index 675502e13c29a..8a61bc24090c1 100644 --- a/dev-lang/ruby/Manifest +++ b/dev-lang/ruby/Manifest @@ -17,8 +17,10 @@ AUX 3.4/902-hppa-pthread-stack-size.patch 1690 BLAKE2B 84c8478a69e108c68f96eeb0f 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 +DIST ruby-3.2.9.tar.xz 15141728 BLAKE2B 3cc7350c756ef84da7626142c492e0c7a28aafa4355246e07c13764d7a7889b5ab88c9a67eeabaf433eb6a620ca869cc20214478d2169bbedfb68a04b4a66a7b SHA512 4db0656694c25c971bcf3591516e6feddb7fc60c4474b63dd1d2c1481c3629421edc904666067b2dcbc47357db1a32b7bf412055306fe29cee30fa048f89b6e3 DIST ruby-3.3.7.tar.xz 16379504 BLAKE2B 33bd05d8462ec7e33872a31bcbfabcfc65a0245dc6519248e474085f3255dc3ad67210400ac314b291f16d3eb261459cadba180dfccc510a2b2c978035435347 SHA512 4082a7684c1b0d53a0ce493f79568e851d37a864f59c58b2e0c273b2659e0ca75318ddff939fdf5e9d0a3eeba1b6d8f03bf88afb49a5ffd77714f1c8a7dfdd55 DIST ruby-3.3.8.tar.xz 16435924 BLAKE2B a10c5cfbab9879abcc9c9ae6752718005a2ba1f21a5c67080d9529579d25194e3ee39a13dd20aac756689939a110daa2281b64a41cf86441b7400ac4d5955bd5 SHA512 71c2f3ac9955e088fa885fd2ff695e67362a770a5d33e5160081eda3dd298ca2c692e299b03d757caecfbc94043fedc4ad093de84c505585d480cb36bbf978b9 +DIST ruby-3.3.9.tar.xz 16436904 BLAKE2B 1f809d982f0ac60025ac98d2ded28697f1e68eb61a40a6e95a561ee0a5ae87b150b2341aae1ae5d52a4ac1cb370a60fdb5306c3d241d80329b3af3245d71a8e5 SHA512 52be800daf9e983dd7539f6961ee6d4e863c8f4eefdce4fb1091fdfe05339531832dd88d2a8b6f5cdcd790f9d5aefa3bc08574fcb2bab399200d20fa0ad1db18 DIST ruby-3.4.2.tar.xz 17218200 BLAKE2B b0054a6f2db9cd6d5c92550b25ddaf131d0f83e33765bcf38e9ffbfcfac090828563f622e7e786467f55e2ac5a9d9779e07ad7942b0e33c9a394d67e4420f0ea SHA512 cb8b5023bce316393716548c5f0a44c7d0240724ff79b995517641266af30bedc6f402c1c8fa27368ea607e2aa6d36bbb201e00c6e9dd2a80d837431d32343b5 DIST ruby-3.4.3.tar.xz 17230984 BLAKE2B 7c54768a768d4c293b8406e8a49ee5328eaea7744540b27b976284cc6c3e145c4f56f4691ea5db054265c333e4bf9cc38fa5f70789938e1bf5ecda3da41bf4d4 SHA512 b30aad675cdcc1bdfe9e5fffe9d1925db3b3ac854a5e34180c368bc6e66f73e29ba5d802fea249353b7d799c01384c58bdd763fd1b679303158baa7824b9c08e DIST ruby-3.4.4.tar.xz 17255388 BLAKE2B 0c9b61784beb6c6f8b082cad4299f52de994ecb49e6bf5e9ac263c1d4fc2618119ddb1276d7060772856d297d9c2765590b54972fa2234738b3dd5c4020332f8 SHA512 0d258cf790daad424c866404b5cbdc8adba0e4e13764847a89adf2335229e5184095c9f3e9594705897697e48bcc322d9a9f919b04047abb2075daca9fce8871 @@ -26,8 +28,10 @@ DIST ruby-3.4.5.tar.xz 17265032 BLAKE2B 79042684a91f1595925f81d53d00db7b8864af56 EBUILD ruby-3.2.6-r4.ebuild 9678 BLAKE2B 945c45d02d6857ba088e51398f3e0c79d95fdc4c2de58708050a4aab06a6ef5e1b849f7c36aafe1d2942522fdd1804284513dd199a1245324503e63a79990a78 SHA512 1edd51fc230e00648f47523ea438211749d010f5950a6f453a1b3bbe2bf3992232640e2969e14a37b13864cefc9c07bc10ab83f67e0c40dc279373f49224eb12 EBUILD ruby-3.2.7.ebuild 9696 BLAKE2B d83f980807421198dd4cfa155b11beb61f16db3497e65ba3b789f2a1c5ee4a1b79fafe54d2bbd13e94fcefe4930ab89e9d3f0efed599b75a67ccea872a60bc29 SHA512 f4b273fefb9c39fbda8cc7ff5f35e44265b088b4764ef29cf51c4d029071a57cd2590a5b09ade92eb6229739cf8a76d3bfed96fdcef2c3c4643af9e68ba6d51c EBUILD ruby-3.2.8.ebuild 9935 BLAKE2B 99fb16af32c84cdcd033f76db10fae0fa161187dbae7fcc1b874e059f75a42a48340c6d964e8e01d702db3b6d73768111d519d1ca113bcfd727b9d904c1ca65e SHA512 70be1f84036c200151f18452a8de9106e26f2008d6a5fe1ee293c0e5392c36573fa07a7847ece251b18d0981ae2543d4c50eab87e9ac17c39aac11093afaae89 +EBUILD ruby-3.2.9.ebuild 9798 BLAKE2B 29cd5eeac82416b43a18410d75b4329646f5de6ef32154463ffd00a22d1ff3db44bbbf764b53cd30bd1c33e501a4b6fdb15074dcc97aaaff0d4da3a9746330b9 SHA512 f4ec252d40182ab10f89e8b0185ec6d121c2db844f2e2244fd5ae8e9aa46eaba054a0acacfee49371804e05f95cc5229d8427a960a3374ed42e7310751c74092 EBUILD ruby-3.3.7-r1.ebuild 9872 BLAKE2B 50d5495e44ce97027cdcac876b27a316bb2e4c43ac43775bffc334d218580a6800c2a671d65ccecc2a9aa1f55a8e5eab519c26f26dde43b4bbe91c2109760b4c SHA512 1955ba383da611a50d645bce8758a924f8f8b23925454cfb25e7e98006e3cb6f5ee9e77cad249053732b3b52a0edab01c254d62fab6ffde756d39ff68759068b EBUILD ruby-3.3.8.ebuild 9880 BLAKE2B f94c9d198bdba9da2ccc27ef754111c06448c94fd1023543c54da760fa90585b085d7e81f46d054c5e39d125afa42f3da1813516446cd9470a3a250d25463640 SHA512 babeb40bb510826fc9d5be961a2dd9985aac1af5913b6ff6c900bf6397d769d51f950991082ab1ecd9c44db664ab5e8fa1d615156dbd4171004d1a044a6065ae +EBUILD ruby-3.3.9.ebuild 9748 BLAKE2B ee02e7555d5ad2eacae355ed9d3aad61be1a8718d96b3d57792757938f9310c9b8e71c473f803bd7bafe1201b15ad5d08747066e4f99384d839f520aa00ad622 SHA512 f2f999f8044ba95ed66060a589b01a32d1ed3edaad25fbbf12c58a7fa5457af1250f352cc2cb21e3230411ffb69d434dcf27c4b3be5d56ae7d2e94a37fda3907 EBUILD ruby-3.4.2.ebuild 10537 BLAKE2B 72cd1dad7848d990ac0980c16337b46659be37fe5c362c0407dc8a355e4730e296a705b9776d8882bfc7b98f02a948df8a97703d37c403d702d787206dc55d4c SHA512 16934cadf46e9380a72ace37d68e73aae25cc8aea1394b6204e1c84b0f619330759d200f7e49b8bec0b4da46cd5b25ea10256b525b3d513c8f34ea258cb5fad3 EBUILD ruby-3.4.3.ebuild 10522 BLAKE2B d7131570cc8cd5f3e77bf14ecebf9e184f75271c5e7d7b6cbe73f245d0ee3309b837abb18918f1c858b9ce875df83fdef0c10cfd0c605a1dedca444d1390205b SHA512 9b958135fa1d558be3c9ddeb520cdda5f99df1f367376831f8138224679b8815ca19dfffe3e07e5b5f0e52ce5f7e40f768c773dfb434b7d5bce1d0a6de690471 EBUILD ruby-3.4.4.ebuild 10537 BLAKE2B 72cd1dad7848d990ac0980c16337b46659be37fe5c362c0407dc8a355e4730e296a705b9776d8882bfc7b98f02a948df8a97703d37c403d702d787206dc55d4c SHA512 16934cadf46e9380a72ace37d68e73aae25cc8aea1394b6204e1c84b0f619330759d200f7e49b8bec0b4da46cd5b25ea10256b525b3d513c8f34ea258cb5fad3 diff --git a/dev-lang/ruby/ruby-3.2.9.ebuild b/dev-lang/ruby/ruby-3.2.9.ebuild new file mode 100644 index 0000000000000..282a7c4401772 --- /dev/null +++ b/dev-lang/ruby/ruby-3.2.9.ebuild @@ -0,0 +1,305 @@ +# Copyright 1999-2025 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/readline:0= + sys-libs/zlib + virtual/libcrypt:= + >=app-eselect/eselect-ruby-20231008 +" + +DEPEND=" + ${RDEPEND} + valgrind? ( dev-debug/valgrind ) +" + +BUNDLED_GEMS=" + >=dev-ruby/debug-1.7.1[ruby_targets_ruby32(-)] + >=dev-ruby/irb-1.6.2[ruby_targets_ruby32(-)] + >=dev-ruby/matrix-0.4.2[ruby_targets_ruby32(-)] + >=dev-ruby/minitest-5.16.3[ruby_targets_ruby32(-)] + >=dev-ruby/net-ftp-0.2.1[ruby_targets_ruby32(-)] + >=dev-ruby/net-imap-0.3.4.1[ruby_targets_ruby32(-)] + >=dev-ruby/net-pop-0.1.2[ruby_targets_ruby32(-)] + >=dev-ruby/net-smtp-0.3.4[ruby_targets_ruby32(-)] + >=dev-ruby/power_assert-2.0.3[ruby_targets_ruby32(-)] + >=dev-ruby/prime-0.1.2[ruby_targets_ruby32(-)] + >=dev-ruby/rake-13.0.6-r2[ruby_targets_ruby32(-)] + >=dev-ruby/rbs-2.8.2[ruby_targets_ruby32(-)] + >=dev-ruby/rexml-3.3.9[ruby_targets_ruby32(-)] + >=dev-ruby/rss-0.3.1[ruby_targets_ruby32(-)] + >=dev-ruby/test-unit-3.5.7[ruby_targets_ruby32(-)] + >=dev-ruby/typeprof-0.21.3[ruby_targets_ruby32(-)] +" + +PDEPEND=" + ${BUNDLED_GEMS} + virtual/rubygems[ruby_targets_ruby32(-)] + >=dev-ruby/bundler-2.3.3[ruby_targets_ruby32(-)] + >=dev-ruby/did_you_mean-1.6.1[ruby_targets_ruby32(-)] + >=dev-ruby/json-2.6.1[ruby_targets_ruby32(-)] + >=dev-ruby/rdoc-6.3.3[ruby_targets_ruby32(-)] + xemacs? ( app-xemacs/ruby-modes ) +" + +pkg_setup() { + use jit && rust_pkg_setup +} + +src_prepare() { + eapply "${FILESDIR}"/"${SLOT}"/010*.patch + eapply "${FILESDIR}"/"${SLOT}"/011*.patch + eapply "${FILESDIR}"/"${SLOT}"/013*.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 + # 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 + + # 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/rubygems/test_bundled_ca.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|| die + + # Remove webrick tests because setting LD_LIBRARY_PATH does not work for them. + rm -rf tool/test/webrick || die + + # Avoid test using the system ruby + sed -i -e '/test_dumb_terminal/aomit "Uses system ruby"' test/reline/test_reline.rb || die + + # Avoid testing against hard-coded blockdev devices and user names + # that most likely are not available + sed -e '/def blockdev/a@blockdev = nil' \ + -e '/test_expand_path_for_existent_username/aomit "Checks USER"' \ + -i test/ruby/test_file_exhaustive.rb || die + + # Avoid tests that require gem downloads + sed -i -e '/^test-syntax-suggest/ s/\$(TEST_RUNNABLE)/no/' common.mk || die + sed -i -e '/^check:/ s/\$(TEST_RUNNABLE)-\$(PREPARE_SYNTAX_SUGGEST) test-syntax-suggest//' 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 that can easily timeout + sed -e '/test_getch_timeout/aomit "Times out easily"' \ + -i test/io/console/test_io_console.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 + + # 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 + + # 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 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 USER=$(whoami) + 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 +} diff --git a/dev-lang/ruby/ruby-3.3.9.ebuild b/dev-lang/ruby/ruby-3.3.9.ebuild new file mode 100644 index 0000000000000..c58af4a90e34a --- /dev/null +++ b/dev-lang/ruby/ruby-3.3.9.ebuild @@ -0,0 +1,304 @@ +# Copyright 1999-2025 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-20231226 +" + +DEPEND=" + ${RDEPEND} + valgrind? ( dev-debug/valgrind ) +" + +BUNDLED_GEMS=" + >=dev-ruby/debug-1.9.2[ruby_targets_ruby33(-)] + >=dev-ruby/irb-1.11.0[ruby_targets_ruby33(-)] + >=dev-ruby/matrix-0.4.2[ruby_targets_ruby33(-)] + >=dev-ruby/minitest-5.20.0[ruby_targets_ruby33(-)] + >=dev-ruby/net-ftp-0.3.4[ruby_targets_ruby33(-)] + >=dev-ruby/net-imap-0.4.19[ruby_targets_ruby33(-)] + >=dev-ruby/net-pop-0.1.2[ruby_targets_ruby33(-)] + >=dev-ruby/net-smtp-0.4.0.1[ruby_targets_ruby33(-)] + >=dev-ruby/power_assert-2.0.3[ruby_targets_ruby33(-)] + >=dev-ruby/prime-0.1.2[ruby_targets_ruby33(-)] + >=dev-ruby/racc-1.7.3[ruby_targets_ruby33(-)] + >=dev-ruby/rake-13.1.0[ruby_targets_ruby33(-)] + >=dev-ruby/rbs-3.4.0[ruby_targets_ruby33(-)] + >=dev-ruby/rexml-3.3.9[ruby_targets_ruby33(-)] + >=dev-ruby/rss-0.3.1[ruby_targets_ruby33(-)] + >=dev-ruby/test-unit-3.6.1[ruby_targets_ruby33(-)] + >=dev-ruby/typeprof-0.21.9[ruby_targets_ruby33(-)] +" + +PDEPEND=" + ${BUNDLED_GEMS} + virtual/rubygems[ruby_targets_ruby33(-)] + >=dev-ruby/bundler-2.5.11[ruby_targets_ruby33(-)] + >=dev-ruby/did_you_mean-1.6.3[ruby_targets_ruby33(-)] + >=dev-ruby/json-2.7.2[ruby_targets_ruby33(-)] + >=dev-ruby/rdoc-6.6.2[ruby_targets_ruby33(-)] + xemacs? ( app-xemacs/ruby-modes ) +" + +pkg_setup() { + use jit && rust_pkg_setup +} + +src_prepare() { + eapply "${FILESDIR}"/"${SLOT}"/010*.patch + eapply "${FILESDIR}"/"${SLOT}"/013*.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/rubygems/test_bundled_ca.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|| die + + # Remove webrick tests because setting LD_LIBRARY_PATH does not work for them. + rm -rf tool/test/webrick || die + + # Avoid test using the system ruby + sed -i -e '/test_dumb_terminal/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 '/^\(test-syntax-suggest\|PREPARE_SYNTAX_SUGGEST\)/ s/\$(TEST_RUNNABLE)/no/' \ + -i common.mk + + # 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,specific_file}.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 + + # 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 + # + # --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} \ + --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 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 USER=$(whoami) + 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 +} |