summaryrefslogtreecommitdiff
path: root/dev-ruby
diff options
context:
space:
mode:
Diffstat (limited to 'dev-ruby')
-rw-r--r--dev-ruby/Manifest.gzbin110475 -> 112243 bytes
-rw-r--r--dev-ruby/async-container/Manifest3
-rw-r--r--dev-ruby/async-container/async-container-0.16.12.ebuild39
-rw-r--r--dev-ruby/async-container/metadata.xml11
-rw-r--r--dev-ruby/async-io/Manifest3
-rw-r--r--dev-ruby/async-io/async-io-1.34.0.ebuild32
-rw-r--r--dev-ruby/async-io/metadata.xml11
-rw-r--r--dev-ruby/async-rspec/Manifest3
-rw-r--r--dev-ruby/async-rspec/async-rspec-1.16.1.ebuild34
-rw-r--r--dev-ruby/async-rspec/metadata.xml11
-rw-r--r--dev-ruby/async/Manifest5
-rw-r--r--dev-ruby/async/async-1.30.3.ebuild40
-rw-r--r--dev-ruby/async/async-2.1.0.ebuild40
-rw-r--r--dev-ruby/async/metadata.xml11
-rw-r--r--dev-ruby/console/Manifest3
-rw-r--r--dev-ruby/console/console-1.15.3.ebuild28
-rw-r--r--dev-ruby/console/metadata.xml11
-rw-r--r--dev-ruby/ffi-compiler/Manifest2
-rw-r--r--dev-ruby/ffi-compiler/ffi-compiler-1.0.1-r2.ebuild22
-rw-r--r--dev-ruby/ffi-compiler/files/respect-cflags.patch17
-rw-r--r--dev-ruby/ffi/Manifest3
-rw-r--r--dev-ruby/ffi/ffi-1.15.5-r1.ebuild71
-rw-r--r--dev-ruby/ffi/files/backport-pr-962.patch48
-rw-r--r--dev-ruby/ffi/files/pr-957-sparc.patch42
-rw-r--r--dev-ruby/fiber-local/Manifest3
-rw-r--r--dev-ruby/fiber-local/fiber-local-1.0.0.ebuild25
-rw-r--r--dev-ruby/fiber-local/metadata.xml11
-rw-r--r--dev-ruby/http/Manifest2
-rw-r--r--dev-ruby/http/http-5.1.0.ebuild59
-rw-r--r--dev-ruby/io-event/Manifest3
-rw-r--r--dev-ruby/io-event/io-event-1.0.9.ebuild31
-rw-r--r--dev-ruby/io-event/metadata.xml11
-rw-r--r--dev-ruby/llhttp-ffi/Manifest3
-rw-r--r--dev-ruby/llhttp-ffi/llhttp-ffi-0.4.0.ebuild40
-rw-r--r--dev-ruby/llhttp-ffi/metadata.xml11
-rw-r--r--dev-ruby/rack-test/Manifest5
-rw-r--r--dev-ruby/rack-test/files/backport-b1084c1-issue-323.patch29
-rw-r--r--dev-ruby/rack-test/rack-test-1.1.0-r1.ebuild2
-rw-r--r--dev-ruby/rack-test/rack-test-2.0.2.ebuild2
-rw-r--r--dev-ruby/rspec-files/Manifest3
-rw-r--r--dev-ruby/rspec-files/metadata.xml11
-rw-r--r--dev-ruby/rspec-files/rspec-files-1.1.2.ebuild26
-rw-r--r--dev-ruby/rspec-memory/Manifest3
-rw-r--r--dev-ruby/rspec-memory/metadata.xml11
-rw-r--r--dev-ruby/rspec-memory/rspec-memory-1.0.3.ebuild26
-rw-r--r--dev-ruby/sinatra/Manifest4
-rw-r--r--dev-ruby/sinatra/files/backport-pr-1519.patch122
-rw-r--r--dev-ruby/sinatra/sinatra-2.2.0-r1.ebuild38
-rw-r--r--dev-ruby/sinatra/sinatra-2.2.1.ebuild6
-rw-r--r--dev-ruby/sus/Manifest3
-rw-r--r--dev-ruby/sus/metadata.xml11
-rw-r--r--dev-ruby/sus/sus-0.13.0.ebuild28
52 files changed, 1014 insertions, 5 deletions
diff --git a/dev-ruby/Manifest.gz b/dev-ruby/Manifest.gz
index bc1eb8e24a57..baa0d313cda8 100644
--- a/dev-ruby/Manifest.gz
+++ b/dev-ruby/Manifest.gz
Binary files differ
diff --git a/dev-ruby/async-container/Manifest b/dev-ruby/async-container/Manifest
new file mode 100644
index 000000000000..59f443773ea5
--- /dev/null
+++ b/dev-ruby/async-container/Manifest
@@ -0,0 +1,3 @@
+DIST async-container-0.16.12.tar.gz 22626 BLAKE2B 8e850ebededcc0110a8ddf79c23287d816973fee1c32b7e7b76a7158995ffca5476d8701b3b4499aa3c0fd023ee9f253e4d07bc9ad0562a32d529678d0569701 SHA512 d71bdd1dc22a7ebecd4fed7e17b28c9ae1c875e111db4fb9cddda3508113e3cb7fc72b820c447cac27f047606d20f62180b203e58164da18dc47cff385262441
+EBUILD async-container-0.16.12.ebuild 1259 BLAKE2B f75dd8b3baad6753e5be739ae1e1547675a07b7e534e0cfc7585c0681ff602192a458779b653a1cb4ff25aa58f173d4717a651d6862683d22f0bc41c9be8bf2b SHA512 91f62615f2043c8c7103a7f937a0cf3e847173364ac83178b5f7983d11afb441a3bcb045aa11205b5535edb9e8bba2bead1842654a0b2952cd9d5acea9f5aa24
+MISC metadata.xml 351 BLAKE2B 671a90bb6d0e6ee6c41c96beaefba1bf84f236b557c8116d8489da01f034edbd3a122063df64a85c587cc114455b9d9e00404307d1539c8fd8e79c781297e337 SHA512 402376317da59de4bc9f10422743898870efb6f9429ba07fc37861e3c4752b4ef2197051b81bef300d07279c6bf55f9c5796a5b5c84cab8dcaef9a07537ff725
diff --git a/dev-ruby/async-container/async-container-0.16.12.ebuild b/dev-ruby/async-container/async-container-0.16.12.ebuild
new file mode 100644
index 000000000000..bacc76a095b5
--- /dev/null
+++ b/dev-ruby/async-container/async-container-0.16.12.ebuild
@@ -0,0 +1,39 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+USE_RUBY="ruby26 ruby27 ruby30 ruby31"
+RUBY_FAKEGEM_RECIPE_TEST="rspec3"
+RUBY_FAKEGEM_EXTRADOC="README.md"
+RUBY_FAKEGEM_GEMSPEC="${PN}.gemspec"
+inherit ruby-fakegem
+
+DESCRIPTION="Abstract container-based parallelism using threads and processes"
+HOMEPAGE="https://github.com/socketry/async-container"
+SRC_URI="https://github.com/socketry/async-container/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="$(ver_cut 1)/$(ver_cut 1-2)"
+KEYWORDS="~amd64 ~sparc"
+IUSE=""
+
+ruby_add_rdepend "dev-ruby/async
+ dev-ruby/async-io"
+
+ruby_add_bdepend "test? (
+ dev-ruby/bundler
+ >=dev-ruby/async-rspec-1.1:1
+)"
+
+all_ruby_prepare() {
+ sed -i -E 's/require_relative "(.+)"/require File.expand_path("\1")/g' "${RUBY_FAKEGEM_GEMSPEC}" || die
+
+ # spec/async/container/notify/pipe_spec.rb directly executes "bundler" command,
+ # so we can't just wipe out gems.rb as usual. also must remove covered from gemspec
+ # for this reason.
+ sed -i -E 's/gem ".+"//g' "gems.rb" || die
+ sed -i -E 's/spec.add_development_dependency "covered"//g' "${RUBY_FAKEGEM_GEMSPEC}" || die
+
+ sed -i -E 's/require '"'"'covered\/rspec'"'"'//g' "spec/spec_helper.rb" || die
+}
diff --git a/dev-ruby/async-container/metadata.xml b/dev-ruby/async-container/metadata.xml
new file mode 100644
index 000000000000..4f03304084d0
--- /dev/null
+++ b/dev-ruby/async-container/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>ruby@gentoo.org</email>
+ <name>Gentoo Ruby Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">socketry/async-container</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/dev-ruby/async-io/Manifest b/dev-ruby/async-io/Manifest
new file mode 100644
index 000000000000..3ae333f7f621
--- /dev/null
+++ b/dev-ruby/async-io/Manifest
@@ -0,0 +1,3 @@
+DIST async-io-1.34.0.tar.gz 34147 BLAKE2B 85cb79423bcbcc45e7c3f703d5ce7866522e66c55f866a0545369b65eda9c8a4b5637eaeeb7e17a5a8ee7256c6a991871dbb96244e4647fa19f8f027fad37961 SHA512 d35389ebfb748ea1c44f4a7ea7707511e32d40e98ae3fd7e8a5b22fdbb5f8f5a00933ec48346e2ed44c679ee6121a6fdf980c8ee6a1da609fb7571abb703aa02
+EBUILD async-io-1.34.0.ebuild 938 BLAKE2B 226169bac443a6edd3844f1efd35293d0bc7973826949d7eab3641aa702d00049c360c29bd485f878eda57bf34ea86b100efeb17f9f1f3aecd9d416b9d85fd7c SHA512 4bc7a2b34403b937c6ef90024dfa2f5b8709b9e7698bf794416f6136bf6f2f3c756126a283790057a4796bddf9437cfec07ca5c250e839c832657617bbc1a728
+MISC metadata.xml 344 BLAKE2B 7fb67688ba60d30637605ba7a2020cb328e18ffebd9fd6fed09114cc14596836b0dcc4d1590fd3755952baa52c258bdb9a935c47b1a4ef4f2d5e545e931d40fe SHA512 6ea960fe1feb969df78e66ae985b6ac95faa09a248d694aaa47876634f84a09a3807effc2b4289d35dbeaee3793c2c73276fd0f8b87375ab99e813085edd12af
diff --git a/dev-ruby/async-io/async-io-1.34.0.ebuild b/dev-ruby/async-io/async-io-1.34.0.ebuild
new file mode 100644
index 000000000000..75b432695d8b
--- /dev/null
+++ b/dev-ruby/async-io/async-io-1.34.0.ebuild
@@ -0,0 +1,32 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+USE_RUBY="ruby26 ruby27 ruby30 ruby31"
+RUBY_FAKEGEM_RECIPE_TEST="rspec3"
+RUBY_FAKEGEM_EXTRA_DOC="README.md"
+RUBY_FAKEGEM_GEMSPEC="${PN}.gemspec"
+inherit ruby-fakegem
+
+DESCRIPTION="Provides support for asynchonous TCP, UDP, UNIX and SSL sockets"
+HOMEPAGE="https://github.com/socketry/async-io"
+SRC_URI="https://github.com/socketry/async-io/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="$(ver_cut 1)/$(ver_cut 1-2)"
+KEYWORDS="~amd64 ~sparc"
+IUSE=""
+
+ruby_add_rdepend "dev-ruby/async"
+
+ruby_add_bdepend "test? (
+ >=dev-ruby/async-container-0.15:0
+ >=dev-ruby/async-rspec-1.10:1
+ dev-ruby/rack-test
+)"
+
+all_ruby_prepare() {
+ sed -i -E 's/require_relative "(.+)"/require File.expand_path("\1")/g' "${RUBY_FAKEGEM_GEMSPEC}" || die
+ sed -i -E 's/require '"'"'covered\/rspec'"'"'//g' "spec/spec_helper.rb" || die
+}
diff --git a/dev-ruby/async-io/metadata.xml b/dev-ruby/async-io/metadata.xml
new file mode 100644
index 000000000000..2b591f89a8e8
--- /dev/null
+++ b/dev-ruby/async-io/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>ruby@gentoo.org</email>
+ <name>Gentoo Ruby Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">socketry/async-io</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/dev-ruby/async-rspec/Manifest b/dev-ruby/async-rspec/Manifest
new file mode 100644
index 000000000000..40d9c0b4eb2a
--- /dev/null
+++ b/dev-ruby/async-rspec/Manifest
@@ -0,0 +1,3 @@
+DIST async-rspec-1.16.1.tar.gz 7775 BLAKE2B a1ff314fbe3e42b9b25e1c891bf1a336644fa5183b6f504b06e0747c127e712a66a0fbb2f18695bd7cba91ec8a4e8af887a25fe3e9887f86fb5f17873e26f51f SHA512 5c2bc5cf5ff4ca25cad67e251b5e078ac9f6f2d0f5d50f67584d4a043040c4e9e9e51d3a9e2727f08de3eba39d46be66461e691af8b86e173d8b70b589161a29
+EBUILD async-rspec-1.16.1.ebuild 946 BLAKE2B 61ab59840ce19e6eccb9e5a68beaa2525183da67c4efa4d117dfe8f1ea7d1008db9b3a3821d7e4ea8359e09f371d4bcc8f18557bd242371fcb05d5612aa034f8 SHA512 91462ae9b56499dfb1c74f5ce5536770526cf0a16fcd08ac5ffcac8095a2b8a3d63c6f7ea23647706ef21ac93caf8217086d0401747ac7c6d6ef9a34bbe0a6fd
+MISC metadata.xml 347 BLAKE2B d18d791313af87bcb00267fa7886d513738c127ca281e4e3f2eca2d3a345748097016ee229ea663efae9980d5fee97d27b800923021e682a9a9bb28bd031c0a5 SHA512 6396202046253385c58f6b5d1762800d596027e1d7ad7e95d69695023dacffa0bd32f2d0efa396fafd5e65bafd55376018f27e127752d5109f537339ac06584f
diff --git a/dev-ruby/async-rspec/async-rspec-1.16.1.ebuild b/dev-ruby/async-rspec/async-rspec-1.16.1.ebuild
new file mode 100644
index 000000000000..c920dff8061b
--- /dev/null
+++ b/dev-ruby/async-rspec/async-rspec-1.16.1.ebuild
@@ -0,0 +1,34 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+USE_RUBY="ruby26 ruby27 ruby30 ruby31"
+RUBY_FAKEGEM_RECIPE_TEST="rspec3"
+RUBY_FAKEGEM_EXTRADOC="README.md"
+RUBY_FAKEGEM_GEMSPEC="${PN}.gemspec"
+inherit ruby-fakegem
+
+DESCRIPTION="Helpers for writing specs against the async gem"
+HOMEPAGE="https://github.com/socketry/async-rspec"
+SRC_URI="https://github.com/socketry/async-rspec/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="$(ver_cut 1)/$(ver_cut 1-2)"
+KEYWORDS="~amd64 ~sparc"
+IUSE=""
+
+ruby_add_rdepend ">=dev-ruby/rspec-3.0:3
+ >=dev-ruby/rspec-files-1.0:1
+ >=dev-ruby/rspec-memory-1.0:1
+"
+
+ruby_add_bdepend "test? (
+ dev-ruby/async
+ dev-ruby/async-io
+)"
+
+all_ruby_prepare() {
+ sed -i -E 's/require_relative "(.+)"/require File.expand_path("\1")/g' "${RUBY_FAKEGEM_GEMSPEC}" || die
+ sed -i -E 's/require '"'"'covered\/rspec'"'"'//g' "spec/spec_helper.rb" || die
+}
diff --git a/dev-ruby/async-rspec/metadata.xml b/dev-ruby/async-rspec/metadata.xml
new file mode 100644
index 000000000000..e5fb9fc23587
--- /dev/null
+++ b/dev-ruby/async-rspec/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>ruby@gentoo.org</email>
+ <name>Gentoo Ruby Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">socketry/async-rspec</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/dev-ruby/async/Manifest b/dev-ruby/async/Manifest
new file mode 100644
index 000000000000..37e07817bd76
--- /dev/null
+++ b/dev-ruby/async/Manifest
@@ -0,0 +1,5 @@
+DIST async-1.30.3.tar.gz 92599 BLAKE2B 69db66676adf2dd0f77142bffc55b1e90a6983c53c7fac444f72b9365f6907e4d2ec45579ea267f3a8f31fc45af63c3517908c353749b288d1873e2cf720f96b SHA512 337a51ca8fd0e6685528e2eca9b584344ba583f7254f2600110ee62da6e4ccabeb471e7d94f36ab6f8d0eb3eada9e23335a262a50c8d035f67708fce0a590e5e
+DIST async-2.1.0.tar.gz 75110 BLAKE2B 6226cd64f62d42a57d46f1c31287e403af5c645343a2de899a090f986e2b669dc96f1019629cf32ed46809fbfcbb5716375ef4560358676759dcad0e17d02849 SHA512 85f02004f7851757425f6e30c364ad9cb52ac4ad4559fa3a4a9b933fc5df1f10f6975233df6057da479dc28b5188d9e6d0b70e215a4a99b7864938260571089c
+EBUILD async-1.30.3.ebuild 1167 BLAKE2B 70b6c57bd9e265ef7567bebcaac567db362ea298507c553e4538d463b903ae29982b388dda34a4b87810f93055db914afc7785a3bad216000d390bba1e19cf4f SHA512 ce75d8a5673b082e77c380b98c009bdeb072aca85b7aa1a2500e50eee7252647ceb74fe7d4f01e84ffc35f88ccc48133efd9dad446442a71c358ff9db30bbde5
+EBUILD async-2.1.0.ebuild 1043 BLAKE2B a6f3405645f902b9056cdba8e348b2e3b324bd77ada85e7d1ad055b8ac74fd7b32fb7f39f38c8194263091c68dce616dabf29cb1058c375745c0eebee8249bd9 SHA512 a7ebe894207e53747527918f738e93557829b1ebc6902b815106a012e5a254b87b80bcf950b15f0f4e1de78f77efc2e13230f53409d19ee3730ca7157f7e4270
+MISC metadata.xml 341 BLAKE2B acbe731aefbd211b23790c22ed97fbc1f83c45cf5ed786aa99fedafa5ca930081e71b3466584846f6e2f7a793da65c82bb4c9c85c15a669ebf5e7db47b74836f SHA512 d96626a4c34ef4981c11dcd07f51a9940d29b2bd8013868f3e5778d2f62a59bf3ca864a370a4d7951ca98079d6d5939d9aa9a4f4ed0233ec5f7fe544fa64fa26
diff --git a/dev-ruby/async/async-1.30.3.ebuild b/dev-ruby/async/async-1.30.3.ebuild
new file mode 100644
index 000000000000..f4164212833c
--- /dev/null
+++ b/dev-ruby/async/async-1.30.3.ebuild
@@ -0,0 +1,40 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+USE_RUBY="ruby26 ruby27 ruby30 ruby31"
+RUBY_FAKEGEM_RECIPE_TEST="rspec3"
+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/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="$(ver_cut 1)/$(ver_cut 1-2)"
+KEYWORDS="~amd64 ~sparc"
+IUSE=""
+
+ruby_add_rdepend ">=dev-ruby/console-1.10:1
+ >=dev-ruby/nio4r-2.3:2
+ >=dev-ruby/timers-4.1:4"
+
+ruby_add_bdepend "test? (
+ >=dev-ruby/async-rspec-1.1:1
+ dev-ruby/benchmark-ips
+)"
+
+all_ruby_prepare() {
+ sed -i -E 's/require_relative "(.+)"/require File.expand_path("\1")/g' "${RUBY_FAKEGEM_GEMSPEC}" || die
+
+ # network tests
+ rm -f "spec/async/scheduler_spec.rb" "spec/async/scheduler/address_spec.rb" "spec/async/scheduler/io_spec.rb" || die
+
+ # broken on ruby 3.x
+ rm -f "spec/async/condition_spec.rb" "spec/async/notification_spec.rb" || die
+
+ sed -i -E 's/require '"'"'covered\/rspec'"'"'//g' "spec/spec_helper.rb" || die
+}
diff --git a/dev-ruby/async/async-2.1.0.ebuild b/dev-ruby/async/async-2.1.0.ebuild
new file mode 100644
index 000000000000..07e5ba91db6c
--- /dev/null
+++ b/dev-ruby/async/async-2.1.0.ebuild
@@ -0,0 +1,40 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+USE_RUBY="ruby31"
+RUBY_FAKEGEM_RECIPE_TEST="rspec3"
+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/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="$(ver_cut 1)"
+KEYWORDS="~amd64 ~sparc"
+IUSE=""
+
+ruby_add_rdepend ">=dev-ruby/console-1.10:1
+ >=dev-ruby/io-event-1.0.0:1/1.0
+ >=dev-ruby/timers-4.1:4"
+
+ruby_add_bdepend "test? (
+ >=dev-ruby/async-rspec-1.1:1
+ dev-ruby/benchmark-ips
+)"
+
+all_ruby_prepare() {
+ sed -i -E 's/require_relative "(.+)"/require File.expand_path("\1")/g' "${RUBY_FAKEGEM_GEMSPEC}" || die
+
+ # network tests
+ rm -f \
+ "spec/net/http_spec.rb" \
+ "spec/async/scheduler/address_spec.rb" \
+ "spec/async/scheduler/io_spec.rb" || die
+
+ sed -i -E 's/require '"'"'covered\/rspec'"'"'//g' "spec/spec_helper.rb" || die
+}
diff --git a/dev-ruby/async/metadata.xml b/dev-ruby/async/metadata.xml
new file mode 100644
index 000000000000..c7864b34a68a
--- /dev/null
+++ b/dev-ruby/async/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>ruby@gentoo.org</email>
+ <name>Gentoo Ruby Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">socketry/async</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/dev-ruby/console/Manifest b/dev-ruby/console/Manifest
new file mode 100644
index 000000000000..b43d8b217364
--- /dev/null
+++ b/dev-ruby/console/Manifest
@@ -0,0 +1,3 @@
+DIST console-1.15.3.tar.gz 23089 BLAKE2B 8387b0dc8ee84df3ce930ef79fcfec9e9b947b946770535beeb16fe58496c30134862b6a3fb48a842b321ab2ec493b1e4f9ec3462bdce04aa35066672ee55699 SHA512 c1d7fc987f3f6df3506c85c64d3c93b3eae6b5eca64ac7de2cf7cc0cb5572c102ebd6909d993d9d683081063ff8b7f2de46fefa255491adc47b88f13ff24ea67
+EBUILD console-1.15.3.ebuild 892 BLAKE2B 4b3904f0df21db4022c7ab237fa63d7c62952d047b26ff23b4f81ae166d1fb5219e0cd4b5419400c97ca1d9b1ec582bc0263cf2c1f743a0ef3c810c7182b6926 SHA512 97b8df7c016ca185248771bbdc519f383b165e602a32127ff5384db02224d6711899c02d3264d845cf23239a34eda56b7de0be8aafbf2932da9c1c87f007ff98
+MISC metadata.xml 343 BLAKE2B 949f3fccd0b08a5699c083eb21c119af6104cd470fe4f22f2771f5262eddf9a9819a630146ef4cf0636d52be9cca982ab73fd4443e1fb0f4ae77b5223949ed38 SHA512 f243fe8cf5c9d29a4c4f95cd9bce18f8a0ca191b7c62c1644c0b4ec4f4d14d355bc0b564a571b057eb42960997958157bca027b86917a2c43d6ec651f1804302
diff --git a/dev-ruby/console/console-1.15.3.ebuild b/dev-ruby/console/console-1.15.3.ebuild
new file mode 100644
index 000000000000..f6370717fffc
--- /dev/null
+++ b/dev-ruby/console/console-1.15.3.ebuild
@@ -0,0 +1,28 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+USE_RUBY="ruby26 ruby27 ruby30 ruby31"
+RUBY_FAKEGEM_RECIPE_TEST="rspec3"
+RUBY_FAKEGEM_EXTRADOC="README.md"
+RUBY_FAKEGEM_GEMSPEC="${PN}.gemspec"
+inherit ruby-fakegem
+
+DESCRIPTION="Beautiful logging for Ruby"
+HOMEPAGE="https://github.com/socketry/console"
+SRC_URI="https://github.com/socketry/console/archive/fc6ecb94bc02b8b75003fc31f0a8b3e1e43cafcf.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="$(ver_cut 1)/$(ver_cut 1-2)"
+KEYWORDS="~amd64 ~sparc"
+IUSE=""
+RUBY_S="${PN}-fc6ecb94bc02b8b75003fc31f0a8b3e1e43cafcf"
+
+ruby_add_rdepend "dev-ruby/fiber-local"
+
+all_ruby_prepare() {
+ sed -i -E 's/require_relative "(.+)"/require File.expand_path("\1")/g' "${RUBY_FAKEGEM_GEMSPEC}" || die
+ rm -f "gems.rb" || die
+ sed -i -E 's/require '"'"'covered\/rspec'"'"'//g' "spec/spec_helper.rb" || die
+}
diff --git a/dev-ruby/console/metadata.xml b/dev-ruby/console/metadata.xml
new file mode 100644
index 000000000000..eaf87044f48c
--- /dev/null
+++ b/dev-ruby/console/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>ruby@gentoo.org</email>
+ <name>Gentoo Ruby Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">socketry/console</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/dev-ruby/ffi-compiler/Manifest b/dev-ruby/ffi-compiler/Manifest
index 11e72f274646..52b78be20f59 100644
--- a/dev-ruby/ffi-compiler/Manifest
+++ b/dev-ruby/ffi-compiler/Manifest
@@ -1,3 +1,5 @@
+AUX respect-cflags.patch 682 BLAKE2B 2e3e90026961257737878e7a0b3b3d1d1d522ee4bbf12e5eed7d8fd61f49a84a7a8eaa83ffb8299d711e4d36b2aa60a9b5078fd83a0d88c689d81212d8902458 SHA512 b0f6593609237a637f78ca8128f48f5bcbb2d2637419bedda532ae8ef8d93a7e4e647e63277a9438d2f4aff9fe430176414fbc5f590fab7b1a452c1be79028a3
DIST ffi-compiler-1.0.1.gem 18432 BLAKE2B 9832d9836a0b55d3099085b53e0c8e15cc5ae79cfadadea942603ef8595b5fa4d781b5f031f0592b2688acb1416acffa9e525e3cbc004c2c51aaaea12a722706 SHA512 7a13625ab1c5748d05ec93d68708dd9435ec92dcd0c823109c44173fdaf8710aec5f5b4fb11966475f10ae91401c7ca3c620f9d36bb9ca665114e1ed70f4edd0
EBUILD ffi-compiler-1.0.1-r1.ebuild 476 BLAKE2B 74c38026898f17915585aafa81155e24cd6e93a63cd8507e86bef7ef4c01403b44035e3e4e9569110a8ae91064806095047e472fb949e81ea8f670cff95a5ea5 SHA512 05c6d8ebb4d016456840bb2366d7c5ccc65d3e8e26ee5a54a43e2f4f2e6220ec6bd53b2055b0b306446decec688f987fdd8ff1a966dc9684a16483d29df62139
+EBUILD ffi-compiler-1.0.1-r2.ebuild 525 BLAKE2B 357abb4b17e3f99bd52a65c65ae136115d94cda34869c43f03725885863adf4107d661380e683d0792405cc44e7c8f05cae99c96d36f1182b6da21526b7e3edf SHA512 e737551cf5a88bb4f5bc5b02e12f360cf137870a98a2bb3f3cecf9deb1cdcee5355d1d84ef01cfd8f4c3a9aafc529cd1e7121bde651e292bbc60c5c58fb93919
MISC metadata.xml 258 BLAKE2B 3c49249352f2cb11df010da6ecd8312a27047557ca5f2686837ad66933be9ea2627c40f91daedf8dcd9099c6cdc0dc2d2ba32aaf9d888c41fb60ee098e1c0c1e SHA512 ce517e35f3c0a2a9807ee68b0a8c84ca28db8dfabb41758cac71f9da22847fe20d259295f0681e38a52a24618450a0ca097939dc1022e3987bb0088762e48326
diff --git a/dev-ruby/ffi-compiler/ffi-compiler-1.0.1-r2.ebuild b/dev-ruby/ffi-compiler/ffi-compiler-1.0.1-r2.ebuild
new file mode 100644
index 000000000000..6a6262edb1ff
--- /dev/null
+++ b/dev-ruby/ffi-compiler/ffi-compiler-1.0.1-r2.ebuild
@@ -0,0 +1,22 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+USE_RUBY="ruby26 ruby27 ruby30 ruby31"
+
+RUBY_FAKEGEM_EXTRADOC="README.md"
+
+RUBY_FAKEGEM_RECIPE_TEST="none"
+
+inherit ruby-fakegem
+
+DESCRIPTION="Ruby FFI Rakefile generator"
+HOMEPAGE="https://github.com/ffi/ffi/wiki"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc64 ~sparc ~x86"
+IUSE=""
+# PATCHES=( "${FILESDIR}/respect-cflags.patch" )
+
+ruby_add_rdepend "dev-ruby/rake >=dev-ruby/ffi-1.0.0"
diff --git a/dev-ruby/ffi-compiler/files/respect-cflags.patch b/dev-ruby/ffi-compiler/files/respect-cflags.patch
new file mode 100644
index 000000000000..3fe68f8211cb
--- /dev/null
+++ b/dev-ruby/ffi-compiler/files/respect-cflags.patch
@@ -0,0 +1,17 @@
+diff --git a/lib/ffi-compiler/compile_task.rb b/lib/ffi-compiler/compile_task.rb
+index 363c247..637fd3d 100644
+--- a/lib/ffi-compiler/compile_task.rb
++++ b/lib/ffi-compiler/compile_task.rb
+@@ -26,9 +26,9 @@ module FFI
+ @libraries = []
+ @headers = []
+ @functions = []
+- @cflags = DEFAULT_CFLAGS.dup
+- @cxxflags = DEFAULT_CFLAGS.dup
+- @ldflags = DEFAULT_LDFLAGS.dup
++ @cflags = ENV['CFLAGS']&.split || DEFAULT_CFLAGS.dup
++ @cxxflags = ENV['CXXFLAGS']&.split || DEFAULT_CFLAGS.dup
++ @ldflags = ENV['LDFLAGS']&.split || DEFAULT_LDFLAGS.dup
+ @libs = []
+ @platform = Platform.system
+ @exports = []
diff --git a/dev-ruby/ffi/Manifest b/dev-ruby/ffi/Manifest
index 354fe9d86d96..5aff438ef78a 100644
--- a/dev-ruby/ffi/Manifest
+++ b/dev-ruby/ffi/Manifest
@@ -1,6 +1,9 @@
+AUX backport-pr-962.patch 1773 BLAKE2B b4eb227a949136143a98e8a5ed9067599d3a4ec14376c52619e2f3db56906ed028f9be889aa6eea5abe7e7ca9c3196208ede7dc5768cba43ecf9d000f1e3e1da SHA512 dc6a17bccde42b3a64e7de3bed5fe0818a4bfe9e109b665ccf06963a4939fec2a77e3fcff073cf3a4feccb68d3dc05bbb4885ebe53c2060965e114041c9e3ce5
AUX ffi-1.14.2-32bit-long-double.patch 701 BLAKE2B d8a3f2a00f8b93f42953bf5317cf6ae45ed662c81b993f83b728125d6fae15c6f75d11e0f76b0f46912b1c52c849764d3393a09c3ac1e35f3557e97bd3662364 SHA512 9cfe4e1c80e08c672eee30fe3b170d667e72cc2e047f4edd1e9573bfe6d4dca315a84baa54855756631f90c04fee59a417f286df95662f6abcfd3728c1b1a4d7
+AUX pr-957-sparc.patch 1681 BLAKE2B e08a03d5e054ce030c04cb0645ed2683faa9d0ec8782313464112e3dd3adf0b8ee40f7fbea9aec15ee7590189e93f03617fe06b506e2ea049535e48bc33a8f23 SHA512 32bd488a3cc4b0c81d8f7f9f2875e591b8de7bf741b838aab3f20ea64025984b3d83c393e1e8f0b628f009b2473d381139655f965cc746dc9074cbe57171cb7d
DIST ffi-git-1.14.2.tgz 165100 BLAKE2B 598d1771860a7884f8dc6a4cf0006cb42f741308bdd01720d7ea4b63690d42ff6e93f2d48de7132f5d82b275b30672b0bf1ac586b713994b68e98da4cf71a481 SHA512 20fffab047d810ddea1d4d2b66a563adf5787a0602a26cc59724090d393852ae57464a8c7b5a47ca0534efc453bb06d2f8fbf00a203a7060cd3ac78b683119f5
DIST ffi-git-1.15.5.tgz 168139 BLAKE2B 2ddd5bd7bfb7bcd39b6d740cbb1e0f4cd419ce6cb4ec12926f91f254b3f3142bc6166728a81a6f23dccfbf7aec911c63237c20fb0e2c70d30d48f4648e352585 SHA512 3668bafae936bf5010f014fbcf63258b023bcc318882775e7d2fcfc11334722ec2b6e8a8b9c910d406889fb173dd503c5c13f5af8e4f6927921f12f688461707
EBUILD ffi-1.14.2-r1.ebuild 1635 BLAKE2B ef999eedbb4c80ef9d64e04c21f7b8abdf390bf1189fd4c24683934930323fd71cefd70d734c76e8b908473d5167463a3da73b1bfbb2d15ddbbca6f4214b30c5 SHA512 fb9af61383048819156d2a2919c487a41bc30e67a4bf6602cd6e9c9383e63ae001f8c26c3b4562bf011234c4d16b187d418ff667ac17126ac9f265dcafdfb84e
+EBUILD ffi-1.15.5-r1.ebuild 1813 BLAKE2B d9ad8b311eacb12ae1af340d4bbd25784fea999f2bbf2b465f67910dedf3892d2900e479980c2afdbd64b80a5d36884faad6cc3a8cde1c1850526b062a735178 SHA512 f03fdfb9315896ebf50d776114c0391308ec477aa6ad946e0d55c65beedac015d2be95f0660a41a4c4cc75017e80e13c1b98384d6a3ddc39c33195e80babdf78
EBUILD ffi-1.15.5.ebuild 1679 BLAKE2B 0f21e74f3843306c7416d8b11e43ec8ab279ea1f79662d50a77b8a430806d6d526ca529b13017130f05f1ce2709d3a90b8f4a8efce5231dfd96ca944a0866d5d SHA512 460791276a6e6d158e041a9b57aba47a7535095e6e4f776d8a883d5d8b7e08c61f346ca7b5cc9180d0d4143e4967043a6c96f02a097719195034b81ee4c412ce
MISC metadata.xml 334 BLAKE2B 02ad2c909797d4aaf2a23497611777a790000683866cfbd9d12c4b19cca6de902e219584c4edc85c46b4b0dc51c63e770506a077a4c1052b46f8df19a9588c15 SHA512 e72dc6ce177ad3881f5465f10cd44ca6740b7603ab4e55cfa9e6088be3c6615abeefaee4b717e76fab2850c64d66eee626115544e10709f64c4187f1987bcfe3
diff --git a/dev-ruby/ffi/ffi-1.15.5-r1.ebuild b/dev-ruby/ffi/ffi-1.15.5-r1.ebuild
new file mode 100644
index 000000000000..98c573a70b41
--- /dev/null
+++ b/dev-ruby/ffi/ffi-1.15.5-r1.ebuild
@@ -0,0 +1,71 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+USE_RUBY="ruby26 ruby27 ruby30 ruby31"
+
+RUBY_FAKEGEM_RECIPE_TEST="rspec3"
+
+RUBY_FAKEGEM_DOCDIR="doc"
+RUBY_FAKEGEM_EXTRADOC="README.md"
+
+RUBY_FAKEGEM_GEMSPEC="ffi.gemspec"
+
+RUBY_FAKEGEM_EXTENSIONS=(ext/ffi_c/extconf.rb)
+
+inherit ruby-fakegem toolchain-funcs
+
+DESCRIPTION="Ruby extension for programmatically loading dynamic libraries"
+HOMEPAGE="https://wiki.github.com/ffi/ffi"
+
+SRC_URI="https://github.com/${PN}/${PN}/archive/v${PV}.tar.gz -> ${PN}-git-${PV}.tgz"
+
+IUSE=""
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+PATCHES=(
+ "${FILESDIR}/backport-pr-962.patch"
+ "${FILESDIR}/pr-957-sparc.patch" # submitted upstream as https://github.com/ffi/ffi/pull/957
+)
+
+RDEPEND+=" dev-libs/libffi:="
+DEPEND+=" dev-libs/libffi:="
+
+ruby_add_bdepend "dev-ruby/rake"
+
+all_ruby_prepare() {
+ sed -i -e '/tasks/ s:^:#:' \
+ -e '/Gem::Tasks/,/end/ s:^:#:' Rakefile || die
+
+ sed -e '/require/c\require "./lib/ffi/version"' \
+ -e 's/git ls-files -z/find * -print0/' \
+ -e '/^ lfs/,/^ end/ s:^:#:' \
+ -i ${RUBY_FAKEGEM_GEMSPEC} || die
+
+ # Fix Makefile for tests
+ sed -i -e '/CCACHE :=/ s:^:#:' \
+ -e 's/-O2//' \
+ -e 's/^CFLAGS =/CFLAGS +=/' spec/ffi/fixtures/GNUmakefile || die
+
+ # Remove bundled version of libffi.
+ rm -rf ext/ffi_c/libffi || die
+}
+
+each_ruby_compile() {
+ each_fakegem_compile
+
+ ${RUBY} -S rake -f gen/Rakefile || die "types.conf generation failed"
+}
+
+each_ruby_test() {
+ CC=$(tc-getCC) CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" ${RUBY} -S rspec spec || die
+}
+
+all_ruby_install() {
+ all_fakegem_install
+
+ docinto examples
+ dodoc samples/*
+}
diff --git a/dev-ruby/ffi/files/backport-pr-962.patch b/dev-ruby/ffi/files/backport-pr-962.patch
new file mode 100644
index 000000000000..708c52025bd5
--- /dev/null
+++ b/dev-ruby/ffi/files/backport-pr-962.patch
@@ -0,0 +1,48 @@
+From edc54894f77d00c4ca34593c8b4c94f656f5807e Mon Sep 17 00:00:00 2001
+From: Frederick Cheung <frederick.cheung@gmail.com>
+Date: Fri, 17 Jun 2022 18:57:28 +0100
+Subject: [PATCH] Fix Pointer#initialize using NUM2LL instead of NUM2ULL
+
+If the high bit of the address was set this would raise RangeError
+(bignum too big to convert into long long). This is not uncommon on
+platforms that use the high bits of pointers for purposes such as
+pointer authentication
+
+This also now matches Pointer#address which uses ULL2NUM.
+---
+ ext/ffi_c/Pointer.c | 2 +-
+ spec/ffi/pointer_spec.rb | 8 ++++++++
+ 2 files changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/ext/ffi_c/Pointer.c b/ext/ffi_c/Pointer.c
+index 153fff101..79886811f 100644
+--- a/ext/ffi_c/Pointer.c
++++ b/ext/ffi_c/Pointer.c
+@@ -112,7 +112,7 @@ ptr_initialize(int argc, VALUE* argv, VALUE self)
+ switch (TYPE(rbAddress)) {
+ case T_FIXNUM:
+ case T_BIGNUM:
+- p->memory.address = (void*) (uintptr_t) NUM2LL(rbAddress);
++ p->memory.address = (void*) (uintptr_t) NUM2ULL(rbAddress);
+ p->memory.size = LONG_MAX;
+ if (p->memory.address == NULL) {
+ p->memory.flags = 0;
+diff --git a/spec/ffi/pointer_spec.rb b/spec/ffi/pointer_spec.rb
+index b216a161d..7a2ac1565 100644
+--- a/spec/ffi/pointer_spec.rb
++++ b/spec/ffi/pointer_spec.rb
+@@ -237,6 +237,14 @@ def to_ptr
+ expect(FFI::Pointer.new(0).slice(0, 10).size_limit?).to be true
+ end
+ end
++
++ describe "#initialise" do
++ it 'can use adresses with high bit set' do
++ max_address = 2**FFI::Platform::ADDRESS_SIZE - 1
++ pointer = FFI::Pointer.new(:uint8, max_address)
++ expect(pointer.address).to eq(max_address)
++ end
++ end
+ end
+
+ describe "AutoPointer" do
diff --git a/dev-ruby/ffi/files/pr-957-sparc.patch b/dev-ruby/ffi/files/pr-957-sparc.patch
new file mode 100644
index 000000000000..b68b5e06a7d4
--- /dev/null
+++ b/dev-ruby/ffi/files/pr-957-sparc.patch
@@ -0,0 +1,42 @@
+From 241b10322283743b79c9489993bfb964b5167f7f Mon Sep 17 00:00:00 2001
+From: matoro <matoro@users.noreply.github.com>
+Date: Wed, 25 May 2022 14:23:55 -0400
+Subject: [PATCH 1/2] Rename sparc64-linux -> sparcv9-linux
+
+In https://github.com/ffi/ffi/pull/575, 64-bit sparc was changed to also
+use sparcv9 as the platform name, but the types.conf directory was never
+renamed. This breaks only on Ruby 3.0 and later due to the fileutils
+change to use keyword arguments in
+https://github.com/ruby/fileutils/commit/482de6d397742526d1111576e2791f9b7051e3c0
+---
+ lib/ffi/platform/{sparc64-linux => sparcv9-linux}/types.conf | 0
+ 1 file changed, 0 insertions(+), 0 deletions(-)
+ rename lib/ffi/platform/{sparc64-linux => sparcv9-linux}/types.conf (100%)
+
+diff --git a/lib/ffi/platform/sparc64-linux/types.conf b/lib/ffi/platform/sparcv9-linux/types.conf
+similarity index 100%
+rename from lib/ffi/platform/sparc64-linux/types.conf
+rename to lib/ffi/platform/sparcv9-linux/types.conf
+
+From 76dc5c7d69a445268f47f5b6a9185e644bcd68e8 Mon Sep 17 00:00:00 2001
+From: matoro <matoro@users.noreply.github.com>
+Date: Mon, 13 Jun 2022 22:56:26 -0400
+Subject: [PATCH 2/2] Also normalize sparc64 -> sparcv9 in test fixture
+
+---
+ spec/ffi/fixtures/compile.rb | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/spec/ffi/fixtures/compile.rb b/spec/ffi/fixtures/compile.rb
+index f2e831a63..58ee5611d 100644
+--- a/spec/ffi/fixtures/compile.rb
++++ b/spec/ffi/fixtures/compile.rb
+@@ -22,6 +22,8 @@ module TestLibrary
+ "powerpc64"
+ when /ppc|powerpc/
+ "powerpc"
++ when /sparcv9|sparc64/
++ "sparcv9"
+ when /^arm/
+ if RbConfig::CONFIG['host_os'] =~ /darwin/
+ "aarch64"
diff --git a/dev-ruby/fiber-local/Manifest b/dev-ruby/fiber-local/Manifest
new file mode 100644
index 000000000000..6660946ae682
--- /dev/null
+++ b/dev-ruby/fiber-local/Manifest
@@ -0,0 +1,3 @@
+DIST fiber-local-1.0.0.tar.gz 3780 BLAKE2B 5360ebdc2f3958863742e5ca1e1cdefe76e4487bad2257a1bd34a8a6769b1191e1a8f0ba8c7dfe1481f73fdd8b9ee1a014b11e5527273dbb0ee6d8a94edae2ae SHA512 5f77213c3760bb7c23a6912f138e46aa54d8508c11d02dadde5ddbc4ab03976abccb37ad2b1b43b118eddfb7a5e8ca4ee647a7fea1bac5ee4d7b39e8dc8f8424
+EBUILD fiber-local-1.0.0.ebuild 812 BLAKE2B 64b974c15f532d1b87b4624cc02b7ac16cefe675478c5cfcd78a567580f871cc39956e56db645e21f455abe3b54e738442c3800f8a976186a91302236ffdd2f2 SHA512 1ea290e9ee793b1939a0e0589a34fb5b906fda0bd2d161430198bd56dbec4189e570b0409df52ce33fdfacfb0c7d5d7b7246f05bcfc6f5b8046e88791f5f395a
+MISC metadata.xml 347 BLAKE2B 9f0304d50cdc6ea863767d44adf04062376a06e06e6d8c8e486ecd1fcce2e66133d883e991a9978c691a0942d43f2f009236f3ac949556274bf4bad101812ccc SHA512 ec53de01e6c327d2dd81117f12ccfd0f37bf9aba3b35e346c14bdf7c303e63ea935e9bc489398bd677a5ece070f19bfc5bf86f250acc9050abb64d0df1c6ce6b
diff --git a/dev-ruby/fiber-local/fiber-local-1.0.0.ebuild b/dev-ruby/fiber-local/fiber-local-1.0.0.ebuild
new file mode 100644
index 000000000000..ad2959e09769
--- /dev/null
+++ b/dev-ruby/fiber-local/fiber-local-1.0.0.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+USE_RUBY="ruby26 ruby27 ruby30 ruby31"
+RUBY_FAKEGEM_RECIPE_TEST="rspec3"
+RUBY_FAKEGEM_EXTRADOC="README.md"
+RUBY_FAKEGEM_GEMSPEC="${PN}.gemspec"
+inherit ruby-fakegem
+
+DESCRIPTION="Provides a class-level mixin to make fiber local state easy"
+HOMEPAGE="https://github.com/socketry/fiber-local"
+SRC_URI="https://github.com/socketry/fiber-local/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="$(ver_cut 1)/$(ver_cut 1-2)"
+KEYWORDS="~amd64 ~sparc"
+IUSE=""
+
+all_ruby_prepare() {
+ sed -i -E 's/require_relative "(.+)"/require File.expand_path("\1")/g' "${RUBY_FAKEGEM_GEMSPEC}" || die
+ rm -f "gems.rb" || die
+ sed -i -E 's/require '"'"'covered\/rspec'"'"'//g' "spec/spec_helper.rb" || die
+}
diff --git a/dev-ruby/fiber-local/metadata.xml b/dev-ruby/fiber-local/metadata.xml
new file mode 100644
index 000000000000..cbcf3060e8d9
--- /dev/null
+++ b/dev-ruby/fiber-local/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>ruby@gentoo.org</email>
+ <name>Gentoo Ruby Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">socketry/fiber-local</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/dev-ruby/http/Manifest b/dev-ruby/http/Manifest
index 167454e630e1..9817fbc6c981 100644
--- a/dev-ruby/http/Manifest
+++ b/dev-ruby/http/Manifest
@@ -1,4 +1,6 @@
DIST http-4.4.1.gem 75776 BLAKE2B ab34a6a567842d52f9b7cbe3fc3fb8e4757f5cf1303deacdf2f2130a44e82fde64f0db561c3f8fc28100faea277a9c4a9352f95e6cb1359730b34e83a7b36d72 SHA512 6e43a8ae379d7c8a807a9a03c87bfb5ad1719f9838e26ac7a695220ee2bc50344accc2db268d30da175328fd5468b87ec8532d17ce42a5b74d6c2c4c281d1bc9
+DIST http-5.1.0.gem 81920 BLAKE2B cc80149b89eabd5c6b468ffe28b33e17845bd996fa3bf8b9c38c517fe79994412b376b3bac365e8debbeb272cf4333aebd398d1955a358faa27ba9f124671443 SHA512 b99da5318da54e7b64abd48df0b68cde9a02e1ae92b51fc43302e3dea28ba9672e2b7a25e31c342235835e16b2e1b98c94b6d4efa7916a0aa99258fc8290260f
EBUILD http-4.4.1-r1.ebuild 1655 BLAKE2B b4aab0ac50e5c6a92b9380b94da5750df06123a143844edfb81ec999fc48abea0ed79eb3634694629ef2391592ce8701cd56be906c4c65ff2764626ed14cbef1 SHA512 831d09d20dc6f96f26bb47e89bc814f4f5947e755920d788b8fab0254bb471648fc95bff0feea19b439063896b81bca2db75d8d387eeaf0b8088ec7239fb2cc4
EBUILD http-4.4.1.ebuild 1514 BLAKE2B be5425eb0601b170113e8c732c25fb5a696c037ada34600244f3ff80f2a8ef9000028a5bbd843a06a1ac2bc18e98bfb76c43f6d8533a5d43084bfd108534bb40 SHA512 fbcd52cc5a6e95a8cac026fea2b7ea030f22fd4280818a5861f28c456a33f85ad2bd103399a002de725fb1ffb5c2d05b2e88b567c552ee597269e4200f427b3b
+EBUILD http-5.1.0.ebuild 1814 BLAKE2B 6b2500b9605383ee37414d49ad12b2c0566c201fd07d9fc20d360dca8dd8330eb9bdb65ef9c3ddc50c018fed0427dad18b27dd63b7f3c13bdc80a9ace8cdefe1 SHA512 9a0cb1d5015407a6ee68f69c40dac14b19a5682e620a1c8e06a0913372799eb0ab142c9b0e0c0b5ec82f492044d5ebffe0d1d4e6756dbf2e0b0e0e26f676996e
MISC metadata.xml 340 BLAKE2B 3f69f47d5faad39a2de9cce22c25a490645c3ca3b9bebca74e2c19bec16d5b05927e4d0a56a32d615c26d01513bd82ee09e13ab0b1b2fc9cd02f7e5723d8db34 SHA512 6cd51992e506d9df562267d357d7af6ff55aa2e9cfb8b1147b6544f12464a02c0c28b08bb5a4c00e3cb084b4f891f78b731c4bd1f8988f7d192d15986c5b2290
diff --git a/dev-ruby/http/http-5.1.0.ebuild b/dev-ruby/http/http-5.1.0.ebuild
new file mode 100644
index 000000000000..d05205e7563f
--- /dev/null
+++ b/dev-ruby/http/http-5.1.0.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+USE_RUBY="ruby26 ruby27 ruby30 ruby31"
+
+RUBY_FAKEGEM_RECIPE_TEST="rspec3"
+RUBY_FAKEGEM_EXTRADOC="CHANGES.md README.md"
+RUBY_FAKEGEM_GEMSPEC="${PN}.gemspec"
+inherit ruby-fakegem
+
+DESCRIPTION="An easy-to-use client library for making requests from Ruby"
+HOMEPAGE="https://github.com/tarcieri/http"
+
+LICENSE="MIT"
+SLOT="$(ver_cut 1)"
+KEYWORDS="~amd64 ~sparc"
+IUSE=""
+
+ruby_add_rdepend "=dev-ruby/addressable-2*
+ >=dev-ruby/addressable-2.8
+ =dev-ruby/http-cookie-1*
+ >=dev-ruby/http-form_data-2.2:2
+ >=dev-ruby/llhttp-ffi-0.4.0:0/0.4"
+
+ruby_add_bdepend "
+ test? (
+ =dev-ruby/certificate_authority-1*
+ dev-ruby/rspec-its
+ )"
+
+all_ruby_prepare() {
+ # Avoid specs that require network access
+ sed -i -e '/.persistent/,/^ end/ s:^:#:' \
+ spec/lib/http_spec.rb || die
+ sed -i -e '/with non-ASCII URLs/,/^ end/ s:^:#:' \
+ spec/lib/http/client_spec.rb || die
+
+ # Avoid spec that may fail with a running web server
+ sed -i -e '/unifies socket errors into HTTP::ConnectionError/,/^ end/ s:^:#:' spec/lib/http_spec.rb || die
+
+ # Fix spec for production release
+ sed -i -e '/User-Agent:/ s/.dev//' spec/lib/http/features/logging_spec.rb || die
+
+ # Avoid specs also failing upstream due to some certificate issue
+ sed -i -e '/context "ssl"/,/^ end/ s:^:#:' spec/lib/http_spec.rb || die
+ sed -i -e '/describe "working with SSL"/,/^ end/ s:^:#:' spec/lib/http/client_spec.rb || die
+
+ # Disable coverage
+ sed -i -e 's/require_relative ".\/support\/simplecov"//g' "spec/spec_helper.rb" || die
+
+ # Submitted upstream as https://github.com/httprb/http/pull/719
+ sed -i -e '4i require "cgi"' "spec/lib/http/client_spec.rb" || die
+}
+
+each_ruby_test() {
+ # disables dev-ruby/fuubar dep
+ CI=1 each_fakegem_test
+}
diff --git a/dev-ruby/io-event/Manifest b/dev-ruby/io-event/Manifest
new file mode 100644
index 000000000000..1d5acd96a4f1
--- /dev/null
+++ b/dev-ruby/io-event/Manifest
@@ -0,0 +1,3 @@
+DIST io-event-1.0.9.tar.gz 31984 BLAKE2B 543c460cde5ac269607e4d7ec54962879141d40d9592433a55d53e89b2a43bce4f161c1e4b21322a9b3fe60d5ab77e35692a19f899b9210d06fbcf185bca83de SHA512 d2b5903e68425bb23a7a9b861e76b2d125b9cf53f81ca0120ded010559ca26f3af002b5da28092245e00e8d9b81e94bdda72b2ea607cfae27a1e48e3f1a39130
+EBUILD io-event-1.0.9.ebuild 864 BLAKE2B 97541213e4f3c2adea19dc1b65af8d8e267116730ebe84b073155764293d5250e157fe459a235bdbab5d6af0c884a353ed7b6065f27b6cb12000434867ba1796 SHA512 0674bd2e985478d5ceff0be2337d3f71a0dce3211ac097de071d7fc10ca4cff811db91c79d7166bac4ca63c2208a626280a5a5e3c4661c8bc58ff96e0bd1d117
+MISC metadata.xml 344 BLAKE2B bb572a3bebb66073283f2eea535cb9ac95d3adba0e060350609028bb47b7a03b6ddb3294293e95a6c505fe5d9c7127a37f1d1afa9abf66312bf4b4a688b4ddf9 SHA512 9c114303bb3edf528224eac75e7095403230f94baf373649442c123cceee029258616fa2ea68823814dd1ecdfe0f9c4ef73491ca449f569f12aa159b78811ef5
diff --git a/dev-ruby/io-event/io-event-1.0.9.ebuild b/dev-ruby/io-event/io-event-1.0.9.ebuild
new file mode 100644
index 000000000000..d0b6cc652fb7
--- /dev/null
+++ b/dev-ruby/io-event/io-event-1.0.9.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+USE_RUBY="ruby30 ruby31"
+RUBY_FAKEGEM_EXTENSIONS="ext/extconf.rb"
+RUBY_FAKEGEM_RECIPE_TEST=""
+RUBY_FAKEGEM_EXTRADOC="README.md"
+RUBY_FAKEGEM_GEMSPEC="${PN}.gemspec"
+inherit ruby-fakegem
+
+DESCRIPTION="An event loop"
+HOMEPAGE="https://github.com/socketry/io-event"
+SRC_URI="https://github.com/socketry/io-event/archive/68cffe24077a53201acbb383e8e132b192e1fa83.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="$(ver_cut 1)/$(ver_cut 1-2)"
+KEYWORDS="~amd64 ~sparc"
+IUSE=""
+RUBY_S="${PN}-68cffe24077a53201acbb383e8e132b192e1fa83"
+
+ruby_add_bdepend "test? ( >=dev-ruby/sus-0.6:0 )"
+
+all_ruby_prepare() {
+ sed -i -E 's/require_relative "(.+)"/require File.expand_path("\1")/g' "${RUBY_FAKEGEM_GEMSPEC}" || die
+}
+
+each_ruby_test() {
+ "${RUBY}" -S sus-parallel || die
+}
diff --git a/dev-ruby/io-event/metadata.xml b/dev-ruby/io-event/metadata.xml
new file mode 100644
index 000000000000..0962eb7f2192
--- /dev/null
+++ b/dev-ruby/io-event/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>ruby@gentoo.org</email>
+ <name>Gentoo Ruby Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">socketry/io-event</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/dev-ruby/llhttp-ffi/Manifest b/dev-ruby/llhttp-ffi/Manifest
new file mode 100644
index 000000000000..b7874f5c5fe7
--- /dev/null
+++ b/dev-ruby/llhttp-ffi/Manifest
@@ -0,0 +1,3 @@
+DIST llhttp-0.4.0.tar.gz 98406 BLAKE2B 9f7358d988ed00558a36ae80e3c7d38cabb41a2233f32f4e3e6e9ed49a205f85ed84cb76cb07984f3b73b0a67eade4844ed5f4ee98b2453fa5c25d36fcb0082c SHA512 56a491763500b1619492173a83a227e3228847f4b85b8dadab1a9de34d65d5c662615c18d6cc6d5e11226df83381fd7f79f67e12f89f0e437ada8f9fd083ec26
+EBUILD llhttp-ffi-0.4.0.ebuild 1152 BLAKE2B 8acf5ebe023e9d0c1f35fc53632a8e5bfec9962c15480519cc0b6a326d7413b113c9309915325f2ffc7b6c3043e107b06ff800ee76539c11953933ec96fa038f SHA512 41a138462c857504eb41a8e68889b4a8db561853f9e3e5ddc0b3deb6047f664768fb6faf8cdc4538087438e86fe342b5007f2d4d31ef33fd62ccbbf1c131cd1b
+MISC metadata.xml 342 BLAKE2B fed02fc3abfc46f4d9c46eac8333aada41c709559f1200c9505b6e19b24cd4af9e03d36fa5a701c1cc7406bc1f8c3499c23c29d390dfcfae9e7aa2883dedd97a SHA512 582e050c2e5e5659e05d5998bffc07aebb8603d2a817bd29527ccc0b4a98fc8a5b8326664f34eca8f7267fc0f56b9d81539b49a20eb58a7b5ba133e75808d248
diff --git a/dev-ruby/llhttp-ffi/llhttp-ffi-0.4.0.ebuild b/dev-ruby/llhttp-ffi/llhttp-ffi-0.4.0.ebuild
new file mode 100644
index 000000000000..b22be2e05156
--- /dev/null
+++ b/dev-ruby/llhttp-ffi/llhttp-ffi-0.4.0.ebuild
@@ -0,0 +1,40 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+USE_RUBY="ruby26 ruby27 ruby30 ruby31"
+RUBY_FAKEGEM_EXTRADOC="CHANGELOG.md README.md"
+RUBY_FAKEGEM_GEMSPEC="${PN}.gemspec"
+
+inherit ruby-fakegem
+
+DESCRIPTION="Ruby FFI bindings for llhttp"
+HOMEPAGE="https://github.com/metabahn/llhttp"
+MY_PV="2021-09-09"
+SRC_URI="https://github.com/metabahn/llhttp/archive/refs/tags/${MY_PV}.tar.gz -> llhttp-${PV}.tar.gz"
+
+LICENSE="MPL-2.0"
+SLOT="$(ver_cut 1)/$(ver_cut 1-2)"
+KEYWORDS="~amd64 ~sparc"
+IUSE=""
+RUBY_S="llhttp-${MY_PV}/ffi"
+
+ruby_add_rdepend "=dev-ruby/ffi-compiler-1*"
+
+ruby_add_bdepend "test? ( dev-ruby/async-io )"
+
+all_ruby_prepare() {
+ sed -i -e 's/gem "rake-compiler"//g' "Gemfile" || die
+}
+
+each_ruby_compile() {
+ cd ext && "${RUBY}" -S rake || die
+ local FFI_PLATFORM_NAME="$(${RUBY} --disable=did_you_mean -e "require 'ffi' ; p \"#{FFI::Platform::ARCH}-#{FFI::Platform::OS}\"" | tr -d "\"")"
+ install -D "${FFI_PLATFORM_NAME}/libllhttp-ext.so" "../lib/${FFI_PLATFORM_NAME}/libllhttp-ext.so" || die
+}
+
+each_ruby_install() {
+ each_fakegem_install
+ ruby_fakegem_extensions_installed
+}
diff --git a/dev-ruby/llhttp-ffi/metadata.xml b/dev-ruby/llhttp-ffi/metadata.xml
new file mode 100644
index 000000000000..0b975f88294a
--- /dev/null
+++ b/dev-ruby/llhttp-ffi/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>ruby@gentoo.org</email>
+ <name>Gentoo Ruby Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">metabahn/llhttp</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/dev-ruby/rack-test/Manifest b/dev-ruby/rack-test/Manifest
index cd797e906379..504bb6745bb1 100644
--- a/dev-ruby/rack-test/Manifest
+++ b/dev-ruby/rack-test/Manifest
@@ -1,5 +1,6 @@
+AUX backport-b1084c1-issue-323.patch 869 BLAKE2B a43d83c09ac9b0bafda3a6a49fb71446425d4f5eb5e4fa9ac006ebf94c84c61aae3baef674d811c86f183cee61c814f8a88406fc7b8720d96d211e04076f25da SHA512 9d4f3ac4a592a811f603a3401ad07ce703620d2b2dfe25c2f37fc3ec1a952e7ab708b321e817edf63452d72bfa0ed2738c69b0a4063f8ac1dd0b0584c4d4b274
DIST rack-test-1.1.0.tar.gz 27035 BLAKE2B 640de2303850662c3b6a8fc17f2344223c9928b48abde6d1b251a634689793158f35498c4736e4e2d069efa921d37bc32da92a7e17c0761a6f6111b345b54c1a SHA512 36d947d9b13d33ee8322e5b9d18fe8266787ccb7703f1fafadc040123e34dd44e98e7faf8b6dd816e51ed167065b2ffe79e9bcee74564dc324ba2b7dba76f82a
DIST rack-test-2.0.2.tar.gz 30651 BLAKE2B 82ffa59cca24cbb42a885bf05792cb603c44881886b716698a1ebd6857231bfdfafd9a8e68f2fd2e1d795c167886db44db5a620eac35e3824c8fe7fa1148718a SHA512 de91787563546a3f12da15f665975bf3d68f7633e277c86a529a728cb8ba9d78bac5c30c2ec1ece9aab5341571ceb23d8089d0da542409bdba23ebe93d75e2a5
-EBUILD rack-test-1.1.0-r1.ebuild 1069 BLAKE2B 07c2f65bd1508d1452f2452fc1f5a4fd42473521b44067d20635954fae76dab4fceb83b225b3105e84d82e65fb26bd87a23ab1a6d3dc43657a5e158d9b70d0b4 SHA512 7e6d15f29a800ce10d9c8233171b1ea68e0263d2688fd4f897740a123928a1ab38cbb94bd1b2e054bce12aa66faf47fe99633a79283f2a5d0a7fa647ea71a966
-EBUILD rack-test-2.0.2.ebuild 875 BLAKE2B aadf359ffca68edc6faec0d15f30263e77eec1b35ac51df1e5ba86c084c90b885acf184819c7c7f55064deedecf043dbedf20f9ada2dad32dad2dc76e2437275 SHA512 d88073cbda41abccd802007e5487b05e79387fa08771cd47f98e6c0d22a70e5fd779c558f8c81ca0fbe96019d92b13754af9b6a38d9731338d7079fbedf8e0b4
+EBUILD rack-test-1.1.0-r1.ebuild 1076 BLAKE2B 1656ff7e1b56fc9f3d1b27fd3862ceecd63fb03e600e2259f0312c429131d0079b5763757b0bf9643f3d17eb364f0c8a55819411d75507bdba451702c2281a19 SHA512 4653a807bea38fcdae0ec39aaa140d663a2008a848f4faea0fc470ad59e9afeb33c3eb7ac29d2d726021148cd3345dec5074e03b49b0be3311aa82b8705d7d4e
+EBUILD rack-test-2.0.2.ebuild 982 BLAKE2B c1c1414c4b6f018ba2463923592f3af8bffad7611a8a07f9375d860caf62f2bd2a400823154f6c3058b5a6e7d772e36473203bf9b36c35bfa394170304067b07 SHA512 e0882e5308dfff5c56e229bf9df612c113dedfe99d53b7315332a9bcb29fd8a424f6490fc3363c9588485337e593888e30585c9a67ae069edf6220aca569f6da
MISC metadata.xml 344 BLAKE2B e30c148bc0cfee01a015a9f33b641e93cafb8791f46ea7c1ec56942da88eec469d0259780c697b3bae0cbaf806dc47f919b78f2aca4d7565effd47a630f6485b SHA512 93102d50461492b9a866f74783d9d6c3d04698a8766535064d1b3c2600c11f1002b3a8bba79c81b4294e19a33cb06f8b407442c73d24fd2efcf361e39623ad9e
diff --git a/dev-ruby/rack-test/files/backport-b1084c1-issue-323.patch b/dev-ruby/rack-test/files/backport-b1084c1-issue-323.patch
new file mode 100644
index 000000000000..84b3b2307aeb
--- /dev/null
+++ b/dev-ruby/rack-test/files/backport-b1084c1-issue-323.patch
@@ -0,0 +1,29 @@
+https://github.com/rack/rack-test/issues/323
+
+From b1084c1f7b04f6bdaad73c9d1ffc1b279af55e78 Mon Sep 17 00:00:00 2001
+From: Jeremy Evans <code@jeremyevans.net>
+Date: Wed, 28 Sep 2022 18:33:43 -0700
+Subject: [PATCH] Make the UploadedFile GC finalizer test more reliable on
+ CRuby
+
+---
+ spec/rack/test/uploaded_file_spec.rb | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/spec/rack/test/uploaded_file_spec.rb b/spec/rack/test/uploaded_file_spec.rb
+index 2cb56ac..67bfbc5 100644
+--- a/spec/rack/test/uploaded_file_spec.rb
++++ b/spec/rack/test/uploaded_file_spec.rb
+@@ -69,8 +69,10 @@ def file_path
+ System.gc
+ end
+ else
+- c.new(file_path)
+- GC.start
++ 50.times do |_i|
++ c.new(file_path)
++ GC.start
++ end
+ end
+
+ # Due to CRuby's conservative garbage collection, you can never guarantee
diff --git a/dev-ruby/rack-test/rack-test-1.1.0-r1.ebuild b/dev-ruby/rack-test/rack-test-1.1.0-r1.ebuild
index 0c5ce5f3d97a..4197fc6b4827 100644
--- a/dev-ruby/rack-test/rack-test-1.1.0-r1.ebuild
+++ b/dev-ruby/rack-test/rack-test-1.1.0-r1.ebuild
@@ -2,7 +2,7 @@
# Distributed under the terms of the GNU General Public License v2
EAPI=8
-USE_RUBY="ruby26 ruby27 ruby30"
+USE_RUBY="ruby26 ruby27 ruby30 ruby31"
RUBY_FAKEGEM_RECIPE_TEST="rspec3"
diff --git a/dev-ruby/rack-test/rack-test-2.0.2.ebuild b/dev-ruby/rack-test/rack-test-2.0.2.ebuild
index 15c959648795..1791e958884f 100644
--- a/dev-ruby/rack-test/rack-test-2.0.2.ebuild
+++ b/dev-ruby/rack-test/rack-test-2.0.2.ebuild
@@ -19,6 +19,8 @@ SLOT="$(ver_cut 1)"
KEYWORDS="amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~sparc ~x86"
IUSE=""
+PATCHES=( "${FILESDIR}/backport-b1084c1-issue-323.patch" ) # https://github.com/rack/rack-test/issues/323
+
ruby_add_rdepend ">=dev-ruby/rack-1.3:*"
ruby_add_bdepend "
test? ( dev-ruby/minitest:5 dev-ruby/minitest-global_expectations )"
diff --git a/dev-ruby/rspec-files/Manifest b/dev-ruby/rspec-files/Manifest
new file mode 100644
index 000000000000..010d0677ba97
--- /dev/null
+++ b/dev-ruby/rspec-files/Manifest
@@ -0,0 +1,3 @@
+DIST rspec-files-1.1.2.tar.gz 4546 BLAKE2B fc3c3cc2acbac23e36ec6f85f6f58c8243f9ca769a16cfbdab6a4660dd9a22ba40fe1108b319206e9a6b5aaa4094ec372205ca33d00d2030476f1050448ef21d SHA512 af64435572b61ae4eaaed922160b8db5dca8a64987a3c24f2d15d1ec92abd2655d0e408ff2c7b4aeae29189ef1047901adc7c9e2af8a21f65dfafc974a4661ec
+EBUILD rspec-files-1.1.2.ebuild 814 BLAKE2B 381949887a7f18a83fb88c49e2e26a5babf7dfec9233273085a90435c7e03f2f0de05aa86e3c774858eed611545d3915efe308955c884a32f4b0d578a57e44cc SHA512 61841106f074f846dcf437e566934a0a2cfb8ebb535393a62458272e4e8419920537f21111f2914505e16e694700ddbf12b74c04991bea016365818247918292
+MISC metadata.xml 347 BLAKE2B e6a2b14dc5577c957615c2c3d71e92e18102743c117277b90b6b7f95bea1d54b0a80137e309b55439b3532e7617a68332c8bdc92cf017fb7fe2cdd179dcb1441 SHA512 cb62bb2293ffcda6670a6c2a1c4dfe6d724690b2059097bf7a9fa311feb2ce9ccf98f42069bcb296d981507692fa88430df5c3a2c1cd04052c462b9d85516232
diff --git a/dev-ruby/rspec-files/metadata.xml b/dev-ruby/rspec-files/metadata.xml
new file mode 100644
index 000000000000..dfae27f7746a
--- /dev/null
+++ b/dev-ruby/rspec-files/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>ruby@gentoo.org</email>
+ <name>Gentoo Ruby Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">socketry/rspec-files</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/dev-ruby/rspec-files/rspec-files-1.1.2.ebuild b/dev-ruby/rspec-files/rspec-files-1.1.2.ebuild
new file mode 100644
index 000000000000..b1009e5db552
--- /dev/null
+++ b/dev-ruby/rspec-files/rspec-files-1.1.2.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+USE_RUBY="ruby26 ruby27 ruby30 ruby31"
+RUBY_FAKEGEM_RECIPE_TEST="rspec3"
+RUBY_FAKEGEM_EXTRADOC="README.md"
+RUBY_FAKEGEM_GEMSPEC="${PN}.gemspec"
+inherit ruby-fakegem
+
+DESCRIPTION="RSpec helpers for buffering and detecting file descriptor leaks"
+HOMEPAGE="https://github.com/socketry/rspec-files"
+SRC_URI="https://github.com/socketry/rspec-files/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="$(ver_cut 1)"
+KEYWORDS="~amd64 ~sparc"
+IUSE=""
+
+ruby_add_rdepend "dev-ruby/rspec:3"
+
+all_ruby_prepare() {
+ sed -i -E 's/require_relative "(.+)"/require File.expand_path("\1")/g' "${RUBY_FAKEGEM_GEMSPEC}" || die
+ sed -i -E 's/require '"'"'covered\/rspec'"'"'//g' "spec/spec_helper.rb" || die
+}
diff --git a/dev-ruby/rspec-memory/Manifest b/dev-ruby/rspec-memory/Manifest
new file mode 100644
index 000000000000..90dfdbd0723d
--- /dev/null
+++ b/dev-ruby/rspec-memory/Manifest
@@ -0,0 +1,3 @@
+DIST rspec-memory-1.0.3.tar.gz 5248 BLAKE2B cf2cb55a6c3d155a739f1cbe3f307016d9446f9edde8554b6336602b86d95a369b152a413426082061c68d2e4015c68d31a34d7d80706ba09986fb8c8952d670 SHA512 1077bd6cb73ada029fc42f820e42792b58f8e06feeda711725d6f2a7a2af9151f72330d3e5a9d0fa7493eeb42f65ddf02a93fac00f5e24f2596f7df0da9439a3
+EBUILD rspec-memory-1.0.3.ebuild 798 BLAKE2B bbee1b34e1ecf72ee0bb3472b112ea125b8c32cc607885944944f3e21d20683ea2f8cbf426848c85ef5ed64ee0cd6807e8ee87c67de3682015bf4463a2a13589 SHA512 575b2f5a61ee04754085ab36fa7f8231f766797752f8decb1a3535e18ff5578f072409c1b2b8a8a3de29bd9e3a90ab8c58c357c4bc5206505fe5301cf96e8124
+MISC metadata.xml 348 BLAKE2B b7ddddc65f6c8375f9da0d18e67571a92901cbd4b769e5fddbb32b967013e49004c6818bc4cb986b45166fccd252d1166c813e8e6093093cdbe030ab2c95776d SHA512 808154b4c3f75888c7c278b12a0b8a626638369f609a854129b51ee8b569f98b9e2f4e13ead899d7a3f287e9f62776443f5f79befd7a0a1c8628cc9d28e976ee
diff --git a/dev-ruby/rspec-memory/metadata.xml b/dev-ruby/rspec-memory/metadata.xml
new file mode 100644
index 000000000000..87c955dadfb9
--- /dev/null
+++ b/dev-ruby/rspec-memory/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>ruby@gentoo.org</email>
+ <name>Gentoo Ruby Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">socketry/rspec-memory</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/dev-ruby/rspec-memory/rspec-memory-1.0.3.ebuild b/dev-ruby/rspec-memory/rspec-memory-1.0.3.ebuild
new file mode 100644
index 000000000000..0c30ccc070b1
--- /dev/null
+++ b/dev-ruby/rspec-memory/rspec-memory-1.0.3.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+USE_RUBY="ruby26 ruby27 ruby30 ruby31"
+RUBY_FAKEGEM_RECIPE_TEST="rspec3"
+RUBY_FAKEGEM_EXTRADOC="README.md"
+RUBY_FAKEGEM_GEMSPEC="${PN}.gemspec"
+inherit ruby-fakegem
+
+DESCRIPTION="RSpec helpers for checking memory allocations"
+HOMEPAGE="https://github.com/socketry/rspec-memory"
+SRC_URI="https://github.com/socketry/rspec-memory/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="$(ver_cut 1)"
+KEYWORDS="~amd64 ~sparc"
+IUSE=""
+
+ruby_add_rdepend "dev-ruby/rspec:3"
+
+all_ruby_prepare() {
+ sed -i -E 's/require_relative "(.+)"/require File.expand_path("\1")/g' "${RUBY_FAKEGEM_GEMSPEC}" || die
+ sed -i -E 's/require '"'"'covered\/rspec'"'"'//g' "spec/spec_helper.rb" || die
+}
diff --git a/dev-ruby/sinatra/Manifest b/dev-ruby/sinatra/Manifest
index 0bebcbdbcb8f..3a11f5ca32d2 100644
--- a/dev-ruby/sinatra/Manifest
+++ b/dev-ruby/sinatra/Manifest
@@ -1,10 +1,12 @@
+AUX backport-pr-1519.patch 3860 BLAKE2B 6bfd7e434af9e3f66517a568fc076eb138e16133b8463c072c3475c0749410f2ba838b825bd07bed14cfd08b7288c4a72e9891976099db10486d86bee0037e4e SHA512 620fb520f36dd2793d52d5472a43731f938438f74b29a4877528210bd06eb831279413692de43539a81b5c1e261f907c2b52c850593d1f4d264376ce46887dcb
DIST sinatra-2.2.0.tar.gz 513752 BLAKE2B e407b9241cab27e326c0a2d4d83593e292de902b6ed19a12f17b0cd114230b0d10f1ffaa8f8b8237d17b547c7e012c57456af357019b228f3d7a88847220cf33 SHA512 be9432a8efa93578accc836cd0fecca128e56989d8596f1b3d33d2d956e90acd80244b98473fff2adae13ed4a1e933c41e73c80755a6f3418a65cdf33c011145
DIST sinatra-2.2.1.tar.gz 513047 BLAKE2B 38cec7c3b2e27ac795044d7d64a00deb09707523a13338328bb1d7657b3d8eee9ab9730c6eb903c04f64acca6d24b8f191f825056baa0e705bf7ebf5594c0d46 SHA512 73f35428e259867a9b9adbf7344dd78dfe3c5ae2749902d438e2bcd95c4e7e9935ecb7761a4c52928e3e05fd99f8497db3fc049c868f9b2e76c653b4271c87b5
DIST sinatra-2.2.2.tar.gz 513056 BLAKE2B 80904850ce577131ecc6c28917772cda6ab606ff1b4a71b733cde98d56e2906bb0dc5b65c83465e65686571e8752ec7935d89734e7d2e45c544fe14a2c8046d4 SHA512 e69a36738a7c1095968a343113ddba414ff685e941a8b55575e4b2ffa5a8e7394d874966d5532643cdfec997ac4c825c293185f6688c715006e37159eedd2be8
DIST sinatra-3.0.1.tar.gz 265781 BLAKE2B e4fc5dec7045f5a906a91fa8d71ea32e4e1491939047cdfece7d27df3c784a5c3779a4e5de243d87f1eb7e272e3aeeda9fbfc560b1cfaf2cf628d30106567825 SHA512 717d4caff1193b158128a22737340329e5d96bea5718702c22b8c8e2c72652b1048352b36454da410a57288c852de2f04bbee6335dfd4ee977eda62093a1a94a
DIST sinatra-3.0.2.tar.gz 265824 BLAKE2B 87739d8863dd9959b8c3530b19a3f52de31636fcdd77fe1558930749498c73ec4cf0ddf998a9f6029c46842656059f8bd76d1781beb277608ccf265577561447 SHA512 57094e00ca8280401ed76f5c52dded82d42a4a81290a9a990f464ac43abbf350e8325b8f60505bfd005b6c7d92283a3f7a9345c0ccbf227530a8c3cb93c0af38
+EBUILD sinatra-2.2.0-r1.ebuild 1178 BLAKE2B 72e9d9cbe13398c4fd717ae69789a40414a5f62c6e0c8beb6e100cc78915532560900c339b34e201a9b349819fd40ac1b75e44d9d30724dd651e18c1eff4b498 SHA512 06d51f06b2845304a7756c0bf7266819fe1c40009889392fac950821d67e17afc266a85b8903316c3ead75c0e1e7c2cdd4fe3f140057242e4667ccb4e701ed0a
EBUILD sinatra-2.2.0.ebuild 1012 BLAKE2B e5748efcee47332e37a741df852b5851956bac34bdc4d50c6bbf23287c143b324a0ede69a14a3153ce3d68aa3ee76244d00ddfb6b0f527c8ae98e4a880a36790 SHA512 a96d186b6330bc65b95643543d6d1816bea49fc5016baa476c75d20fad140ffcd64973a43c7dc3167bfaea4d009f71873d525cbfe6a57bdd551e627ec8eb35d9
-EBUILD sinatra-2.2.1.ebuild 1006 BLAKE2B 681f6b2f9b17b7ac7d9656dcef754dcd1db17f1a42071e132c4ceed0d8af9a0ae15ca52fabcde0a33bae544a4e7dc53b8afcb2989c637935e6002e3fc16ac4b9 SHA512 dad05b778dd62a7d05865452c0de421e68faa80fd7c02f2fab0a1f581b6de98e746dd21e0546ca0f36a98f2ece46ae9fb23d486127b09101641b91713281623c
+EBUILD sinatra-2.2.1.ebuild 1159 BLAKE2B 22a3c11de592a4ac843f24f36313ce98e15a9f6a092e537ee9d59b985f105ea8ce08159c8159d7e178e65d7766d7027ce7185d2f9f648226d8e05404863fd725 SHA512 7cc6aa34ce962441a11e9a3e019e984fa1340c5d28e064d14d0e7c25a6c5e2de9114d0542adcc8bc53c38f8291547862f1529db2c9babf0d710659a199799649
EBUILD sinatra-2.2.2.ebuild 1006 BLAKE2B 02051754d7ceead4327c603836d52b6d4344e9c1ab4d3ae6fc3a7dc2ded7a2ee8540702aaca19f3eb388e064bfa990637776e400b068f1ee0702fc5917da5eb3 SHA512 2552c3e63d0b62838d631551b2a135822df89c2ec6758a34ec058989f47925525cf0c3a984f777166404449c0ec09e16b4cd4d5672a1d01d43769c6e486a483c
EBUILD sinatra-3.0.1.ebuild 1032 BLAKE2B a318d2bb27f201493c9b1b07d741af8f97ad03c6bea074cfc99946f89fb8513770ef3f584beff328767723b954e4f657c5ae64541ebab365fe322e7bba0c78e5 SHA512 43124a035900095395901af2c0e1766987401eaba394e56c8e830214ff7fd3469f1b5f4bc3a1bd0cdc01a03889b6a57b2837aca1db43a5a8fd4dea42c12e480c
EBUILD sinatra-3.0.2.ebuild 1032 BLAKE2B a318d2bb27f201493c9b1b07d741af8f97ad03c6bea074cfc99946f89fb8513770ef3f584beff328767723b954e4f657c5ae64541ebab365fe322e7bba0c78e5 SHA512 43124a035900095395901af2c0e1766987401eaba394e56c8e830214ff7fd3469f1b5f4bc3a1bd0cdc01a03889b6a57b2837aca1db43a5a8fd4dea42c12e480c
diff --git a/dev-ruby/sinatra/files/backport-pr-1519.patch b/dev-ruby/sinatra/files/backport-pr-1519.patch
new file mode 100644
index 000000000000..cc344621c3b6
--- /dev/null
+++ b/dev-ruby/sinatra/files/backport-pr-1519.patch
@@ -0,0 +1,122 @@
+https://github.com/sinatra/sinatra/pull/1519
+
+From 6d34a2a1bee48961c25e1b53edac874a31c42060 Mon Sep 17 00:00:00 2001
+From: Jordan Owens <jkowens@gmail.com>
+Date: Thu, 31 Jan 2019 22:32:45 -0500
+Subject: [PATCH] Internal Sinatra errors now extend Sinatra::Error
+
+By extending Sinatra::Error, an error class can set the http status
+code on the response to a value other than 500. This commit fixes
+issues #1204 and #1518 where an error raised by a third party library
+that responded to http_status could set the status on the response.
+Any error outside of Sinatra errors will now always return a 500 status.
+
+This fixes an issue where an exception could leak sensitive data in
+the message to the browser. Errors that have http_status code 400 or
+404 use the message as the body of the response. This is why it is
+imperative that these errors extend Sinatra::Error so that this is
+an explicit decision.
+---
+ lib/sinatra/base.rb | 22 ++++++++++++++--------
+ test/mapped_error_test.rb | 6 +++---
+ test/result_test.rb | 15 +++++++++++++++
+ 3 files changed, 32 insertions(+), 11 deletions(-)
+
+diff --git a/lib/sinatra/base.rb b/lib/sinatra/base.rb
+index 6dbb3ae57..4dfc9a8ae 100644
+--- a/lib/sinatra/base.rb
++++ b/lib/sinatra/base.rb
+@@ -255,11 +255,14 @@ def call(env)
+ end
+ end
+
+- class BadRequest < TypeError #:nodoc:
++ class Error < StandardError #:nodoc:
++ end
++
++ class BadRequest < Error #:nodoc:
+ def http_status; 400 end
+ end
+
+- class NotFound < NameError #:nodoc:
++ class NotFound < Error #:nodoc:
+ def http_status; 404 end
+ end
+
+@@ -1149,14 +1152,17 @@ def handle_exception!(boom)
+ end
+ @env['sinatra.error'] = boom
+
+- if boom.respond_to? :http_status and boom.http_status.between? 400, 599
+- status(boom.http_status)
+- elsif settings.use_code? and boom.respond_to? :code and boom.code.between? 400, 599
+- status(boom.code)
+- else
+- status(500)
++ http_status = if boom.kind_of? Sinatra::Error
++ if boom.respond_to? :http_status
++ boom.http_status
++ elsif settings.use_code? && boom.respond_to?(:code)
++ boom.code
++ end
+ end
+
++ http_status = 500 unless http_status && http_status.between?(400, 599)
++ status(http_status)
++
+ if server_error?
+ dump_errors! boom if settings.dump_errors?
+ raise boom if settings.show_exceptions? and settings.show_exceptions != :after_handler
+diff --git a/test/mapped_error_test.rb b/test/mapped_error_test.rb
+index cb158a268..562e509dc 100644
+--- a/test/mapped_error_test.rb
++++ b/test/mapped_error_test.rb
+@@ -6,15 +6,15 @@ class FooError < RuntimeError
+ class FooNotFound < Sinatra::NotFound
+ end
+
+-class FooSpecialError < RuntimeError
++class FooSpecialError < Sinatra::Error
+ def http_status; 501 end
+ end
+
+-class FooStatusOutOfRangeError < RuntimeError
++class FooStatusOutOfRangeError < Sinatra::Error
+ def code; 4000 end
+ end
+
+-class FooWithCode < RuntimeError
++class FooWithCode < Sinatra::Error
+ def code; 419 end
+ end
+
+diff --git a/test/result_test.rb b/test/result_test.rb
+index cbb781319..67d163fc4 100644
+--- a/test/result_test.rb
++++ b/test/result_test.rb
+@@ -1,5 +1,9 @@
+ require File.expand_path('../helper', __FILE__)
+
++class ThirdPartyError < RuntimeError
++ def http_status; 400 end
++end
++
+ class ResultTest < Minitest::Test
+ it "sets response.body when result is a String" do
+ mock_app { get('/') { 'Hello World' } }
+@@ -73,4 +77,15 @@ def res.each ; yield call ; end
+ assert_equal 205, status
+ assert_equal '', body
+ end
++
++ it "sets status to 500 when raised error is not Sinatra::Error" do
++ mock_app do
++ set :raise_errors, false
++ get('/') { raise ThirdPartyError }
++ end
++
++ get '/'
++ assert_equal 500, status
++ assert_equal '<h1>Internal Server Error</h1>', body
++ end
+ end
diff --git a/dev-ruby/sinatra/sinatra-2.2.0-r1.ebuild b/dev-ruby/sinatra/sinatra-2.2.0-r1.ebuild
new file mode 100644
index 000000000000..4a36cb96c31f
--- /dev/null
+++ b/dev-ruby/sinatra/sinatra-2.2.0-r1.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+USE_RUBY="ruby26 ruby27 ruby30 ruby31"
+
+RUBY_FAKEGEM_TASK_TEST="MT_NO_PLUGINS=true test:core"
+
+RUBY_FAKEGEM_EXTRADOC="README.md AUTHORS.md CHANGELOG.md"
+
+RUBY_FAKEGEM_GEMSPEC="sinatra.gemspec"
+
+inherit ruby-fakegem
+
+DESCRIPTION="A DSL for quickly creating web applications in Ruby with minimal effort"
+HOMEPAGE="http://www.sinatrarb.com/"
+SRC_URI="https://github.com/sinatra/sinatra/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="2"
+KEYWORDS="amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~sparc ~x86"
+IUSE=""
+
+# https://github.com/sinatra/sinatra/pull/1519 from master.
+# https://github.com/sinatra/sinatra/issues/1774
+PATCHES=( "${FILESDIR}/backport-pr-1519.patch" )
+
+ruby_add_rdepend "
+ dev-ruby/mustermann:1
+ dev-ruby/rack:2.2
+ ~dev-ruby/rack-protection-${PV}
+ dev-ruby/tilt:2"
+ruby_add_bdepend "test? ( >=dev-ruby/rack-test-0.5.6 dev-ruby/erubis dev-ruby/builder <dev-ruby/activesupport-7 )"
+ruby_add_bdepend "doc? ( dev-ruby/yard )"
+
+all_ruby_prepare() {
+ sed -i -e '/active_support\/core_ext\/hash/igem "activesupport", "<7"' test/helper.rb || die
+}
diff --git a/dev-ruby/sinatra/sinatra-2.2.1.ebuild b/dev-ruby/sinatra/sinatra-2.2.1.ebuild
index 20f026413a36..26896805eb10 100644
--- a/dev-ruby/sinatra/sinatra-2.2.1.ebuild
+++ b/dev-ruby/sinatra/sinatra-2.2.1.ebuild
@@ -2,7 +2,7 @@
# Distributed under the terms of the GNU General Public License v2
EAPI=8
-USE_RUBY="ruby27 ruby30"
+USE_RUBY="ruby27 ruby30 ruby31"
RUBY_FAKEGEM_TASK_TEST="MT_NO_PLUGINS=true test:core"
@@ -21,6 +21,10 @@ SLOT="2"
KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~sparc ~x86"
IUSE=""
+# https://github.com/sinatra/sinatra/pull/1519
+# https://github.com/sinatra/sinatra/issues/1774
+PATCHES=( "${FILESDIR}/backport-pr-1519.patch" )
+
ruby_add_rdepend "
dev-ruby/mustermann:1
dev-ruby/rack:2.2
diff --git a/dev-ruby/sus/Manifest b/dev-ruby/sus/Manifest
new file mode 100644
index 000000000000..bead1940a119
--- /dev/null
+++ b/dev-ruby/sus/Manifest
@@ -0,0 +1,3 @@
+DIST sus-0.13.0.tar.gz 23399 BLAKE2B f96717409f5f14727b359e39bc1bb4726fe1cae98de46bf06e6e008df9a23746219decdb8de171cbc1c6c39ac84b4011e475daa43c7996c01968f4acc5289c84 SHA512 c0cb1b1d02e2fc812c6b3cf555af59f543bcdd82829d744d0e4fafb9043e503e8c9ebb52da33e56703d23ccaeaff583abf72e1df55a726ceca59d50d21b51eb3
+EBUILD sus-0.13.0.ebuild 814 BLAKE2B dca4143816b09ca42de7d48e1a8cf51f82ccf5406884a04090244221c869be29bb89c7986f896b4f0497e89d7a9e44f740dc66ac0ee58a04c6e6a5535b61eb47 SHA512 9e17bc2fdfc1f9e41f5d3775b211f538de8e48eef8075ca2ec1ff2d56be110bfa4c336b858ce6fde294f98f46cb447c7f80e70c96a1f7ba37c58cd393cfb1fb7
+MISC metadata.xml 339 BLAKE2B a89a738b1bc39d01b68a8ff2f6ea0b7edbb35c6c9cad01b7762e2ee4e99b00bd72b87752832fb2a09017836a648334aefaf3009d6912917e490c13557427f963 SHA512 bcc9d407a5fb5159fc2910fa0eab40d3654d78907a0b1812351adf85cf577d3cef53550ebcd86aa40ddc6c03714df97469615dccab9ec4388728ab1106cf6cd0
diff --git a/dev-ruby/sus/metadata.xml b/dev-ruby/sus/metadata.xml
new file mode 100644
index 000000000000..2a4c88d07149
--- /dev/null
+++ b/dev-ruby/sus/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>ruby@gentoo.org</email>
+ <name>Gentoo Ruby Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">ioquatix/sus</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/dev-ruby/sus/sus-0.13.0.ebuild b/dev-ruby/sus/sus-0.13.0.ebuild
new file mode 100644
index 000000000000..713c073218b5
--- /dev/null
+++ b/dev-ruby/sus/sus-0.13.0.ebuild
@@ -0,0 +1,28 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+USE_RUBY="ruby27 ruby30 ruby31"
+RUBY_FAKEGEM_RECIPE_TEST=""
+RUBY_FAKEGEM_EXTRADOC="readme.md"
+RUBY_FAKEGEM_GEMSPEC="${PN}.gemspec"
+inherit ruby-fakegem
+
+DESCRIPTION="A fast and scalable test runner"
+HOMEPAGE="https://github.com/ioquatix/sus"
+SRC_URI="https://github.com/ioquatix/sus/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="$(ver_cut 1)"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE=""
+
+all_ruby_prepare() {
+ sed -i -E 's/require_relative "(.+)"/require File.expand_path("\1")/g' "${RUBY_FAKEGEM_GEMSPEC}" || die
+ sed -i -E '/^#/!d' "config/${PN}.rb" || die # remove covered coverage
+}
+
+each_ruby_test() {
+ "${RUBY}" "bin/sus-parallel" || die
+}