commit:     986366bb094939c4e2d8cf0067f1bd1ba24ca18e
Author:     Hans de Graaff <graaff <AT> gentoo <DOT> org>
AuthorDate: Mon Aug 12 09:29:52 2024 +0000
Commit:     Hans de Graaff <graaff <AT> gentoo <DOT> org>
CommitDate: Mon Aug 12 09:33:22 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=986366bb

dev-lang/ruby: backport RLIMIT spec fixes

Thanks to matoro for working with upstream to make this spec
work on all arches.

Closes: https://bugs.gentoo.org/936157
Signed-off-by: Hans de Graaff <graaff <AT> gentoo.org>

 .../ruby/files/3.1/013-test-rlimit-constants.patch | 147 +++++++++++++++++++
 .../ruby/files/3.2/013-test-rlimit-constants.patch | 147 +++++++++++++++++++
 .../ruby/files/3.3/013-test-rlimit-constants.patch | 159 +++++++++++++++++++++
 dev-lang/ruby/ruby-3.1.6-r1.ebuild                 |   1 +
 dev-lang/ruby/ruby-3.2.5.ebuild                    |   1 +
 dev-lang/ruby/ruby-3.3.4-r1.ebuild                 |   1 +
 6 files changed, 456 insertions(+)

diff --git a/dev-lang/ruby/files/3.1/013-test-rlimit-constants.patch 
b/dev-lang/ruby/files/3.1/013-test-rlimit-constants.patch
new file mode 100644
index 000000000000..998c839808aa
--- /dev/null
+++ b/dev-lang/ruby/files/3.1/013-test-rlimit-constants.patch
@@ -0,0 +1,147 @@
+From bea20365f43ee115ea6219c7113647eed3d9e342 Mon Sep 17 00:00:00 2001
+From: matoro <[email protected]>
+Date: Wed, 7 Aug 2024 13:15:00 -0400
+Subject: [PATCH] Replace specific constant tests with just type checks
+
+As detailed in the attached issue, these constants can and do vary e.g.
+between architectures on Linux.  Hardcoding and asserting that they are
+equal to specific values pretty much defeats the purpose of building
+these in at compile time.  Instead, simply assert that they exist and
+are integers.
+
+Fixes: https://github.com/ruby/spec/issues/1150
+---
+ core/process/constants_spec.rb | 116 ++++++++++++++++++++-------------
+ 1 file changed, 69 insertions(+), 47 deletions(-)
+
+diff --git a/core/process/constants_spec.rb b/core/process/constants_spec.rb
+index 616c54b8e..57cacadef 100644
+--- a/spec/ruby/core/process/constants_spec.rb
++++ b/spec/ruby/core/process/constants_spec.rb
+@@ -2,64 +2,81 @@
+ 
+ describe "Process::Constants" do
+   platform_is :darwin, :netbsd, :freebsd do
+-    it "has the correct constant values on BSD-like systems" do
+-      Process::WNOHANG.should == 1
+-      Process::WUNTRACED.should == 2
+-      Process::PRIO_PROCESS.should == 0
+-      Process::PRIO_PGRP.should == 1
+-      Process::PRIO_USER.should == 2
+-      Process::RLIM_INFINITY.should == 9223372036854775807
+-      Process::RLIMIT_CPU.should == 0
+-      Process::RLIMIT_FSIZE.should == 1
+-      Process::RLIMIT_DATA.should == 2
+-      Process::RLIMIT_STACK.should == 3
+-      Process::RLIMIT_CORE.should == 4
+-      Process::RLIMIT_RSS.should == 5
+-      Process::RLIMIT_MEMLOCK.should == 6
+-      Process::RLIMIT_NPROC.should == 7
+-      Process::RLIMIT_NOFILE.should == 8
++    it "are all present on BSD-like systems" do
++      %i[
++          WNOHANG
++          WUNTRACED
++          PRIO_PROCESS
++          PRIO_PGRP
++          PRIO_USER
++          RLIM_INFINITY
++          RLIMIT_CPU
++          RLIMIT_FSIZE
++          RLIMIT_DATA
++          RLIMIT_STACK
++          RLIMIT_CORE
++          RLIMIT_RSS
++          RLIMIT_MEMLOCK
++          RLIMIT_NPROC
++          RLIMIT_NOFILE
++      ].each do |const|
++        Process.const_defined?(const).should be_true
++        Process.const_get(const).should be_an_instance_of(Integer)
++      end
+     end
+   end
+ 
+   platform_is :darwin do
+-    it "has the correct constant values on Darwin" do
+-      Process::RLIM_SAVED_MAX.should == 9223372036854775807
+-      Process::RLIM_SAVED_CUR.should == 9223372036854775807
+-      Process::RLIMIT_AS.should == 5
++    it "are all present on Darwin" do
++      %i[
++        RLIM_SAVED_MAX
++        RLIM_SAVED_CUR
++        RLIMIT_AS
++      ].each do |const|
++        Process.const_defined?(const).should be_true
++        Process.const_get(const).should be_an_instance_of(Integer)
++      end
+     end
+   end
+ 
+   platform_is :linux do
+-    it "has the correct constant values on Linux" do
+-      Process::WNOHANG.should == 1
+-      Process::WUNTRACED.should == 2
+-      Process::PRIO_PROCESS.should == 0
+-      Process::PRIO_PGRP.should == 1
+-      Process::PRIO_USER.should == 2
+-      Process::RLIMIT_CPU.should == 0
+-      Process::RLIMIT_FSIZE.should == 1
+-      Process::RLIMIT_DATA.should == 2
+-      Process::RLIMIT_STACK.should == 3
+-      Process::RLIMIT_CORE.should == 4
+-      Process::RLIMIT_RSS.should == 5
+-      Process::RLIMIT_NPROC.should == 6
+-      Process::RLIMIT_NOFILE.should == 7
+-      Process::RLIMIT_MEMLOCK.should == 8
+-      Process::RLIMIT_AS.should == 9
+-
+-      # These values appear to change according to the platform.
+-      values = [4294967295, 9223372036854775807, 18446744073709551615]
+-      values.include?(Process::RLIM_INFINITY).should be_true
+-      values.include?(Process::RLIM_SAVED_MAX).should be_true
+-      values.include?(Process::RLIM_SAVED_CUR).should be_true
++    it "are all present on Linux" do
++      %i[
++        WNOHANG
++        WUNTRACED
++        PRIO_PROCESS
++        PRIO_PGRP
++        PRIO_USER
++        RLIMIT_CPU
++        RLIMIT_FSIZE
++        RLIMIT_DATA
++        RLIMIT_STACK
++        RLIMIT_CORE
++        RLIMIT_RSS
++        RLIMIT_NPROC
++        RLIMIT_NOFILE
++        RLIMIT_MEMLOCK
++        RLIMIT_AS
++        RLIM_INFINITY
++        RLIM_SAVED_MAX
++        RLIM_SAVED_CUR
++      ].each do |const|
++        Process.const_defined?(const).should be_true
++        Process.const_get(const).should be_an_instance_of(Integer)
++      end
+     end
+   end
+ 
+   platform_is :netbsd, :freebsd do
+-    it "Process::RLIMIT_SBSIZE" do
+-      Process::RLIMIT_SBSIZE.should == 9 # FIXME: what's it equal?
+-      Process::RLIMIT_AS.should == 10
++    it "are all present on NetBSD and FreeBSD" do
++      %i[
++        RLIMIT_SBSIZE
++        RLIMIT_AS
++      ].each do |const|
++        Process.const_defined?(const).should be_true
++        Process.const_get(const).should be_an_instance_of(Integer)
++      end
+     end
+   end
+ 
+ 

