summaryrefslogtreecommitdiff
path: root/dev-lang
diff options
context:
space:
mode:
Diffstat (limited to 'dev-lang')
-rw-r--r--dev-lang/Manifest.gzbin21973 -> 21974 bytes
-rw-r--r--dev-lang/ruby/Manifest4
-rw-r--r--dev-lang/ruby/ruby-3.1.6-r1.ebuild288
-rw-r--r--dev-lang/ruby/ruby-3.2.4-r1.ebuild300
-rw-r--r--dev-lang/ruby/ruby-3.3.4.ebuild7
-rw-r--r--dev-lang/spidermonkey/Manifest2
-rw-r--r--dev-lang/spidermonkey/spidermonkey-115.13.0.ebuild509
7 files changed, 1106 insertions, 4 deletions
diff --git a/dev-lang/Manifest.gz b/dev-lang/Manifest.gz
index 5dd8b4f1e05c..e12be5ef4bae 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 888388002424..45c5d0909a33 100644
--- a/dev-lang/ruby/Manifest
+++ b/dev-lang/ruby/Manifest
@@ -27,9 +27,11 @@ DIST ruby-3.3.4.tar.xz 16366580 BLAKE2B e10b81ad7838e3d443ce0b12b8372faebb001f00
EBUILD ruby-3.1.4-r3.ebuild 8352 BLAKE2B f3a592bd500c5319ca351544666a87446ad794158e3271076b8bcbec1e827ab8d9f7e70e1a0c4548e203d3a758a29e0d790285ff48d99b69816c6107d0d03bdf SHA512 e191ef30979b3fb967379345474609382629e555040b388c92fe54e45b3afd097b1e7c9f4bbbf611b740d799cd1c26973a6aec60dcc35c54c9182f3911a47485
EBUILD ruby-3.1.4-r5.ebuild 8504 BLAKE2B 2ee7c9aef7c65d9601cd31918addaa7a42bf806d08237f75e894db1e564e6fc282892c2c517badf366cd0584debcb51d0c754353af656d26bdc94389d5ea7e01 SHA512 1fb62ce8b8fc7288a954abe23af104ce7bc9124c157f4dcf68fd499d7f103bc8b396fdb5089431b4cf7c76c9c7adabe11f3a4f9b172c1d12c14165ec2de8d306
EBUILD ruby-3.1.5.ebuild 8594 BLAKE2B ff11b93e3af50798d6080c62044650412b82d40d23e3875f907001babe2e5a5202dbeeb8fbc7d520fe720eaea2e4505dcc2133c7600d41362e2cee910d6e0dbb SHA512 339a1788ad60046dfb52bd5dd7aff0a07513e36d90c6004e5a0b084e038951bab3db1a4a965e43796a2e66069c12751bd6e237bf37022a542d3ab0543413c3e9
+EBUILD ruby-3.1.6-r1.ebuild 8949 BLAKE2B c03a8b86ebee7a8faab551f07e0a05f8e6133523676e5c7d986968065e8d579c41757bd4838104fe27a7c0ccaad8dd51f53348728dc2337df5cc7f205bb6983e SHA512 5a95a5061e9c8094baf0a8305d1590b9c9f1fef0893b06b33be23fc922315b51a935ebfedaded7a36628aed0e192f15327f666d08a22c0d7bf51afdf8cb97f03
EBUILD ruby-3.1.6.ebuild 8801 BLAKE2B c1d6c9f691869e2c87018af75de136ea232d0538dac701ffa320308c5f22c658b9ef4ece7a14d60b6914cb3190c5bc62fcf851bf8f5691951134f56f0ab2baed SHA512 9026d13286ba7917138995f2b6198c67cfab4efd0065e7db441fb3bf39c4aea2441299806352ef0942c17af611ccb43f202bec5724177aa7172f49d0c558a3dd
EBUILD ruby-3.2.3.ebuild 9534 BLAKE2B 8383353bf02c2abba8dcf67cbdffcc197d085fce1c961c56d0d493ccc840f0970efb105b916a28d590c6f6caff42e654651361f685bce545c969082981cbd25f SHA512 78f8270db8c06b960a84b03b20b31f3aacc455905637e8cf3e040724d1c39b43aac19e296205902cf6c958e5c64ed0843e6854ae9997e612598aea6b3965c6d0
+EBUILD ruby-3.2.4-r1.ebuild 9687 BLAKE2B 9a2d8d6baf712752940939dd30fbdbbb352e22b6280af67b978c18a0d5f2d4a444e982b057054ef87a87a67d0cf2ef60b7c9cc3331ec22c073692b0f2049affa SHA512 1e9c5ed390df60260e67bb55a4db3e012536f3579396028725a68323cb78dabac393f56283e34c7c56f44925bfe9d96dbc4cc6bc78ec796f783f21297e373c55
EBUILD ruby-3.2.4.ebuild 9538 BLAKE2B 2b42ff228264ed57f4980463c3d79b533c4922cdd86ecb2b64cd11cd37e0b02a70c364f9105094d08fbdd944eb76f0345a7b797d4bbc278bfca01074b1721fe8 SHA512 4be33bbad246bf398660481977b7349bd5ae1f145d30610e337a319da8b1cd256c4294a1c2a52f472e9f7bea4bfee1f8eccb99d8a554e7c2a23ce78477c56a4c
EBUILD ruby-3.3.2.ebuild 9269 BLAKE2B 3f9971414512fb66be404c5a7ed5553e8b581b5f19874d7ab733d5d6aad3cca489163764d3bc2aa81a6f5d2981026290e4a197cf4b3712218741b4aede3268ee SHA512 44419e0bac61f0e9215e4c131ede309b08ef3d021c476899c0adadf35d54d661e86beb75a5e80a95dc7915131b748823e9ea5b53af3f8bce6fb7ac11c178690c
-EBUILD ruby-3.3.4.ebuild 9418 BLAKE2B 0612c6301dfcc4df6b356d0ed64fc5a3350c7eb6fe9c4a5b4a621d97cadefa9e725cb147f069e864946617fc84714fd2195dc61848485222d6195bd4a66e8079 SHA512 c5ddd6b6e488b7638207c9a17d425c14b278a4597ec1b5e37c6aaa94bb88e574521add56da316bd6317aee03c7e0dadc7d6d5a5cb962605d7b2b7fad3ddecc12
+EBUILD ruby-3.3.4.ebuild 9419 BLAKE2B 2c14e01cbb092ee4662b887472ccd89b17f9f1fa244d49b777b80fc31f86c2b647be42d6ed9f76d96c9ca9f5e18efefd851aca438dfbca8a27c0327e1be93e95 SHA512 050c4ed23770373e183a9a1b404e2ac9f2f631e134249ce8614f5002d9795748e4087b0bc9902cbc54ce79b99618773d4bcca7a105b01d3dde5763c828984fa4
MISC metadata.xml 504 BLAKE2B ca7743b107a6825dd029e0798cf1b0d048e3ce730382245565692e9242d09553db2c09edd1d09195602d9d96167c8606f3e7ddd5a27e1473eb9e4fbbc9074d1d SHA512 c2cf0a52fe03067cc09edc660d981af2465e4a733e53ad601d0e6377fa61072a60be4ec916cae94023328600e52a29f18621b47e839bddc897fa00db44feb9b1
diff --git a/dev-lang/ruby/ruby-3.1.6-r1.ebuild b/dev-lang/ruby/ruby-3.1.6-r1.ebuild
new file mode 100644
index 000000000000..ed9e6cd0f085
--- /dev/null
+++ b/dev-lang/ruby/ruby-3.1.6-r1.ebuild
@@ -0,0 +1,288 @@
+# Copyright 1999-2024 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:* sys-devel/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}"/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
+
+ if [[ ${CHOST} == *darwin* ]] ; then
+ # avoid symlink loop on Darwin (?!)
+ sed -i \
+ -e '/LIBRUBY_ALIASES=/s/lib$(RUBY_INSTALL_NAME).$(SOEXT)//' \
+ configure.ac || die
+
+ # make ar/libtool hack for Darwin work
+ sed -i \
+ -e "s/ac_cv_prog_ac_ct_AR='libtool/ac_cv_prog_AR='${CHOST}-libtool/" \
+ configure.ac || die
+
+ # disable using security framework (GCC barfs on those headers)
+ sed -i \
+ -e 's/MAC_OS_X_VERSION_MIN_REQUIRED/_DISABLED_/' \
+ random.c || die
+ fi
+ 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
+
+ # 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
+ INSTALL="${EPREFIX}/usr/bin/install -c" LIBPATHENV="" 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 \
+ --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() {
+ emake V=1 EXTLDFLAGS="${LDFLAGS}" MJIT_CFLAGS="${CFLAGS}" MJIT_OPTFLAGS="" MJIT_DEBUGFLAGS=""
+}
+
+src_test() {
+ 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}"
+
+ if [[ ${CHOST} == *darwin* ]] ; then
+ local -x DYLD_LIBRARY_PATH="${S}:${ED}/usr/$(get_libdir)${DYLD_LIBRARY_PATH+:}${DYLD_LIBRARY_PATH}"
+ fi
+
+ 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
+}
diff --git a/dev-lang/ruby/ruby-3.2.4-r1.ebuild b/dev-lang/ruby/ruby-3.2.4-r1.ebuild
new file mode 100644
index 000000000000..567f50286b60
--- /dev/null
+++ b/dev-lang/ruby/ruby-3.2.4-r1.ebuild
@@ -0,0 +1,300 @@
+# Copyright 1999-2024 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? ( >=virtual/rust-1.58.1 )
+ 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.0[ruby_targets_ruby32(-)]
+ >=dev-ruby/net-imap-0.3.4[ruby_targets_ruby32(-)]
+ >=dev-ruby/net-pop-0.1.2[ruby_targets_ruby32(-)]
+ >=dev-ruby/net-smtp-0.3.3[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.2.5[ruby_targets_ruby32(-)]
+ >=dev-ruby/rss-0.2.9[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 )
+"
+
+src_prepare() {
+ eapply "${FILESDIR}"/"${SLOT}"/010*.patch
+ eapply "${FILESDIR}"/"${SLOT}"/011*.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/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 -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 -i -e '/test_gem_exec_gem_uninstall/aomit "Fails intermittently"' test/rubygems/test_gem_commands_exec_command.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
+
+ if [[ ${CHOST} == *darwin* ]] ; then
+ # avoid symlink loop on Darwin (?!)
+ sed -i \
+ -e '/LIBRUBY_ALIASES=/s/lib$(RUBY_INSTALL_NAME).$(SOEXT)//' \
+ configure.ac || die
+
+ # make ar/libtool hack for Darwin work
+ sed -i \
+ -e "s/ac_cv_prog_ac_ct_AR='libtool/ac_cv_prog_AR='${CHOST}-libtool/" \
+ configure.ac || die
+
+ # disable using security framework (GCC barfs on those headers)
+ sed -i \
+ -e 's/MAC_OS_X_VERSION_MIN_REQUIRED/_DISABLED_/' \
+ random.c || die
+ fi
+ 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
+
+ # 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
+ INSTALL="${EPREFIX}/usr/bin/install -c" LIBPATHENV="" 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 \
+ --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) \
+ --enable-ipv6 \
+ $(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}"
+
+ if [[ ${CHOST} == *darwin* ]] ; then
+ local -x DYLD_LIBRARY_PATH="${S}:${ED}/usr/$(get_libdir)${DYLD_LIBRARY_PATH+:}${DYLD_LIBRARY_PATH}"
+ fi
+
+ 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.4.ebuild b/dev-lang/ruby/ruby-3.3.4.ebuild
index 60cae8156581..0b4513e79341 100644
--- a/dev-lang/ruby/ruby-3.3.4.ebuild
+++ b/dev-lang/ruby/ruby-3.3.4.ebuild
@@ -5,17 +5,18 @@ EAPI=8
inherit autotools flag-o-matic multiprocessing
+DESCRIPTION="An object-oriented scripting language"
+HOMEPAGE="https://www.ruby-lang.org/"
+
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"
-SLOT=$(ver_cut 1-2)
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 jemalloc jit socks5 +ssl static-libs systemtap tk valgrind xemacs"
diff --git a/dev-lang/spidermonkey/Manifest b/dev-lang/spidermonkey/Manifest
index aa78088d352e..7867bb3d60cc 100644
--- a/dev-lang/spidermonkey/Manifest
+++ b/dev-lang/spidermonkey/Manifest
@@ -5,6 +5,7 @@ DIST firefox-102esr-patches-13.tar.xz 22212 BLAKE2B 02e9edd071a99abbac02faa11ffc
DIST firefox-115.10.0esr.source.tar.xz 507826764 BLAKE2B 342d5cf4d61b3efe3dde6a6e53f064739d4107690f1d101915ba8cf2214f518aa8c7490903e20179f0874a3bd62871723e877e8f789d9816f3e0d9227d751eb6 SHA512 0626e2c68ce43f24dfc2b9216e2565537ad8781daf4195d53420e1b78d57d0f6360fbe56b0ddbedae3818546c72472c85c1ff2b208c123d32a0543e666f42b65
DIST firefox-115.11.0esr.source.tar.xz 506015444 BLAKE2B ced11d0665215dbf0aed710015a1e27863ecb8ccbba71ff6f6c57e1789e54c3c7c1940507db86ff2d8eea4d323a9ca7fbc40eaa6eaa7b0ec922ff69ffad64886 SHA512 0f3a87c99fb008088afd509d9259f893fdd44ea6bf6a5e69806fefb8d355415e81b9e8832a392acb9d0c1c50e4add7f1362a4aaadc35e1d9c2e55baf7136aed8
DIST firefox-115.12.0esr.source.tar.xz 505219784 BLAKE2B 6d2cc80daca9977f73ea0c0fe7e7cac999f2d7a99c324332d69d9438a6d954fe72ffb35e4df4c2a86abcdc94231c4847bb3e64dd612240f8a6d86e63abdb1be2 SHA512 d98475061d870e0f3aa920b7c0b9b0c1cbdb3f4102f760f1d1c5ea3e45e216c673c8d3662501e7e78af4950a003a519e94b57e9b1eda8d615c159cdf62130e89
+DIST firefox-115.13.0esr.source.tar.xz 510571488 BLAKE2B e2b00965a92cd11da6c81daa8b6c652dfccc9f0f7d066bc17ae5fa3ac3aaaa021c4489a9f653127f5516e3d77cd7174de328343e22c4edab438e3fcb9a859178 SHA512 799cdf2d0494003a5addd0da703f53deb9c9d6bb6f6c95d40026363382803e2d086039c7798940a1f35f4cba111f2e8e21bde8ac2eac29fd9bd6876dd8d3a85f
DIST firefox-115.9.1esr.source.tar.xz 508070816 BLAKE2B 5182972f45edfb9ec6b23cc2e869fe86237bd51bd23fd31058d03d9dc98f0ea2dcf57215d61d724e08f98d0e0771b86b5e5ce78ed03c3ac08fac60ed4377f890 SHA512 9ccaede2fcda13a07f98a2110bb8f99c7324601d66bff311f3070a669576a1598fe1d7de2d005d725d1f44dbe3934a9c0fd0b7950f60686047d4ce8d9d812310
DIST firefox-115esr-patches-09.tar.xz 16660 BLAKE2B 1dcdf62f35013b82dd70bf00c0505394b9277affcd1b1cbde92421778f4fcc146f536a546c2db8d6a70f92d40e4b1c96927fedec54383e6bb80bd9806d9b4461 SHA512 e003d0a2a5304dcdd0851b57ceb11993333326c8221d5d99555cd0c64090d5eda1bdb2a2a52e605f6094a3214ffa2238e43d57ff64eb7d424ff54b8125c16f5c
DIST firefox-115esr-patches-10.tar.xz 17256 BLAKE2B 0f6265d6e12f55e9b5128f2f261ba3785b80563e049d2441fde09dedf419c6086c9d994d2b44d1aab35af64cde375bdc254206da9ef148fc20fa90da0417606d SHA512 a1f0012420593a1c1b38dba1785ee9092e0923f56458c38f003cca4ebaac30a73fe3d1f5806a5795c76b2b8d729f8184372e63681daa450c3bb8e5afbe9e2e4f
@@ -14,5 +15,6 @@ EBUILD spidermonkey-102.15.0.ebuild 15624 BLAKE2B a10e3fb8fcbc0f0016778a3c5bb1ca
EBUILD spidermonkey-115.10.0.ebuild 13656 BLAKE2B fe1ae11304f93a2fa425ac207c7a6289fbe3ca9dc48def2a3e8d6bc88319ca1a49412f3e8062370fa9f5b0b18ef89f31d20ce91c61d43e4f4e26447809afc4c0 SHA512 d9ce326d7049f8ae6fb6d3d5a40cf1d52c2e49ded65e91e37f79cb57de4701d4ec962590360175e9d144b3e9d4942db4cb0b3cfaf65c8f6136c90f5d0e190dee
EBUILD spidermonkey-115.11.0.ebuild 13677 BLAKE2B a7b427b5f698c10bb87ea9554271066094b617e8e584b794ace4de55b3f92fa8f4433f89b44ea651e8d46e21ff07dd39a61b445bc083057cf221622bfaf61149 SHA512 29e048e3c4a27a53ace468f1488dbec63878aea8de9cbef743e795bba9dd27d74f9c6182d5134e7847ccb3ad369fb6e851d1eecd541c546b0ad553464a3bebb9
EBUILD spidermonkey-115.12.0.ebuild 13677 BLAKE2B a7b427b5f698c10bb87ea9554271066094b617e8e584b794ace4de55b3f92fa8f4433f89b44ea651e8d46e21ff07dd39a61b445bc083057cf221622bfaf61149 SHA512 29e048e3c4a27a53ace468f1488dbec63878aea8de9cbef743e795bba9dd27d74f9c6182d5134e7847ccb3ad369fb6e851d1eecd541c546b0ad553464a3bebb9
+EBUILD spidermonkey-115.13.0.ebuild 13979 BLAKE2B 4a30a086282b79181e51d9a8520050f319619753c18eb9549fe086a6bc6b207577778f777c08182836fceb65cb2d0c0bbd0caa329da97ef7dd727dffe2c7193b SHA512 5fd1097d32c2fdac0e8923bfd8e191117b337f8b04c631fe9f840498f38f54a8bb1ae73a16c0b219454978d922d864b38f4caba424d76d9dc2db78fc205a5f97
EBUILD spidermonkey-115.9.1.ebuild 12934 BLAKE2B d0be2703825b566522d31850e60320c2f250de4683983bfa1474aeef053282321d83b26007fc36ea6429c48f5a528cb47a81627cdbff23754d61275a38776063 SHA512 aaba4bdafce7062a2b8a8b66c0488c4a6b4da519b1ea91b236fde3e7fe1c352205729331e71aae022083cc9dae2dd8b62e23e5dd35e452e3f919e6469b94f5e0
MISC metadata.xml 513 BLAKE2B 58ffd474492f03c16bda95e48511fb6281e03067d2ad77e994f8117345ecece5da9591dccedafe75b037d98e06851a3759caa4b993adc2910dbb76e1c01a7fa3 SHA512 1ee02bff37e2dabbd72b7f719463b12299270c7960b4cf5a92afab17c954c50e6acb826d4a91db4954fb4a7b0f8669988f2cdb5be991df90e3a605c6b35fdbfb
diff --git a/dev-lang/spidermonkey/spidermonkey-115.13.0.ebuild b/dev-lang/spidermonkey/spidermonkey-115.13.0.ebuild
new file mode 100644
index 000000000000..63f797ff1d47
--- /dev/null
+++ b/dev-lang/spidermonkey/spidermonkey-115.13.0.ebuild
@@ -0,0 +1,509 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="8"
+
+# Patch version
+FIREFOX_PATCHSET="firefox-115esr-patches-10.tar.xz"
+SPIDERMONKEY_PATCHSET="spidermonkey-115-patches-01.tar.xz"
+
+LLVM_MAX_SLOT=18
+
+PYTHON_COMPAT=( python3_{10..12} )
+PYTHON_REQ_USE="ncurses,ssl,xml(+)"
+
+WANT_AUTOCONF="2.1"
+
+inherit autotools check-reqs flag-o-matic llvm multiprocessing prefix python-any-r1 toolchain-funcs
+
+MY_PN="mozjs"
+MY_PV="${PV/_pre*}" # Handle Gentoo pre-releases
+
+MY_MAJOR=$(ver_cut 1)
+
+MOZ_ESR=yes
+
+MOZ_PV=${PV}
+MOZ_PV_SUFFIX=
+if [[ ${PV} =~ (_(alpha|beta|rc).*)$ ]] ; then
+ MOZ_PV_SUFFIX=${BASH_REMATCH[1]}
+
+ # Convert the ebuild version to the upstream Mozilla version
+ MOZ_PV="${MOZ_PV/_alpha/a}" # Handle alpha for SRC_URI
+ MOZ_PV="${MOZ_PV/_beta/b}" # Handle beta for SRC_URI
+ MOZ_PV="${MOZ_PV%%_rc*}" # Handle rc for SRC_URI
+fi
+
+if [[ -n ${MOZ_ESR} ]] ; then
+ # ESR releases have slightly different version numbers
+ MOZ_PV="${MOZ_PV}esr"
+fi
+
+MOZ_PN="firefox"
+MOZ_P="${MOZ_PN}-${MOZ_PV}"
+MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}"
+MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}"
+
+MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}"
+
+if [[ ${PV} == *_rc* ]] ; then
+ MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/candidates/${MOZ_PV}-candidates/build${PV##*_rc}"
+fi
+
+PATCH_URIS=(
+ https://dev.gentoo.org/~juippis/mozilla/patchsets/${FIREFOX_PATCHSET}
+ https://dev.gentoo.org/~juippis/mozilla/patchsets/${SPIDERMONKEY_PATCHSET}
+)
+
+SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> ${MOZ_P_DISTFILES}.source.tar.xz
+ ${PATCH_URIS[@]}"
+
+DESCRIPTION="SpiderMonkey is Mozilla's JavaScript engine written in C and C++"
+HOMEPAGE="https://spidermonkey.dev https://firefox-source-docs.mozilla.org/js/index.html "
+
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+SLOT="$(ver_cut 1)"
+LICENSE="MPL-2.0"
+IUSE="clang cpu_flags_arm_neon debug +jit lto test"
+
+#RESTRICT="test"
+RESTRICT="!test? ( test )"
+
+BDEPEND="${PYTHON_DEPS}
+ virtual/pkgconfig
+ || (
+ (
+ sys-devel/llvm:18
+ clang? (
+ sys-devel/lld:18
+ sys-devel/clang:18
+ virtual/rust:0/llvm-18
+ )
+ )
+ (
+ sys-devel/llvm:17
+ clang? (
+ sys-devel/lld:17
+ sys-devel/clang:17
+ virtual/rust:0/llvm-17
+ )
+ )
+ (
+ sys-devel/llvm:16
+ clang? (
+ sys-devel/lld:16
+ sys-devel/clang:16
+ virtual/rust:0/llvm-16
+ )
+ )
+ (
+ sys-devel/llvm:15
+ clang? (
+ sys-devel/lld:15
+ sys-devel/clang:15
+ virtual/rust:0/llvm-15
+ )
+ )
+ )
+ !clang? ( virtual/rust )
+ !elibc_glibc? (
+ || (
+ dev-lang/rust
+ <dev-lang/rust-bin-1.73
+ )
+ )
+ test? (
+ $(python_gen_any_dep 'dev-python/six[${PYTHON_USEDEP}]')
+ )"
+DEPEND=">=dev-libs/icu-73.1:=
+ dev-libs/nspr
+ sys-libs/readline:0=
+ sys-libs/zlib"
+RDEPEND="${DEPEND}"
+
+S="${WORKDIR}/firefox-${MY_PV}/js/src"
+
+llvm_check_deps() {
+ if ! has_version -b "sys-devel/llvm:${LLVM_SLOT}" ; then
+ einfo "sys-devel/llvm:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2
+ return 1
+ fi
+
+ if use clang ; then
+ if ! has_version -b "sys-devel/clang:${LLVM_SLOT}" ; then
+ einfo "sys-devel/clang:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2
+ return 1
+ fi
+
+ if ! has_version -b "virtual/rust:0/llvm-${LLVM_SLOT}" ; then
+ einfo "virtual/rust:0/llvm-${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2
+ return 1
+ fi
+
+ if ! tc-ld-is-mold ; then
+ if ! has_version -b "sys-devel/lld:${LLVM_SLOT}" ; then
+ einfo "sys-devel/lld:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2
+ return 1
+ fi
+ fi
+ fi
+
+ einfo "Using LLVM slot ${LLVM_SLOT} to build" >&2
+}
+
+python_check_deps() {
+ if use test ; then
+ python_has_version "dev-python/six[${PYTHON_USEDEP}]"
+ fi
+}
+
+# This is a straight copypaste from toolchain-funcs.eclass's 'tc-ld-is-lld', and is temporarily
+# placed here until toolchain-funcs.eclass gets an official support for mold linker.
+# Please see:
+# https://github.com/gentoo/gentoo/pull/28366 ||
+# https://github.com/gentoo/gentoo/pull/28355
+tc-ld-is-mold() {
+ local out
+
+ # Ensure ld output is in English.
+ local -x LC_ALL=C
+
+ # First check the linker directly.
+ out=$($(tc-getLD "$@") --version 2>&1)
+ if [[ ${out} == *"mold"* ]] ; then
+ return 0
+ fi
+
+ # Then see if they're selecting mold via compiler flags.
+ # Note: We're assuming they're using LDFLAGS to hold the
+ # options and not CFLAGS/CXXFLAGS.
+ local base="${T}/test-tc-linker"
+ cat <<-EOF > "${base}.c"
+ int main() { return 0; }
+ EOF
+ out=$($(tc-getCC "$@") ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} -Wl,--version "${base}.c" -o "${base}" 2>&1)
+ rm -f "${base}"*
+ if [[ ${out} == *"mold"* ]] ; then
+ return 0
+ fi
+
+ # No mold here!
+ return 1
+}
+
+pkg_pretend() {
+ if use test ; then
+ CHECKREQS_DISK_BUILD="4000M"
+ else
+ CHECKREQS_DISK_BUILD="3600M"
+ fi
+
+ check-reqs_pkg_pretend
+}
+
+pkg_setup() {
+ if [[ ${MERGE_TYPE} != binary ]] ; then
+ if use test ; then
+ CHECKREQS_DISK_BUILD="4000M"
+ else
+ CHECKREQS_DISK_BUILD="3600M"
+ fi
+
+ check-reqs_pkg_setup
+
+ llvm_pkg_setup
+
+ if use clang && use lto && tc-ld-is-lld ; then
+ local version_lld=$(ld.lld --version 2>/dev/null | awk '{ print $2 }')
+ [[ -n ${version_lld} ]] && version_lld=$(ver_cut 1 "${version_lld}")
+ [[ -z ${version_lld} ]] && die "Failed to read ld.lld version!"
+
+ local version_llvm_rust=$(rustc -Vv 2>/dev/null | grep -F -- 'LLVM version:' | awk '{ print $3 }')
+ [[ -n ${version_llvm_rust} ]] && version_llvm_rust=$(ver_cut 1 "${version_llvm_rust}")
+ [[ -z ${version_llvm_rust} ]] && die "Failed to read used LLVM version from rustc!"
+
+ if ver_test "${version_lld}" -ne "${version_llvm_rust}" ; then
+ eerror "Rust is using LLVM version ${version_llvm_rust} but ld.lld version belongs to LLVM version ${version_lld}."
+ eerror "You will be unable to link ${CATEGORY}/${PN}. To proceed you have the following options:"
+ eerror " - Manually switch rust version using 'eselect rust' to match used LLVM version"
+ eerror " - Switch to dev-lang/rust[system-llvm] which will guarantee matching version"
+ eerror " - Build ${CATEGORY}/${PN} without USE=lto"
+ eerror " - Rebuild lld with llvm that was used to build rust (may need to rebuild the whole "
+ eerror " llvm/clang/lld/rust chain depending on your @world updates)"
+ die "LLVM version used by Rust (${version_llvm_rust}) does not match with ld.lld version (${version_lld})!"
+ fi
+ fi
+
+ python-any-r1_pkg_setup
+
+ # Build system is using /proc/self/oom_score_adj, bug #604394
+ addpredict /proc/self/oom_score_adj
+
+ if ! mountpoint -q /dev/shm ; then
+ # If /dev/shm is not available, configure is known to fail with
+ # a traceback report referencing /usr/lib/pythonN.N/multiprocessing/synchronize.py
+ ewarn "/dev/shm is not mounted -- expect build failures!"
+ fi
+
+ # Ensure we use C locale when building, bug #746215
+ export LC_ALL=C
+ fi
+}
+
+src_prepare() {
+ pushd ../.. &>/dev/null || die
+
+ use lto && rm -v "${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch
+
+ if ! use ppc64; then
+ rm -v "${WORKDIR}"/firefox-patches/*ppc64*.patch || die
+ fi
+
+ # Workaround for bgo #915651,915651,929013 on musl
+ if use elibc_glibc ; then
+ rm -v "${WORKDIR}"/firefox-patches/*bgo-748849-RUST_TARGET_override.patch || die
+ fi
+
+ eapply "${WORKDIR}"/firefox-patches
+ eapply "${WORKDIR}"/spidermonkey-patches
+
+ default
+
+ # Make cargo respect MAKEOPTS
+ export CARGO_BUILD_JOBS="$(makeopts_jobs)"
+
+ # Workaround for bgo #915651,915651,929013 on musl
+ if ! use elibc_glibc ; then
+ if use amd64 ; then
+ export RUST_TARGET="x86_64-unknown-linux-musl"
+ elif use x86 ; then
+ export RUST_TARGET="i686-unknown-linux-musl"
+ else
+ die "Unknown musl chost, please post your rustc -vV along with emerge --info on Gentoo's bug #915651"
+ fi
+ fi
+
+ # sed-in toolchain prefix
+ sed -i \
+ -e "s/objdump/${CHOST}-objdump/" \
+ python/mozbuild/mozbuild/configure/check_debug_ranges.py \
+ || die "sed failed to set toolchain prefix"
+
+ # use prefix shell in wrapper linker scripts, bug #789660
+ hprefixify "${S}"/../../build/cargo-{,host-}linker
+
+ einfo "Removing pre-built binaries ..."
+ find third_party -type f \( -name '*.so' -o -name '*.o' \) -print -delete || die
+
+ MOZJS_BUILDDIR="${WORKDIR}/build"
+ mkdir "${MOZJS_BUILDDIR}" || die
+
+ popd &>/dev/null || die
+}
+
+src_configure() {
+ # Show flags set at the beginning
+ einfo "Current CFLAGS: ${CFLAGS}"
+ einfo "Current CXXFLAGS: ${CXXFLAGS}"
+ einfo "Current LDFLAGS: ${LDFLAGS}"
+ einfo "Current RUSTFLAGS: ${RUSTFLAGS}"
+
+ local have_switched_compiler=
+ if use clang; then
+ # Force clang
+ einfo "Enforcing the use of clang due to USE=clang ..."
+
+ local version_clang=$(clang --version 2>/dev/null | grep -F -- 'clang version' | awk '{ print $3 }')
+ [[ -n ${version_clang} ]] && version_clang=$(ver_cut 1 "${version_clang}")
+ [[ -z ${version_clang} ]] && die "Failed to read clang version!"
+
+ if tc-is-gcc; then
+ have_switched_compiler=yes
+ fi
+ AR=llvm-ar
+ CC=${CHOST}-clang-${version_clang}
+ CXX=${CHOST}-clang++-${version_clang}
+ NM=llvm-nm
+ RANLIB=llvm-ranlib
+
+ elif ! use clang && ! tc-is-gcc ; then
+ # Force gcc
+ have_switched_compiler=yes
+ einfo "Enforcing the use of gcc due to USE=-clang ..."
+ AR=gcc-ar
+ CC=${CHOST}-gcc
+ CXX=${CHOST}-g++
+ NM=gcc-nm
+ RANLIB=gcc-ranlib
+ fi
+
+ if [[ -n "${have_switched_compiler}" ]] ; then
+ # Because we switched active compiler we have to ensure
+ # that no unsupported flags are set
+ strip-unsupported-flags
+ fi
+
+ # Ensure we use correct toolchain,
+ # AS is used in a non-standard way by upstream, #bmo1654031
+ export HOST_CC="$(tc-getBUILD_CC)"
+ export HOST_CXX="$(tc-getBUILD_CXX)"
+ export AS="$(tc-getCC) -c"
+ tc-export CC CXX LD AR AS NM OBJDUMP RANLIB PKG_CONFIG
+
+ cd "${MOZJS_BUILDDIR}" || die
+
+ # ../python/mach/mach/mixin/process.py fails to detect SHELL
+ export SHELL="${EPREFIX}/bin/bash"
+
+ local -a myeconfargs=(
+ --host="${CBUILD:-${CHOST}}"
+ --target="${CHOST}"
+
+ --disable-ctype
+ --disable-jemalloc
+ --disable-smoosh
+ --disable-strip
+
+ --enable-project=js
+ --enable-readline
+ --enable-release
+ --enable-shared-js
+
+ --with-intl-api
+ --with-system-icu
+ --with-system-nspr
+ --with-system-zlib
+ --with-toolchain-prefix="${CHOST}-"
+
+ $(use_enable debug)
+ $(use_enable jit)
+ $(use_enable test tests)
+ )
+
+ if use debug; then
+ myeconfargs+=( --disable-optimize )
+ myeconfargs+=( --enable-debug-symbols )
+ myeconfargs+=( --enable-real-time-tracing )
+ else
+ myeconfargs+=( --enable-optimize )
+ myeconfargs+=( --disable-debug-symbols )
+ myeconfargs+=( --disable-real-time-tracing )
+ fi
+
+ # We always end up disabling this at some point due to newer rust versions. bgo#933372
+ myeconfargs+=( --disable-rust-simd )
+
+ # Modifications to better support ARM, bug 717344
+ if use cpu_flags_arm_neon ; then
+ myeconfargs+=( --with-fpu=neon )
+
+ if ! tc-is-clang ; then
+ # thumb options aren't supported when using clang, bug 666966
+ myeconfargs+=( --with-thumb=yes )
+ myeconfargs+=( --with-thumb-interwork=no )
+ fi
+ fi
+
+ # Tell build system that we want to use LTO
+ if use lto ; then
+ if use clang ; then
+ if tc-ld-is-mold ; then
+ myeconfargs+=( --enable-linker=mold )
+ else
+ myeconfargs+=( --enable-linker=lld )
+ fi
+ myeconfargs+=( --enable-lto=cross )
+
+ else
+ myeconfargs+=( --enable-linker=bfd )
+ myeconfargs+=( --enable-lto=full )
+ fi
+ fi
+
+ # LTO flag was handled via configure
+ filter-lto
+
+ # Use system's Python environment
+ export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE="none"
+ export PIP_NETWORK_INSTALL_RESTRICTED_VIRTUALENVS=mach
+
+ # Show flags we will use
+ einfo "Build CFLAGS: ${CFLAGS}"
+ einfo "Build CXXFLAGS: ${CXXFLAGS}"
+ einfo "Build LDFLAGS: ${LDFLAGS}"
+ einfo "Build RUSTFLAGS: ${RUSTFLAGS}"
+
+ # Forcing system-icu allows us to skip patching bundled ICU for PPC
+ # and other minor arches
+ ECONF_SOURCE="${S}" \
+ econf \
+ ${myeconfargs[@]} \
+ XARGS="${EPREFIX}/usr/bin/xargs"
+}
+
+src_compile() {
+ cd "${MOZJS_BUILDDIR}" || die
+ default
+}
+
+src_test() {
+ if "${MOZJS_BUILDDIR}/js/src/js" -e 'print("Hello world!")'; then
+ einfo "Smoke-test successful, continuing with full test suite"
+ else
+ die "Smoke-test failed: did interpreter initialization fail?"
+ fi
+
+ cp "${FILESDIR}"/spidermonkey-${SLOT}-known-test-failures.txt "${T}"/known_failures.list || die
+
+ if use sparc ; then
+ echo "non262/Array/regress-157652.js" >> "${T}"/known_failures.list
+ echo "non262/regress/regress-422348.js" >> "${T}"/known_failures.list
+ echo "test262/built-ins/TypedArray/prototype/set/typedarray-arg-set-values-same-buffer-other-type.js" >> "${T}"/known_failures.list
+ fi
+
+ if use x86 ; then
+ echo "non262/Date/timeclip.js" >> "${T}"/known_failures.list
+ echo "test262/built-ins/Date/UTC/fp-evaluation-order.js" >> "${T}"/known_failures.list
+ echo "test262/language/types/number/S8.5_A2.1.js" >> "${T}"/known_failures.list
+ echo "test262/language/types/number/S8.5_A2.2.js" >> "${T}"/known_failures.list
+ fi
+
+ ${EPYTHON} \
+ "${S}"/tests/jstests.py -d -s -t 1800 --wpt=disabled --no-progress \
+ --exclude-file="${T}"/known_failures.list \
+ "${MOZJS_BUILDDIR}"/js/src/js \
+ || die
+
+ if use jit ; then
+ ${EPYTHON} \
+ "${S}"/tests/jstests.py -d -s -t 1800 --wpt=disabled --no-progress \
+ --exclude-file="${T}"/known_failures.list \
+ "${MOZJS_BUILDDIR}"/js/src/js basic \
+ || die
+ fi
+}
+
+src_install() {
+ cd "${MOZJS_BUILDDIR}" || die
+ default
+
+ # fix soname links
+ pushd "${ED}"/usr/$(get_libdir) &>/dev/null || die
+ mv lib${MY_PN}-${MY_MAJOR}.so lib${MY_PN}-${MY_MAJOR}.so.0.0.0 || die
+ ln -s lib${MY_PN}-${MY_MAJOR}.so.0.0.0 lib${MY_PN}-${MY_MAJOR}.so.0 || die
+ ln -s lib${MY_PN}-${MY_MAJOR}.so.0 lib${MY_PN}-${MY_MAJOR}.so || die
+ popd &>/dev/null || die
+
+ # remove unneeded files
+ rm \
+ "${ED}"/usr/bin/js${MY_MAJOR}-config \
+ "${ED}"/usr/$(get_libdir)/libjs_static.ajs \
+ || die
+
+ # fix permissions
+ chmod -x \
+ "${ED}"/usr/$(get_libdir)/pkgconfig/*.pc \
+ "${ED}"/usr/include/mozjs-${MY_MAJOR}/js-config.h \
+ || die
+}