summaryrefslogtreecommitdiff
path: root/dev-ruby
diff options
context:
space:
mode:
Diffstat (limited to 'dev-ruby')
-rw-r--r--dev-ruby/async/Manifest1
-rw-r--r--dev-ruby/async/async-2.26.0.ebuild47
-rw-r--r--dev-ruby/bundler/Manifest1
-rw-r--r--dev-ruby/bundler/bundler-2.7.0.ebuild30
-rw-r--r--dev-ruby/io-console/Manifest1
-rw-r--r--dev-ruby/io-console/io-console-0.8.1.ebuild44
-rw-r--r--dev-ruby/io-wait/Manifest1
-rw-r--r--dev-ruby/io-wait/io-wait-0.3.2.ebuild38
-rw-r--r--dev-ruby/rubygems/Manifest1
-rw-r--r--dev-ruby/rubygems/rubygems-3.7.0.ebuild123
-rw-r--r--dev-ruby/thor/Manifest1
-rw-r--r--dev-ruby/thor/thor-1.4.0.ebuild72
12 files changed, 360 insertions, 0 deletions
diff --git a/dev-ruby/async/Manifest b/dev-ruby/async/Manifest
index febfd75fcfc7..ada7deb25b29 100644
--- a/dev-ruby/async/Manifest
+++ b/dev-ruby/async/Manifest
@@ -1,4 +1,5 @@
DIST async-2.23.1.tar.gz 3943314 BLAKE2B 18f89262e74a2bb0477a75fc7fca0bac446a825791ab5cd8d9ed2f7032cf4207c61b57857f100ab14683cb737f8a1e3bc1d8847ea4a40339b462e3e7e07efc3a SHA512 fa64c5a38c9ff9d87cc3bcc706828f2b4094ee8a747cd5b6b00cdcef3a4220a2c080f11c417b7869df0b708b570de75d46a52e299a87ff1fe3a98b6c6f5a1345
DIST async-2.24.0.tar.gz 3943678 BLAKE2B 3add1d387a6d2eab5105f314264afa3f73b5c39364fa72af3a2f52d2792bdfb7579e1b69a34a89e1debcacf68403157b8828eeb9858da994e8d34ecbe2582499 SHA512 0638b7800b3ca0252f22f108c74afbec113c4ab8b3db427aa6d46f8d0f30cb044b538789c581596bc59ddde3e7d8c117fd3b6516b5556f779b983407a44e0cec
DIST async-2.25.0.tar.gz 3944092 BLAKE2B 2cf1bd3fb38673d31da08f1f8a591d267563571fbdaf844b05cc8a4bd8e4d258c45fb6220dbfe299c25688f8e77acc6b3a164dc0348dcce1beb14ae7fd725aa3 SHA512 7990ef94081185eb119f37c9073ed74ea3c3820c7fdcbcaeffca9216ced84bf4d70740d84914594ce0aa9c8c9e9873d1cb87b43872fc0c87f6eec4792cbce396
+DIST async-2.26.0.tar.gz 3978173 BLAKE2B efda8fb31c84ac5d2d34cb1dd006c6eec82121bd753164649b2da46544e79f0d1c4372245995958a75583381ed77456aadfec99c3af31e89097ee3c8a74d3625 SHA512 aef34e0e94163974ed93f7072c471e07825b89727fc429019a7e4ebf120279117e24885abdb5fc70dda467f7f17bbfd91fce2a3206cf41a2dc42dafcf135a8b9
DIST async-2.8.2.tar.gz 92610 BLAKE2B d120a0b136d6ce2855840576543ec7d50a88da5a78789aa8954faedf3a980a94fecd78bcec79a8abd88767ba336215977d8c2d2439a05840698b6dd989ecc4df SHA512 d43ee9f69eb3ca6ef9af118d45de1410c60d125cb1bd7d8e2c39fd51061d00dad34bcbd1afeb816b9d241a2b793ddc41677ea8e3ee004affcbf12480f89a9c2c
diff --git a/dev-ruby/async/async-2.26.0.ebuild b/dev-ruby/async/async-2.26.0.ebuild
new file mode 100644
index 000000000000..e8be3a8e5359
--- /dev/null
+++ b/dev-ruby/async/async-2.26.0.ebuild
@@ -0,0 +1,47 @@
+# Copyright 2022-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+USE_RUBY="ruby32 ruby33 ruby34"
+
+RUBY_FAKEGEM_RECIPE_TEST="sus"
+RUBY_FAKEGEM_EXTRADOC="readme.md"
+RUBY_FAKEGEM_GEMSPEC="${PN}.gemspec"
+
+inherit ruby-fakegem
+
+DESCRIPTION="A concurrency framework for Ruby"
+HOMEPAGE="https://github.com/socketry/async"
+SRC_URI="https://github.com/socketry/async/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="$(ver_cut 1)"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~riscv ~sparc ~x86"
+
+ruby_add_rdepend "
+ >=dev-ruby/console-1.29:1
+ dev-ruby/fiber-annotation
+ >=dev-ruby/io-event-1.12:1
+ >=dev-ruby/metrics-0.12:0
+ >=dev-ruby/traces-0.15:0
+"
+
+ruby_add_bdepend "test? (
+ dev-ruby/benchmark-ips
+ dev-ruby/sus-fixtures-async
+ dev-ruby/sus-fixtures-console
+ dev-ruby/sus-fixtures-time
+)"
+
+all_ruby_prepare() {
+ sed -i -E 's/require_relative "(.+)"/require File.expand_path("\1")/g' "${RUBY_FAKEGEM_GEMSPEC}" || die
+
+ # network tests
+ rm test/net/http.rb \
+ test/async/scheduler/address.rb \
+ test/async/scheduler/io.rb || die
+
+ # Remove developer-only test configuration
+ rm -f config/sus.rb || die
+}
diff --git a/dev-ruby/bundler/Manifest b/dev-ruby/bundler/Manifest
index 8d21c7322f86..d537a0f832f8 100644
--- a/dev-ruby/bundler/Manifest
+++ b/dev-ruby/bundler/Manifest
@@ -3,3 +3,4 @@ DIST bundler-2.5.23.gem 445440 BLAKE2B b5bc3bd77a20847ce2ef92655faaf41f7b9f4f0d9
DIST bundler-2.6.7.gem 452096 BLAKE2B e2afa57f1cedf8a81b150b1f4b2cf12c327208b12c2021844430508f8a89c6772110205b54c50ceb25855cb3409a256a21af6d19227663a2b5815cc361b284d2 SHA512 fe982cfa32e18869e6227843216482ee842f550bc7c4a89fad15e59272f1411f6360f8d4563ffa36d5240afe060c6526498f24e789f74e8e85a9beb22361c2a2
DIST bundler-2.6.8.gem 452608 BLAKE2B b328a9e43fb3e9f86e6d3c1312630aa96ccd66876845f0c02edea37059419abb0619f701f490f60ea4de40e2700fe3bc9c5fde9b0aae784271a1105c36a92a6e SHA512 668564959440123e7a33c2a15e9a01cc6355753750ee6b08021ae2e356b4effe190fc8023a329e4e1c94ddd6c842856ed38052ec68965c5c9227f18be4ec88a7
DIST bundler-2.6.9.gem 455168 BLAKE2B d8ead41a26bb3483352a5a3d33cf563aa44c1ebf91322dd05fb39dc15260bcdadecf15b846bcf8ea4f04b9b8dbd52fce8cad0bc9cb2f4d85c1801f01b0da17c6 SHA512 fc0668f220f294e39e8286bc43fbb88ed33aa5215b42a74ccd87f5551a1c4fa48e55d53ece22ea9594090fcff50804af2aca93b7b44727a913b89d3c724d5471
+DIST bundler-2.7.0.gem 455680 BLAKE2B 0faa04ac2590ca66f72e27c296375be856d5241702d3745e0260fc61b6aa808394360fb2c614ed75f4ce59218ae6fc04e0cd2bd72edff21450d2614995ee224e SHA512 0807f93575b6661a636464f75ac4f3cb7da666232e6fd2e4e9da5f1e00607e2a863f3bd6f7a2e5b049b5dabcbf4edc1afefca75a536635d4ed8f855463289fe4
diff --git a/dev-ruby/bundler/bundler-2.7.0.ebuild b/dev-ruby/bundler/bundler-2.7.0.ebuild
new file mode 100644
index 000000000000..c9aeff5f50bb
--- /dev/null
+++ b/dev-ruby/bundler/bundler-2.7.0.ebuild
@@ -0,0 +1,30 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+USE_RUBY="ruby32 ruby33 ruby34"
+
+# The specs require a number of gems to be installed in a temporary
+# directory, but this requires network access. They also don't work
+# when run with a path that contains "-".
+RUBY_FAKEGEM_RECIPE_TEST="none"
+
+# No documentation task
+RUBY_FAKEGEM_EXTRADOC="README.md CHANGELOG.md"
+
+RUBY_FAKEGEM_BINDIR="exe"
+
+inherit ruby-fakegem
+
+DESCRIPTION="An easy way to vendor gem dependencies"
+HOMEPAGE="https://github.com/rubygems/rubygems"
+
+LICENSE="MIT"
+SLOT="$(ver_cut 1)"
+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="doc test"
+
+ruby_add_rdepend virtual/rubygems
+
+RDEPEND=" dev-vcs/git"
diff --git a/dev-ruby/io-console/Manifest b/dev-ruby/io-console/Manifest
index e33c99d2e3cf..9c849edc3e7b 100644
--- a/dev-ruby/io-console/Manifest
+++ b/dev-ruby/io-console/Manifest
@@ -1,2 +1,3 @@
DIST io-console-0.7.2.tar.gz 37259 BLAKE2B 22f5f3cfedf477affa1452ce7eab862d49da1943255545f15dd519f7029e61b8747341606ebc1da7bbb020ba5f0ec7e48d08ab000da3b7192cf42ceb601b0b7c SHA512 1dd99c8e9681436a68f39f89f6104a45db2d17092f64985e36a7cd37418831b81f2749922e16ee43a633a90466a8916327a7f21249ceae2f889e70ae596c5b3b
DIST io-console-0.8.0.tar.gz 40484 BLAKE2B 9f03bbb0462ca91c33a8edc824841c03462d6685b0fc80548c09df2c8d563356674663e7e36411baa4ac4ac056562b791dbf8db19704113dea4399549dfd74cd SHA512 c9b5b58b3071497bb3732fceee0c825591797b9a9fd1c60b6a5113162f6fd15d741002988c241c38afb1ca57f38087b78ea8f8a351e187a6f392956802c0d8cd
+DIST io-console-0.8.1.tar.gz 40613 BLAKE2B 2a9fe5318394536d7d892cf93b7a572f85cf7919edf12dc8ff17b61b4180fc5b9881ee703587531a9ccb925f46db394dfa02c9a1c2ceb47eea476cd1209c2c50 SHA512 d7bfed76fd3acc560fc58a7cace8c439ce1d20497c27f3ef5e003173c84b59249221e4400891c6ef52c92499f14cbdb53129faba203dee2fc5817c97d7a3a58d
diff --git a/dev-ruby/io-console/io-console-0.8.1.ebuild b/dev-ruby/io-console/io-console-0.8.1.ebuild
new file mode 100644
index 000000000000..0352f7f35fce
--- /dev/null
+++ b/dev-ruby/io-console/io-console-0.8.1.ebuild
@@ -0,0 +1,44 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+USE_RUBY="ruby32 ruby33 ruby34"
+
+RUBY_FAKEGEM_EXTENSIONS=(ext/io/console/extconf.rb)
+RUBY_FAKEGEM_EXTENSION_LIBDIR="lib/io"
+RUBY_FAKEGEM_EXTRADOC="README.md"
+RUBY_FAKEGEM_GEMSPEC="io-console.gemspec"
+
+inherit ruby-fakegem
+
+DESCRIPTION="add console capabilities to IO instances"
+HOMEPAGE="https://github.com/ruby/io-console"
+SRC_URI="https://github.com/ruby/io-console/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD-2"
+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="test"
+
+ruby_add_bdepend "test? ( dev-ruby/test-unit dev-ruby/test-unit-ruby-core )"
+
+all_ruby_prepare() {
+ sed -e 's/__FILE__/"'${RUBY_FAKEGEM_GEMSPEC}'"/' \
+ -e 's/__dir__/"."/' \
+ -e 's/git ls-files -z/find * -print0/' \
+ -i ${RUBY_FAKEGEM_GEMSPEC} || die
+ sed -e '/task :test/ s:^:#:' -i Rakefile || die
+
+ # Avoid test that require a proper TTY
+ sed -e '/test_\(bad_keyword\|failed_path\)/aomit "requires TTY"' \
+ -i test/io/console/test_io_console.rb || die
+
+ # Remove ruby and ffi files in accordance with the gemspec. These
+ # are only used when using a different ruby engine like jruby.
+ rm -fr lib/io/console.rb lib/io/console/ffi || die
+}
+
+each_ruby_test() {
+ ${RUBY} -Ilib:.:test:test/lib -rhelper -e 'Dir["test/**/test_*.rb"].each{|f| require f}' || die
+}
diff --git a/dev-ruby/io-wait/Manifest b/dev-ruby/io-wait/Manifest
index 41ce79b7cd99..45b1aa4c114f 100644
--- a/dev-ruby/io-wait/Manifest
+++ b/dev-ruby/io-wait/Manifest
@@ -1 +1,2 @@
DIST io-wait-0.3.1.tar.gz 13187 BLAKE2B 2d8e0c8cdd29d01279d5b700cd3cfcb5ab23f651ef5a2be388c2813734636f35a00d478b56ee168fc8a1be43b5ff38bf4ea78ff98abcfe4f95e17c20cf2defa9 SHA512 34cf02e0533c32b781a01e5c3ff987b6463a45a5356180733c06a03280ce7767d1274fe0d47dc9783061d588de83bb080b5cb315e3c3779da30a8562b11871de
+DIST io-wait-0.3.2.tar.gz 14091 BLAKE2B 9372b0c18356a1f53d3612f181e454f066e982971c586e35065968b8418821238a0b384d5d1711a806ffe4a5144a4e665b4e401193b39c7a44e054b1b002f14a SHA512 64b0f0ca3b43bbba04e9b570dfb6d4fdcdb88005044eed61e2786e8ca8b34afc60d6b021f951d20da50e48480d63fed230e8ddc4d23b3dc0954acc476d8b1112
diff --git a/dev-ruby/io-wait/io-wait-0.3.2.ebuild b/dev-ruby/io-wait/io-wait-0.3.2.ebuild
new file mode 100644
index 000000000000..0d928fe7d7dd
--- /dev/null
+++ b/dev-ruby/io-wait/io-wait-0.3.2.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+USE_RUBY="ruby32 ruby33 ruby34"
+
+RUBY_FAKEGEM_BINWRAP=""
+RUBY_FAKEGEM_EXTENSIONS="ext/io/wait/extconf.rb"
+RUBY_FAKEGEM_EXTRADOC="README.md"
+RUBY_FAKEGEM_GEMSPEC="io-wait.gemspec"
+
+inherit ruby-fakegem
+
+DESCRIPTION="Waits until IO is readable or writable without blocking"
+HOMEPAGE="https://github.com/ruby/io-wait"
+SRC_URI="https://github.com/ruby/io-wait/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
+
+ruby_add_bdepend "test? ( dev-ruby/test-unit dev-ruby/test-unit-ruby-core )"
+
+all_ruby_prepare() {
+ sed -e 's/__FILE__/"'${RUBY_FAKEGEM_GEMSPEC}'"/' \
+ -e 's/git ls-files -z/find * -print0/' \
+ -i ${RUBY_FAKEGEM_GEMSPEC} || die
+ sed -e '/task :test/ s:^:#:' -i Rakefile || die
+
+ # Avoid tests that require a working console
+ sed -e '/test_wait_mask_\(negative\|readable\|writable\|zero\)/aomit("Requires working console")' \
+ -i test/io/wait/test_io_wait.rb || die
+}
+
+each_ruby_test() {
+ ${RUBY} -Ilib:.:test:test/lib -rhelper -e 'Dir["test/**/test_*.rb"].each{|f| require f}' || die
+}
diff --git a/dev-ruby/rubygems/Manifest b/dev-ruby/rubygems/Manifest
index a8c214359d17..530c20501f09 100644
--- a/dev-ruby/rubygems/Manifest
+++ b/dev-ruby/rubygems/Manifest
@@ -3,3 +3,4 @@ DIST rubygems-3.5.23.tar.gz 13176890 BLAKE2B 45fa342eb10e4ea19122bef523771bcc786
DIST rubygems-3.6.7.tar.gz 12955693 BLAKE2B 9cd6d418a810a5e89b0ab66ce1638f6d4f7e5b141be9b6e0c2f2f69dbac858f059170f8dd5dbd7d08a18aaa5bb7a56eaeed4dc30b1a198562ace977cde93f7b6 SHA512 521c2649604e36ff9396f6d1e0ad692d9f3cf0e11cc417d62a7afefdd5e7e5cc370bf9c02200b7e23c199787e9f049e5e9a74778599c71c183e369bd21638b5b
DIST rubygems-3.6.8.tar.gz 12956057 BLAKE2B 557b3b28fde02cc6295b7fb948404ee67f09e73635b7bf1c1534b73c96dc02f4880eaa9d2e0b170363ed853f94eca92bff078282b88e27b1ceaed854543edd1c SHA512 36ddb87d92d4f36d0f23635dd847be0d4dd28d4c6a4600310563cd6d63cd7ddf97dd0f18b705c8a8f348d3da7415dcf5fe2b3901e445b9a7c8f1e32b9f0c8aff
DIST rubygems-3.6.9.tar.gz 12962190 BLAKE2B 17fe697504270bfa1a2fe9489f01c86441ab61b286af26eac840d7fc0b733beb207a658edcb889627798bd78ca16f2f0e8d0187a05e1f0da6248ccf9643760de SHA512 cf6251c86035838bf61831aa31033e4c80e1da12ad03c21627ef79bbbd0268a2ba26194ccef045bbeb2a0591736182fb0e77f388256a0158fa16e3f2b71723ed
+DIST rubygems-3.7.0.tar.gz 12975794 BLAKE2B 99c542fe80446634f7a85c160b752a24aeabea0692d9f391c7ba0fdb60918ecac9ddec608899e91bf80a8edd67ea784448e15f62ddc729e753e89ac9490dbd0a SHA512 622ae1e4362f3eb586fc95805a015b0f06629dbd30ebbf0292869b0ad8c07605e53e7b08f77f2888cc20b6be1f471fcea5f3298ddc871a637e798b5c08bc6a4e
diff --git a/dev-ruby/rubygems/rubygems-3.7.0.ebuild b/dev-ruby/rubygems/rubygems-3.7.0.ebuild
new file mode 100644
index 000000000000..d73ab1ca7d01
--- /dev/null
+++ b/dev-ruby/rubygems/rubygems-3.7.0.ebuild
@@ -0,0 +1,123 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+USE_RUBY="ruby32 ruby33 ruby34"
+
+inherit ruby-ng prefix
+
+DESCRIPTION="Centralized Ruby extension management system"
+HOMEPAGE="https://rubygems.org/"
+
+SRC_URI="https://github.com/rubygems/rubygems/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+LICENSE="|| ( Ruby MIT )"
+
+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="server test"
+RESTRICT="!test? ( test )"
+
+PDEPEND="server? ( =dev-ruby/builder-3* )"
+
+ruby_add_depend "virtual/ruby-ssl"
+
+ruby_add_bdepend "
+ test? (
+ dev-ruby/json
+ dev-ruby/minitest:5
+ dev-ruby/rake
+ dev-ruby/rdoc
+ dev-ruby/test-unit
+ dev-ruby/webrick
+ )"
+
+all_ruby_prepare() {
+ # Remove unpackaged automatiek from Rakefile which stops it from working
+ sed -i -e '/automatiek/ s:^:#:' -e '/Automatiek/,/^end/ s:^:#:' Rakefile || die
+
+ mkdir -p lib/rubygems/defaults || die
+ cp "${FILESDIR}/gentoo-defaults-5.rb" lib/rubygems/defaults/operating_system.rb || die
+
+ eprefixify lib/rubygems/defaults/operating_system.rb
+
+ # Disable broken tests when changing default values:
+ sed -i -e '/test_default_path/,/^ end/ s:^:#:' test/rubygems/test_gem.rb || die
+ sed -e '/test_initialize_\(path_with_defaults\|regexp_path_separator\)/aomit "gentoo"' \
+ -i test/rubygems/test_gem_path_support.rb || die
+ # Avoid test that won't work as json is also installed as plain ruby code
+ sed -i -e '/test_realworld_\(\|upgraded_\)default_gem/aomit "gentoo"' test/rubygems/test_require.rb || die
+
+ # Avoid test that requires additional utility scripts
+ rm -f test/test_changelog_generator.rb || die
+
+ # Avoid tests that require a network connection (for crates.io or other downloads)
+ rm -f test/rubygems/test_gem_ext_cargo_builder.rb || die
+ sed -e '/test_gem_exec_gem_uninstall/aomit "requires network"' \
+ -i test/rubygems/test_gem_commands_exec_command.rb || die
+
+ # Avoid tests with newer rdoc versions. These tests have been disabled upstream.
+ sed -e '/test_execute_rdoc/aomit "no longer needed with rdoc 6.9.0"' \
+ -i test/rubygems/test_gem_commands_{install,update}_command.rb || die
+
+ # Update manifest after changing files to avoid a test failure. Set
+ # RUBYLIB to ensure that we consistently use the new code for
+ # rubygems and the bundled bundler.
+ if use test; then
+ ruby -I lib -S rake update_manifest || die
+ fi
+}
+
+each_ruby_compile() {
+ # Not really a build but...
+ sed -i -e 's:#!.*:#!'"${RUBY}"':' exe/gem
+}
+
+each_ruby_test() {
+ # Unset RUBYOPT to avoid interferences, bug #158455 et. al.
+ #unset RUBYOPT
+
+ if [[ "${EUID}" -ne "0" ]]; then
+ RUBYLIB="$(pwd)/lib${RUBYLIB+:${RUBYLIB}}" ${RUBY} --disable-gems -I.:lib:test:bundler/lib \
+ -e 'require "rubygems"; gem "minitest", "~>5.0"; Dir["test/**/test_*.rb"].each { require _1 }' || die "tests failed"
+ else
+ ewarn "The userpriv feature must be enabled to run tests, bug 408951."
+ eerror "Testsuite will not be run."
+ fi
+}
+
+each_ruby_install() {
+ # Unset RUBYOPT to avoid interferences, bug #158455 et. al.
+ unset RUBYOPT
+ export RUBYLIB="$(pwd)/lib${RUBYLIB+:${RUBYLIB}}"
+
+ pushd lib &>/dev/null
+ doruby -r *
+ popd &>/dev/null
+
+ local sld=$(ruby_rbconfig_value 'sitelibdir')
+ insinto "${sld#${EPREFIX}}" # bug #320813
+ newins "${FILESDIR}/auto_gem.rb.ruby19" auto_gem.rb
+
+ newbin exe/gem $(basename ${RUBY} | sed -e 's:ruby:gem:')
+}
+
+all_ruby_install() {
+ dodoc CHANGELOG.md README.md
+
+ if use server; then
+ newinitd "${FILESDIR}/init.d-gem_server2" gem_server
+ newconfd "${FILESDIR}/conf.d-gem_server" gem_server
+ fi
+}
+
+pkg_postinst() {
+ if [[ ! -n $(readlink "${ROOT}"/usr/bin/gem) ]] ; then
+ eselect ruby set $(eselect --brief --colour=no ruby show | head -n1)
+ fi
+
+ ewarn
+ ewarn "To switch between available Ruby profiles, execute as root:"
+ ewarn "\teselect ruby set ruby(30|31|...)"
+ ewarn
+}
diff --git a/dev-ruby/thor/Manifest b/dev-ruby/thor/Manifest
index dd13a1e4b669..036f8b763dd8 100644
--- a/dev-ruby/thor/Manifest
+++ b/dev-ruby/thor/Manifest
@@ -1 +1,2 @@
DIST thor-git-1.3.2.tgz 103619 BLAKE2B 31c23b549a79ec796d0de40c392d32a2621106ad44ffb0389358fbdb170b283867ab544c5f6bcfd437da0396a3193ff4b93100eee5c446c01760f07be73e2b79 SHA512 fb2aff3cf8c14f1a8b38db77579e4b27292f9578c7abf8fb892da888bee7e24412c4bdbf85ce9e43982348f72e038cacc856500268fc204e44fa61f3f9405c32
+DIST thor-git-1.4.0.tgz 102880 BLAKE2B 94a8973f62d683be6c7089798be3ad3f3b90c2fe6aa391a28624f3672d83bb1b95865aa7c0719aec7f01481c5c0826ae94b92c146131f8f7c2f5227e1376fc1f SHA512 6f1fe42212583be1fc963c852524795967a725eac65d27a8597b81d52ba22ea35ab0ea69e37df2a81c0280957444851be45861ba86f90cd0c794c0151ea84fd4
diff --git a/dev-ruby/thor/thor-1.4.0.ebuild b/dev-ruby/thor/thor-1.4.0.ebuild
new file mode 100644
index 000000000000..afab77eb22d9
--- /dev/null
+++ b/dev-ruby/thor/thor-1.4.0.ebuild
@@ -0,0 +1,72 @@
+# Copyright 2000-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+USE_RUBY="ruby32 ruby33 ruby34"
+
+RUBY_FAKEGEM_RECIPE_TEST="rspec3"
+RUBY_FAKEGEM_DOCDIR="rdoc"
+RUBY_FAKEGEM_EXTRADOC="README.md"
+RUBY_FAKEGEM_BINWRAP="thor"
+
+RUBY_FAKEGEM_GEMSPEC="thor.gemspec"
+
+inherit ruby-fakegem
+
+DESCRIPTION="Simple and efficient tool for building self-documenting command line utilities"
+HOMEPAGE="http://whatisthor.com/"
+SRC_URI="https://github.com/rails/${PN}/archive/v${PV}.tar.gz -> ${PN}-git-${PV}.tgz"
+
+LICENSE="MIT"
+SLOT="$(ver_cut 1)"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux"
+IUSE="doc"
+
+# For initial target porting (new rubies), we can make these test deps
+# conditional with:
+# 1. USE_RUBY="<old rubies>" ruby_add_bdepend ...
+# 2. skip logic in each_ruby_test
+USE_RUBY="ruby32 ruby33 ruby34" ruby_add_bdepend "
+ test? (
+ dev-ruby/childlabor
+ dev-ruby/webmock
+ )"
+
+all_ruby_prepare() {
+ # Remove rspec default options (as we might not have the last
+ # rspec).
+ rm .rspec || die
+
+ # Remove Bundler
+ #rm Gemfile || die
+ sed -i -e '/[Bb]undler/d' Thorfile || die
+
+ # Remove mandatory coverage collection using simplecov which is not
+ # packaged.
+ sed -i -e '/require "simplecov"/,/^end/ s:^:#:' spec/helper.rb || die
+
+ # Avoid a spec that requires UTF-8 support, so LANG=C still works,
+ # bug 430402
+ #sed -i -e '/uses maximum terminal width/,/end/ s:^:#:' spec/shell/basic_spec.rb || die
+
+ # Avoid specs depending on git, bug 724058
+ rm -f spec/quality_spec.rb || die
+
+ # Avoid currently broken readline specs (already fixed upstream)
+ rm -f spec/line_editor/readline_spec.rb spec/line_editor_spec.rb || die
+
+ # Avoid spec failing on whitespace difference in error message
+ sed -i -e '/raises an error for unknown switches/askip "whitespace differences"' spec/parser/options_spec.rb || die
+}
+
+each_ruby_test() {
+ case ${RUBY} in
+ *ruby35)
+ einfo "Skipping tests due to circular dependencies"
+ ;;
+ *)
+ RSPEC_VERSION=3 ruby-ng_rspec spec || die
+ ;;
+ esac
+}