diff --git a/dev-lang/ruby/files/3.2/013-test-rlimit-constants.patch 
b/dev-lang/ruby/files/3.2/013-test-rlimit-constants.patch
new file mode 100644
index 000000000000..998c839808aa
--- /dev/null
+++ b/dev-lang/ruby/files/3.2/013-test-rlimit-constants.patch
@@ -0,0 +1,147 @@
+From bea20365f43ee115ea6219c7113647eed3d9e342 Mon Sep 17 00:00:00 2001
+From: matoro <[email protected]>
+Date: Wed, 7 Aug 2024 13:15:00 -0400
+Subject: [PATCH] Replace specific constant tests with just type checks
+
+As detailed in the attached issue, these constants can and do vary e.g.
+between architectures on Linux.  Hardcoding and asserting that they are
+equal to specific values pretty much defeats the purpose of building
+these in at compile time.  Instead, simply assert that they exist and
+are integers.
+
+Fixes: https://github.com/ruby/spec/issues/1150
+---
+ core/process/constants_spec.rb | 116 ++++++++++++++++++++-------------
+ 1 file changed, 69 insertions(+), 47 deletions(-)
+
+diff --git a/core/process/constants_spec.rb b/core/process/constants_spec.rb
+index 616c54b8e..57cacadef 100644
+--- a/spec/ruby/core/process/constants_spec.rb
++++ b/spec/ruby/core/process/constants_spec.rb
+@@ -2,64 +2,81 @@
+ 
+ describe "Process::Constants" do
+   platform_is :darwin, :netbsd, :freebsd do
+-    it "has the correct constant values on BSD-like systems" do
+-      Process::WNOHANG.should == 1
+-      Process::WUNTRACED.should == 2
+-      Process::PRIO_PROCESS.should == 0
+-      Process::PRIO_PGRP.should == 1
+-      Process::PRIO_USER.should == 2
+-      Process::RLIM_INFINITY.should == 9223372036854775807
+-      Process::RLIMIT_CPU.should == 0
+-      Process::RLIMIT_FSIZE.should == 1
+-      Process::RLIMIT_DATA.should == 2
+-      Process::RLIMIT_STACK.should == 3
+-      Process::RLIMIT_CORE.should == 4
+-      Process::RLIMIT_RSS.should == 5
+-      Process::RLIMIT_MEMLOCK.should == 6
+-      Process::RLIMIT_NPROC.should == 7
+-      Process::RLIMIT_NOFILE.should == 8
++    it "are all present on BSD-like systems" do
++      %i[
++          WNOHANG
++          WUNTRACED
++          PRIO_PROCESS
++          PRIO_PGRP
++          PRIO_USER
++          RLIM_INFINITY
++          RLIMIT_CPU
++          RLIMIT_FSIZE
++          RLIMIT_DATA
++          RLIMIT_STACK
++          RLIMIT_CORE
++          RLIMIT_RSS
++          RLIMIT_MEMLOCK
++          RLIMIT_NPROC
++          RLIMIT_NOFILE
++      ].each do |const|
++        Process.const_defined?(const).should be_true
++        Process.const_get(const).should be_an_instance_of(Integer)
++      end
+     end
+   end
+ 
+   platform_is :darwin do
+-    it "has the correct constant values on Darwin" do
+-      Process::RLIM_SAVED_MAX.should == 9223372036854775807
+-      Process::RLIM_SAVED_CUR.should == 9223372036854775807
+-      Process::RLIMIT_AS.should == 5
++    it "are all present on Darwin" do
++      %i[
++        RLIM_SAVED_MAX
++        RLIM_SAVED_CUR
++        RLIMIT_AS
++      ].each do |const|
++        Process.const_defined?(const).should be_true
++        Process.const_get(const).should be_an_instance_of(Integer)
++      end
+     end
+   end
+ 
+   platform_is :linux do
+-    it "has the correct constant values on Linux" do
+-      Process::WNOHANG.should == 1
+-      Process::WUNTRACED.should == 2
+-      Process::PRIO_PROCESS.should == 0
+-      Process::PRIO_PGRP.should == 1
+-      Process::PRIO_USER.should == 2
+-      Process::RLIMIT_CPU.should == 0
+-      Process::RLIMIT_FSIZE.should == 1
+-      Process::RLIMIT_DATA.should == 2
+-      Process::RLIMIT_STACK.should == 3
+-      Process::RLIMIT_CORE.should == 4
+-      Process::RLIMIT_RSS.should == 5
+-      Process::RLIMIT_NPROC.should == 6
+-      Process::RLIMIT_NOFILE.should == 7
+-      Process::RLIMIT_MEMLOCK.should == 8
+-      Process::RLIMIT_AS.should == 9
+-
+-      # These values appear to change according to the platform.
+-      values = [4294967295, 9223372036854775807, 18446744073709551615]
+-      values.include?(Process::RLIM_INFINITY).should be_true
+-      values.include?(Process::RLIM_SAVED_MAX).should be_true
+-      values.include?(Process::RLIM_SAVED_CUR).should be_true
++    it "are all present on Linux" do
++      %i[
++        WNOHANG
++        WUNTRACED
++        PRIO_PROCESS
++        PRIO_PGRP
++        PRIO_USER
++        RLIMIT_CPU
++        RLIMIT_FSIZE
++        RLIMIT_DATA
++        RLIMIT_STACK
++        RLIMIT_CORE
++        RLIMIT_RSS
++        RLIMIT_NPROC
++        RLIMIT_NOFILE
++        RLIMIT_MEMLOCK
++        RLIMIT_AS
++        RLIM_INFINITY
++        RLIM_SAVED_MAX
++        RLIM_SAVED_CUR
++      ].each do |const|
++        Process.const_defined?(const).should be_true
++        Process.const_get(const).should be_an_instance_of(Integer)
++      end
+     end
+   end
+ 
+   platform_is :netbsd, :freebsd do
+-    it "Process::RLIMIT_SBSIZE" do
+-      Process::RLIMIT_SBSIZE.should == 9 # FIXME: what's it equal?
+-      Process::RLIMIT_AS.should == 10
++    it "are all present on NetBSD and FreeBSD" do
++      %i[
++        RLIMIT_SBSIZE
++        RLIMIT_AS
++      ].each do |const|
++        Process.const_defined?(const).should be_true
++        Process.const_get(const).should be_an_instance_of(Integer)
++      end
+     end
+   end
+ 
+ 

