From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <gentoo-commits+bounces-1343221-garchives=archives.gentoo.org@lists.gentoo.org>
Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature RSA-PSS (2048 bits))
	(No client certificate requested)
	by finch.gentoo.org (Postfix) with ESMTPS id 7C19E158086
	for <garchives@archives.gentoo.org>; Thu, 25 Nov 2021 09:10:21 +0000 (UTC)
Received: from pigeon.gentoo.org (localhost [127.0.0.1])
	by pigeon.gentoo.org (Postfix) with SMTP id A2E51E07D1;
	Thu, 25 Nov 2021 09:10:20 +0000 (UTC)
Received: from smtp.gentoo.org (mail.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature RSA-PSS (4096 bits))
	(No client certificate requested)
	by pigeon.gentoo.org (Postfix) with ESMTPS id 53019E07D1
	for <gentoo-commits@lists.gentoo.org>; Thu, 25 Nov 2021 09:10:20 +0000 (UTC)
Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
	(No client certificate requested)
	by smtp.gentoo.org (Postfix) with ESMTPS id 11151343366
	for <gentoo-commits@lists.gentoo.org>; Thu, 25 Nov 2021 09:10:18 +0000 (UTC)
Received: from localhost.localdomain (localhost [IPv6:::1])
	by oystercatcher.gentoo.org (Postfix) with ESMTP id 146D51FB
	for <gentoo-commits@lists.gentoo.org>; Thu, 25 Nov 2021 09:10:00 +0000 (UTC)
From: "Hans de Graaff" <graaff@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Content-Transfer-Encoding: 8bit
Content-type: text/plain; charset=UTF-8
Reply-To: gentoo-dev@lists.gentoo.org, "Hans de Graaff" <graaff@gentoo.org>
Message-ID: <1637831394.31fe3f545f587baece94ac3a6997ab3c632bc33e.graaff@gentoo>
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-lang/ruby/
X-VCS-Repository: repo/gentoo
X-VCS-Files: dev-lang/ruby/Manifest dev-lang/ruby/ruby-2.6.9.ebuild dev-lang/ruby/ruby-2.7.5.ebuild dev-lang/ruby/ruby-3.0.3.ebuild
X-VCS-Directories: dev-lang/ruby/
X-VCS-Committer: graaff
X-VCS-Committer-Name: Hans de Graaff
X-VCS-Revision: 31fe3f545f587baece94ac3a6997ab3c632bc33e
X-VCS-Branch: master
Date: Thu, 25 Nov 2021 09:10:00 +0000 (UTC)
Precedence: bulk
List-Post: <mailto:gentoo-commits@lists.gentoo.org>
List-Help: <mailto:gentoo-commits+help@lists.gentoo.org>
List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org>
List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org>
List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org>
X-BeenThere: gentoo-commits@lists.gentoo.org
X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply
X-Archives-Salt: 9cec710c-c4a1-4950-8622-499ebc1660e1
X-Archives-Hash: 21027240761f88bceaa128f63e1369d1

commit:     31fe3f545f587baece94ac3a6997ab3c632bc33e
Author:     Hans de Graaff <graaff <AT> gentoo <DOT> org>
AuthorDate: Thu Nov 25 09:09:03 2021 +0000
Commit:     Hans de Graaff <graaff <AT> gentoo <DOT> org>
CommitDate: Thu Nov 25 09:09:54 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=31fe3f54

dev-lang/ruby: add 2.6.9, 2.7.5, 3.0.3

Package-Manager: Portage-3.0.28, Repoman-3.0.3
Signed-off-by: Hans de Graaff <graaff <AT> gentoo.org>

 dev-lang/ruby/Manifest          |   3 +
 dev-lang/ruby/ruby-2.6.9.ebuild | 258 ++++++++++++++++++++++++++++++++++++++
 dev-lang/ruby/ruby-2.7.5.ebuild | 267 ++++++++++++++++++++++++++++++++++++++++
 dev-lang/ruby/ruby-3.0.3.ebuild | 267 ++++++++++++++++++++++++++++++++++++++++
 4 files changed, 795 insertions(+)

diff --git a/dev-lang/ruby/Manifest b/dev-lang/ruby/Manifest
index c2fd5cc82ae5..d0ba5efb8996 100644
--- a/dev-lang/ruby/Manifest
+++ b/dev-lang/ruby/Manifest
@@ -1,3 +1,6 @@
 DIST ruby-2.6.8.tar.xz 11599488 BLAKE2B e5b2949233d8540f72d4d8b9c246f9bd0d1342426d2a1c19cb240b7c86f37299e9dc1dfc98ef2a86d1d91055865b4542d690de5567c71189bf2973a4989fa0fd SHA512 d040ad2238523587d8f356fcb796b8b6ad7f8caff7dd6df09e3f7efcbfa0369e33600e78c7f2bc713ae77c040757cce5c4fec223cb9070209f2bf741899c556d
+DIST ruby-2.6.9.tar.xz 11590064 BLAKE2B 8d14baf479053b7fab517f1e41191b009413d557431c558d92489a36d539f9a667571e4493abba171b047f8ba6d1f676fb6d2f2152fcae737924e773a324ddf6 SHA512 f60aa89e685cea324185eb0d13e6b44caef4e4f761cbf9ea1386ae70e39faf3866ac01e4bb5354574f2583e74290b8c80eaf63d126040d52368be6c771476451
 DIST ruby-2.7.4.tar.xz 12067588 BLAKE2B 2680a7ccd1daf3d156d9519d9132853e68f5f1aad592abce3e73fdd03314a6c28e7d94590153aead86af8952ff51f804ee029f8100b0137919cc27373cb8b9cd SHA512 2cbb70ecfdd69120e789023ddb2b25cab0d03bc33fdc367a8f74ca8a3ee785c18c8ded9de3ecee627c7e275ffb85147e6abf921b6a61e31851b37c7fedf45bf9
+DIST ruby-2.7.5.tar.xz 12072980 BLAKE2B 50bb822cb2c5e76fee8755c710b593ce3bcb0f4f14b96a4e9eef5e58b4614bcf5f91491586b1dd6411fce57c258a7ad80136cd3cfbddf28e4fd4b37f486d2bea SHA512 21c8a713e3ce115fc4c405113ac691ddcefc3419f528b93ca1ac59e7052c1b6e9e241da0e570e291e567f28f3d840824dbcc5967b216cbe7d6ca7a05580fa311
 DIST ruby-3.0.2.tar.xz 14746080 BLAKE2B 47c5591261fb63b1ec3ca719ea6b0c348937456c3711351c1f5317d1e6a748de197e90c8bd4ff822f7b2d4580ad7ed0b54b9eb7aaa5166ea1a15ab2deae96439 SHA512 0f702e2d8ca1342a9d4284dbdd234a3588e057b92566353aa7c21835cf09a3932864b2acf459a976960a1704e9befa562155d36b98b7cda8bd99526e10a374c4
+DIST ruby-3.0.3.tar.xz 14991880 BLAKE2B d57b7f6e0d0121326b1a191e93a49c045d26dfd1ab8b0d283b99d09968e07277edde0baaeec072602d6d06e20dcd3893d6cb0b03f59dbc59ebf0e3ebd5646446 SHA512 bb9ea426278d5a7ac46595296f03b82d43df8b7db41045cdf85611e05e26c703c53f700494cd7cf5d4c27fa953bdc5c144317d7720812db0a6e3b6f4bc4d2e00