diff --git a/dev-lang/ruby/files/3.3/013-test-rlimit-constants.patch 
b/dev-lang/ruby/files/3.3/013-test-rlimit-constants.patch
new file mode 100644
index 000000000000..c3790b13152b
--- /dev/null
+++ b/dev-lang/ruby/files/3.3/013-test-rlimit-constants.patch
@@ -0,0 +1,159 @@
+From bea20365f43ee115ea6219c7113647eed3d9e342 Mon Sep 17 00:00:00 2001
+From: matoro <[email protected]>
+Date: Wed, 7 Aug 2024 13:15:00 -0400
+Subject: [PATCH] Replace specific constant tests with just type checks
+
+As detailed in the attached issue, these constants can and do vary e.g.
+between architectures on Linux.  Hardcoding and asserting that they are
+equal to specific values pretty much defeats the purpose of building
+these in at compile time.  Instead, simply assert that they exist and
+are integers.
+
+Fixes: https://github.com/ruby/spec/issues/1150
+---
+ core/process/constants_spec.rb | 116 ++++++++++++++++++++-------------
+ 1 file changed, 69 insertions(+), 47 deletions(-)
+
+diff --git a/core/process/constants_spec.rb b/core/process/constants_spec.rb
+index 616c54b8e..57cacadef 100644
+--- a/spec/ruby/core/process/constants_spec.rb
++++ b/spec/ruby/core/process/constants_spec.rb
+@@ -2,69 +2,91 @@
+ 
+ describe "Process::Constants" do
+   platform_is :darwin, :netbsd, :freebsd do
+-    it "has the correct constant values on BSD-like systems" do
+-      Process::WNOHANG.should == 1
+-      Process::WUNTRACED.should == 2
+-      Process::PRIO_PROCESS.should == 0
+-      Process::PRIO_PGRP.should == 1
+-      Process::PRIO_USER.should == 2
+-      Process::RLIM_INFINITY.should == 9223372036854775807
+-      Process::RLIMIT_CPU.should == 0
+-      Process::RLIMIT_FSIZE.should == 1
+-      Process::RLIMIT_DATA.should == 2
+-      Process::RLIMIT_STACK.should == 3
+-      Process::RLIMIT_CORE.should == 4
+-      Process::RLIMIT_RSS.should == 5
+-      Process::RLIMIT_MEMLOCK.should == 6
+-      Process::RLIMIT_NPROC.should == 7
+-      Process::RLIMIT_NOFILE.should == 8
++    it "are all present on BSD-like systems" do
++      %i[
++          WNOHANG
++          WUNTRACED
++          PRIO_PROCESS
++          PRIO_PGRP
++          PRIO_USER
++          RLIM_INFINITY
++          RLIMIT_CPU
++          RLIMIT_FSIZE
++          RLIMIT_DATA
++          RLIMIT_STACK
++          RLIMIT_CORE
++          RLIMIT_RSS
++          RLIMIT_MEMLOCK
++          RLIMIT_NPROC
++          RLIMIT_NOFILE
++      ].each do |const|
++        Process.const_defined?(const).should be_true
++        Process.const_get(const).should be_an_instance_of(Integer)
++      end
+     end
+   end
+ 
+   platform_is :darwin do
+-    it "has the correct constant values on Darwin" do
+-      Process::RLIM_SAVED_MAX.should == 9223372036854775807
+-      Process::RLIM_SAVED_CUR.should == 9223372036854775807
+-      Process::RLIMIT_AS.should == 5
++    it "are all present on Darwin" do
++      %i[
++        RLIM_SAVED_MAX
++        RLIM_SAVED_CUR
++        RLIMIT_AS
++      ].each do |const|
++        Process.const_defined?(const).should be_true
++        Process.const_get(const).should be_an_instance_of(Integer)
++      end
+     end
+   end
+ 
+   platform_is :linux do
+-    it "has the correct constant values on Linux" do
+-      Process::WNOHANG.should == 1
+-      Process::WUNTRACED.should == 2
+-      Process::PRIO_PROCESS.should == 0
+-      Process::PRIO_PGRP.should == 1
+-      Process::PRIO_USER.should == 2
+-      Process::RLIMIT_CPU.should == 0
+-      Process::RLIMIT_FSIZE.should == 1
+-      Process::RLIMIT_DATA.should == 2
+-      Process::RLIMIT_STACK.should == 3
+-      Process::RLIMIT_CORE.should == 4
+-      Process::RLIMIT_RSS.should == 5
+-      Process::RLIMIT_NPROC.should == 6
+-      Process::RLIMIT_NOFILE.should == 7
+-      Process::RLIMIT_MEMLOCK.should == 8
+-      Process::RLIMIT_AS.should == 9
+-
+-      # These values appear to change according to the platform.
+-      values = [4294967295, 9223372036854775807, 18446744073709551615]
+-      values.include?(Process::RLIM_INFINITY).should be_true
+-      values.include?(Process::RLIM_SAVED_MAX).should be_true
+-      values.include?(Process::RLIM_SAVED_CUR).should be_true
++    it "are all present on Linux" do
++      %i[
++        WNOHANG
++        WUNTRACED
++        PRIO_PROCESS
++        PRIO_PGRP
++        PRIO_USER
++        RLIMIT_CPU
++        RLIMIT_FSIZE
++        RLIMIT_DATA
++        RLIMIT_STACK
++        RLIMIT_CORE
++        RLIMIT_RSS
++        RLIMIT_NPROC
++        RLIMIT_NOFILE
++        RLIMIT_MEMLOCK
++        RLIMIT_AS
++        RLIM_INFINITY
++        RLIM_SAVED_MAX
++        RLIM_SAVED_CUR
++      ].each do |const|
++        Process.const_defined?(const).should be_true
++        Process.const_get(const).should be_an_instance_of(Integer)
++      end
+     end
+   end
+ 
+   platform_is :netbsd, :freebsd do
+-    it "has the correct constant values on NetBSD and FreeBSD" do
+-      Process::RLIMIT_SBSIZE.should == 9 # FIXME: what's it equal?
+-      Process::RLIMIT_AS.should == 10
++    it "are all present on NetBSD and FreeBSD" do
++      %i[
++        RLIMIT_SBSIZE
++        RLIMIT_AS
++      ].each do |const|
++        Process.const_defined?(const).should be_true
++        Process.const_get(const).should be_an_instance_of(Integer)
++      end
+     end
+   end
+ 
+   platform_is :freebsd do
+-    it "has the correct constant values on FreeBSD" do
+-      Process::RLIMIT_NPTS.should == 11
++    it "are all present on FreeBSD" do
++      %i[
++        RLIMIT_NPTS
++      ].each do |const|
++        Process.const_defined?(const).should be_true
++        Process.const_get(const).should be_an_instance_of(Integer)
++      end
+     end
+   end
+ 