diff --git a/dev-lang/ruby/ruby-2.6.9.ebuild b/dev-lang/ruby/ruby-2.6.9.ebuild
new file mode 100644
index 000000000000..331fce592559
--- /dev/null
+++ b/dev-lang/ruby/ruby-2.6.9.ebuild
@@ -0,0 +1,258 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools flag-o-matic multilib
+
+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 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+IUSE="berkdb debug doc examples gdbm ipv6 jemalloc jit +rdoc rubytests socks5 +ssl static-libs systemtap tk 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-util/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-20181225
+"
+
+DEPEND="${RDEPEND}"
+
+BUNDLED_GEMS="
+	>=dev-ruby/did_you_mean-1.2.1[ruby_targets_ruby26]
+	>=dev-ruby/minitest-5.11.3[ruby_targets_ruby26]
+	>=dev-ruby/net-telnet-0.2.0[ruby_targets_ruby26]
+	>=dev-ruby/power_assert-1.1.3[ruby_targets_ruby26]
+	>=dev-ruby/rake-12.3.2[ruby_targets_ruby26]
+	>=dev-ruby/test-unit-3.2.9[ruby_targets_ruby26]
+	>=dev-ruby/xmlrpc-0.3.0[ruby_targets_ruby26]
+"
+
+PDEPEND="
+	${BUNDLED_GEMS}
+	virtual/rubygems[ruby_targets_ruby26]
+	>=dev-ruby/bundler-1.17.2[ruby_targets_ruby26]
+	>=dev-ruby/json-2.0.2[ruby_targets_ruby26]
+	rdoc? ( >=dev-ruby/rdoc-6.1.2[ruby_targets_ruby26] )
+	xemacs? ( app-xemacs/ruby-modes )"
+
+src_prepare() {
+	# 005 does not compile bigdecimal and is questionable because it
+	# compiles ruby in a non-standard way, may be dropped
+	eapply "${FILESDIR}"/2.6/{002,010}*.patch
+
+	einfo "Unbundling gems..."
+	cd "$S"
+	# Remove bundled gems that we will install via PDEPEND, bug
+	# 539700.
+	rm -fr gems/* || die
+
+	einfo "Removing bundled libraries..."
+	rm -fr ext/fiddle/libffi-3.2.1 || 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
+		fi
+	fi
+
+	eapply_user
+
+	eautoreconf
+}
+
+src_configure() {
+	local modules= myconf=
+
+	# -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 \
+		--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) \
+		${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 -j1 V=1 test
+
+	elog "Ruby's make test has been run. Ruby also ships with a make check"
+	elog "that cannot be run until after ruby has been installed."
+	elog
+	if use rubytests; then
+		elog "You have enabled rubytests, so they will be installed to"
+		elog "/usr/share/${PN}-${SLOT}/test. To run them you must be a user other"
+		elog "than root, and you must place them into a writeable directory."
+		elog "Then call: "
+		elog
+		elog "ruby${MY_SUFFIX} -C /location/of/tests runner.rb"
+	else
+		elog "Enable the rubytests USE flag to install the make check tests"
+	fi
+}
+
+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)
+
+	LD_LIBRARY_PATH="${S}:${ED}/usr/$(get_libdir)${LD_LIBRARY_PATH+:}${LD_LIBRARY_PATH}"
+
+	if [[ ${CHOST} == *darwin* ]] ; then
+		DYLD_LIBRARY_PATH="${S}:${ED}/usr/$(get_libdir)${DYLD_LIBRARY_PATH+:}${DYLD_LIBRARY_PATH}"
+		export DYLD_LIBRARY_PATH
+	fi
+
+	RUBYLIB="${S}:${ED}/usr/$(get_libdir)/ruby/${RUBYVERSION}"
+	for d in $(find "${S}/ext" -type d) ; do
+		RUBYLIB="${RUBYLIB}:$d"
+	done
+	export LD_LIBRARY_PATH RUBYLIB
+
+	# 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 doc/NEWS* README*
+
+	if use rubytests; then
+		pushd test
+		insinto /usr/share/${PN}-${SLOT}/test
+		doins -r .
+		popd
+	fi
+}
+
+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(23|24|...)"
+	elog
+}
+
+pkg_postrm() {
+	eselect ruby cleanup
+}

diff --git a/dev-lang/ruby/ruby-2.7.5.ebuild b/dev-lang/ruby/ruby-2.7.5.ebuild
new file mode 100644
index 000000000000..1941ac0252cc
--- /dev/null
+++ b/dev-lang/ruby/ruby-2.7.5.ebuild
@@ -0,0 +1,267 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools flag-o-matic multilib
+
+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 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+IUSE="berkdb debug doc examples gdbm ipv6 jemalloc jit +rdoc rubytests socks5 +ssl static-libs systemtap tk 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-util/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-20191222
+"
+
+DEPEND="${RDEPEND}"
+
+BUNDLED_GEMS="
+	>=dev-ruby/minitest-5.13.0[ruby_targets_ruby27]
+	>=dev-ruby/net-telnet-0.2.0[ruby_targets_ruby27]
+	>=dev-ruby/power_assert-1.1.7[ruby_targets_ruby27]
+	>=dev-ruby/rake-13.0.1[ruby_targets_ruby27]
+	>=dev-ruby/test-unit-3.3.4[ruby_targets_ruby27]
+	>=dev-ruby/xmlrpc-0.3.0[ruby_targets_ruby27]
+"
+
+PDEPEND="
+	${BUNDLED_GEMS}
+	virtual/rubygems[ruby_targets_ruby27]
+	>=dev-ruby/bundler-2.1.4[ruby_targets_ruby27]
+	>=dev-ruby/did_you_mean-1.3.1[ruby_targets_ruby27]
+	>=dev-ruby/json-2.0.2[ruby_targets_ruby27]
+	rdoc? ( >=dev-ruby/rdoc-6.1.2[ruby_targets_ruby27] )
+	xemacs? ( app-xemacs/ruby-modes )"
+
+src_prepare() {
+	eapply "${FILESDIR}"/2.7/{003,010}*.patch
+
+	if use elibc_musl ; then
+		eapply "${FILESDIR}"/2.7/{900,901}-musl-*.patch
+	fi
+
+	# Reset time on patched gem_prelude.rb to avoid the need for a base
+	# ruby during bootstrapping, bug 787137
+	touch -t 202001010000 gem_prelude.rb || die
+
+	einfo "Unbundling gems..."
+	cd "$S"
+	# Remove bundled gems that we will install via PDEPEND, bug
+	# 539700.
+	rm -fr 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
+
+	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
+		fi
+	fi
+
+	eapply_user
+
+	eautoreconf
+}
+
+src_configure() {
+	local modules= myconf=
+
+	# -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 \
+		--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) \
+		${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 -j1 V=1 test
+
+	elog "Ruby's make test has been run. Ruby also ships with a make check"
+	elog "that cannot be run until after ruby has been installed."
+	elog
+	if use rubytests; then
+		elog "You have enabled rubytests, so they will be installed to"
+		elog "/usr/share/${PN}-${SLOT}/test. To run them you must be a user other"
+		elog "than root, and you must place them into a writeable directory."
+		elog "Then call: "
+		elog
+		elog "ruby${MY_SUFFIX} -C /location/of/tests runner.rb"
+	else
+		elog "Enable the rubytests USE flag to install the make check tests"
+	fi
+}
+
+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)
+
+	LD_LIBRARY_PATH="${S}:${ED}/usr/$(get_libdir)${LD_LIBRARY_PATH+:}${LD_LIBRARY_PATH}"
+
+	if [[ ${CHOST} == *darwin* ]] ; then
+		DYLD_LIBRARY_PATH="${S}:${ED}/usr/$(get_libdir)${DYLD_LIBRARY_PATH+:}${DYLD_LIBRARY_PATH}"
+		export DYLD_LIBRARY_PATH
+	fi
+
+	RUBYLIB="${S}:${ED}/usr/$(get_libdir)/ruby/${RUBYVERSION}"
+	for d in $(find "${S}/ext" -type d) ; do
+		RUBYLIB="${RUBYLIB}:$d"
+	done
+	export LD_LIBRARY_PATH RUBYLIB
+
+	# 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 doc/NEWS* README*
+
+	if use rubytests; then
+		pushd test
+		insinto /usr/share/${PN}-${SLOT}/test
+		doins -r .
+		popd
+	fi
+}
+
+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(23|24|...)"
+	elog
+}
+
+pkg_postrm() {
+	eselect ruby cleanup
+}

diff --git a/dev-lang/ruby/ruby-3.0.3.ebuild b/dev-lang/ruby/ruby-3.0.3.ebuild
new file mode 100644
index 000000000000..16eea1190ab4
--- /dev/null
+++ b/dev-lang/ruby/ruby-3.0.3.ebuild
@@ -0,0 +1,267 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools flag-o-matic multilib
+
+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 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+IUSE="berkdb debug doc examples gdbm ipv6 jemalloc jit +rdoc rubytests socks5 +ssl static-libs systemtap tk 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-util/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-20201225
+"
+
+DEPEND="${RDEPEND}"
+
+BUNDLED_GEMS="
+	>=dev-ruby/minitest-5.14.2[ruby_targets_ruby30]
+	>=dev-ruby/power_assert-1.2.0[ruby_targets_ruby30]
+	>=dev-ruby/rake-13.0.3[ruby_targets_ruby30]
+	>=dev-ruby/rbs-1.0.0[ruby_targets_ruby30]
+	>=dev-ruby/rexml-3.2.4[ruby_targets_ruby30]
+	>=dev-ruby/rss-0.2.9[ruby_targets_ruby30]
+	>=dev-ruby/test-unit-3.3.7[ruby_targets_ruby30]
+	>=dev-ruby/typeprof-0.11.0[ruby_targets_ruby30]
+"
+
+PDEPEND="
+	${BUNDLED_GEMS}
+	virtual/rubygems[ruby_targets_ruby30]
+	>=dev-ruby/bundler-2.2.15[ruby_targets_ruby30]
+	>=dev-ruby/did_you_mean-1.5.0[ruby_targets_ruby30]
+	>=dev-ruby/json-2.5.1[ruby_targets_ruby30]
+	rdoc? ( >=dev-ruby/rdoc-6.3.0[ruby_targets_ruby30] )
+	xemacs? ( app-xemacs/ruby-modes )"
+
+src_prepare() {
+	eapply "${FILESDIR}"/"${SLOT}"/010*.patch
+
+	if use elibc_musl ; then
+		eapply "${FILESDIR}"/3.0/900-musl-*.patch
+		eapply "${FILESDIR}"/2.7/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
+
+	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
+		fi
+	fi
+
+	eapply_user
+
+	eautoreconf
+}
+
+src_configure() {
+	local modules= myconf=
+
+	# -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 \
+		--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) \
+		${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 -j1 V=1 test
+
+	elog "Ruby's make test has been run. Ruby also ships with a make check"
+	elog "that cannot be run until after ruby has been installed."
+	elog
+	if use rubytests; then
+		elog "You have enabled rubytests, so they will be installed to"
+		elog "/usr/share/${PN}-${SLOT}/test. To run them you must be a user other"
+		elog "than root, and you must place them into a writeable directory."
+		elog "Then call: "
+		elog
+		elog "ruby${MY_SUFFIX} -C /location/of/tests runner.rb"
+	else
+		elog "Enable the rubytests USE flag to install the make check tests"
+	fi
+}
+
+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)
+
+	LD_LIBRARY_PATH="${S}:${ED}/usr/$(get_libdir)${LD_LIBRARY_PATH+:}${LD_LIBRARY_PATH}"
+
+	if [[ ${CHOST} == *darwin* ]] ; then
+		DYLD_LIBRARY_PATH="${S}:${ED}/usr/$(get_libdir)${DYLD_LIBRARY_PATH+:}${DYLD_LIBRARY_PATH}"
+		export DYLD_LIBRARY_PATH
+	fi
+
+	RUBYLIB="${S}:${ED}/usr/$(get_libdir)/ruby/${RUBYVERSION}"
+	for d in $(find "${S}/ext" -type d) ; do
+		RUBYLIB="${RUBYLIB}:$d"
+	done
+	export LD_LIBRARY_PATH RUBYLIB
+
+	# 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*
+
+	if use rubytests; then
+		pushd test
+		insinto /usr/share/${PN}-${SLOT}/test
+		doins -r .
+		popd
+	fi
+}
+
+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(23|24|...)"
+	elog
+}
+
+pkg_postrm() {
+	eselect ruby cleanup
+}