diff --git a/dev-lang/ruby/ruby-3.1.6-r1.ebuild 
b/dev-lang/ruby/ruby-3.1.6-r1.ebuild
index 358461b38718..6e7d945488c0 100644
--- a/dev-lang/ruby/ruby-3.1.6-r1.ebuild
+++ b/dev-lang/ruby/ruby-3.1.6-r1.ebuild
@@ -72,6 +72,7 @@ PDEPEND="
 src_prepare() {
        eapply "${FILESDIR}"/"${SLOT}"/011*.patch
        eapply "${FILESDIR}"/"${SLOT}"/012*.patch
+       eapply "${FILESDIR}"/"${SLOT}"/013*.patch
        eapply "${FILESDIR}"/"${SLOT}"/020*.patch
        eapply "${FILESDIR}"/"${SLOT}"/902*.patch
 

diff --git a/dev-lang/ruby/ruby-3.2.5.ebuild b/dev-lang/ruby/ruby-3.2.5.ebuild
index 567f50286b60..cbd46d6f96c4 100644
--- a/dev-lang/ruby/ruby-3.2.5.ebuild
+++ b/dev-lang/ruby/ruby-3.2.5.ebuild
@@ -79,6 +79,7 @@ PDEPEND="
 src_prepare() {
        eapply "${FILESDIR}"/"${SLOT}"/010*.patch
        eapply "${FILESDIR}"/"${SLOT}"/011*.patch
+       eapply "${FILESDIR}"/"${SLOT}"/013*.patch
        eapply "${FILESDIR}"/"${SLOT}"/902*.patch
 
        if use elibc_musl ; then

diff --git a/dev-lang/ruby/ruby-3.3.4-r1.ebuild 
b/dev-lang/ruby/ruby-3.3.4-r1.ebuild
index e96e95a64f16..0ef34173c25d 100644
--- a/dev-lang/ruby/ruby-3.3.4-r1.ebuild
+++ b/dev-lang/ruby/ruby-3.3.4-r1.ebuild
@@ -79,6 +79,7 @@ PDEPEND="
 
 src_prepare() {
        eapply "${FILESDIR}"/"${SLOT}"/010*.patch
+       eapply "${FILESDIR}"/"${SLOT}"/013*.patch
        eapply "${FILESDIR}"/"${SLOT}"/902*.patch
 
        if use elibc_musl ; then

Reply via email to