commit:     e29b21208c037a6623929c43a990cf7be203e15a
Author:     Hans de Graaff <graaff <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 26 18:56:05 2023 +0000
Commit:     Hans de Graaff <graaff <AT> gentoo <DOT> org>
CommitDate: Tue Dec 26 18:57:30 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e29b2120

dev-lang/ruby: add missing patches

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

 .../ruby/files/3.3/010-default-gem-location.patch  | 11 +++++
 dev-lang/ruby/files/3.3/901-musl-stacksize.patch   | 20 ++++++++
 .../files/3.3/902-hppa-pthread-stack-size.patch    | 54 ++++++++++++++++++++++
 3 files changed, 85 insertions(+)

diff --git a/dev-lang/ruby/files/3.3/010-default-gem-location.patch 
b/dev-lang/ruby/files/3.3/010-default-gem-location.patch
new file mode 100644
index 000000000000..36009ad66f61
--- /dev/null
+++ b/dev-lang/ruby/files/3.3/010-default-gem-location.patch
@@ -0,0 +1,11 @@
+--- a/tool/rbinstall.rb        2022-11-13 08:12:27.373041649 +0100
++++ b/tool/rbinstall.rb        2022-11-13 08:16:09.110406705 +0100
+@@ -994,7 +994,7 @@
+ end
+ 
+ install?(:ext, :comm, :gem, :'bundled-gems') do
+-  gem_dir = Gem.default_dir
++  gem_dir = ENV['GEM_DESTDIR']
+   install_dir = with_destdir(gem_dir)
+   prepare "bundled gems", gem_dir
+   RbInstall.no_write do

diff --git a/dev-lang/ruby/files/3.3/901-musl-stacksize.patch 
b/dev-lang/ruby/files/3.3/901-musl-stacksize.patch
new file mode 100644
index 000000000000..f18aa271ea65
--- /dev/null
+++ b/dev-lang/ruby/files/3.3/901-musl-stacksize.patch
@@ -0,0 +1,20 @@
+--- a/thread_pthread.c 2023-02-08 05:02:20.000000000 +0100
++++ b/thread_pthread.c 2023-03-10 17:46:25.694739053 +0100
+@@ -1033,7 +1033,7 @@
+ {
+     native_main_thread.id = pthread_self();
+ 
+-#if MAINSTACKADDR_AVAILABLE
++#if MAINSTACKADDR_AVAILABLE && !(defined(__linux__) && !defined(__GLIBC__))
+     if (native_main_thread.stack_maxsize) return;
+     {
+         void* stackaddr;
+@@ -2090,7 +2090,7 @@
+ 
+ #ifdef STACKADDR_AVAILABLE
+     if (get_stack(&base, &size) == 0) {
+-# ifdef __APPLE__
++# if defined(__APPLE__) || (defined(__linux__) && !defined(__GLIBC__))
+         if (pthread_equal(th->nt->thread_id, native_main_thread.id)) {
+             struct rlimit rlim;
+             if (getrlimit(RLIMIT_STACK, &rlim) == 0 && rlim.rlim_cur > size) {

diff --git a/dev-lang/ruby/files/3.3/902-hppa-pthread-stack-size.patch 
b/dev-lang/ruby/files/3.3/902-hppa-pthread-stack-size.patch
new file mode 100644
index 000000000000..96e24a340ad9
--- /dev/null
+++ b/dev-lang/ruby/files/3.3/902-hppa-pthread-stack-size.patch
@@ -0,0 +1,54 @@
+https://bugs.gentoo.org/701494
+
+From 40ccf3b91071d3603335b0b7095613ef1843f9e1 Mon Sep 17 00:00:00 2001
+From: Sam James <s...@gentoo.org>
+Date: Fri, 7 Apr 2023 11:46:12 +0100
+Subject: [PATCH] thread_pthread: Grow main_stack if required (fixes tests on
+ HPPA)
+
+On HPPA, test_insns.rb fails (along with various Ruby gems) with
+'stack level too deep (SystemStackError)'. This turns out to be because HPPA
+defaults to a small(er) stack.
+
+With this change, most of Ruby's test suite now passes on HPPA.
+
+Thanks to both Dave and Helge for the investigation and coming up with the
+patch.
+
+Bug: https://bugs.gentoo.org/701494
+Bug: https://bugs.debian.org/881773
+Bug: https://bugs.debian.org/881772 (for PPC64)
+Bug: https://github.com/rack/rack/issues/1640
+Thanks-to: John David Anglin <dave.ang...@bell.net>
+Thanks-to: Helge Deller <del...@gmx.de>
+Signed-off-by: Sam James <s...@gentoo.org>
+--- a/thread_pthread.c
++++ b/thread_pthread.c
+@@ -858,8 +858,22 @@ size_t pthread_get_stacksize_np(pthread_t);
+ #   define MAINSTACKADDR_AVAILABLE 0
+ # endif
+ #endif
+-#if MAINSTACKADDR_AVAILABLE && !defined(get_main_stack)
+-# define get_main_stack(addr, size) get_stack(addr, size)
++#if MAINSTACKADDR_AVAILABLE
++static int get_stack(void **, size_t *);
++static int
++get_main_stack(void **addr, size_t *size)
++{
++    int ret = get_stack(addr, size);
++
++#ifdef __hppa__
++    /* On some architectures, the initial stack size may be too small, but 
fortunately,
++       it's growable. Bump it up to the minimum needed if it is too small. */
++    if (*size < RUBY_VM_THREAD_VM_STACK_SIZE)
++        *size = RUBY_VM_THREAD_VM_STACK_SIZE;
++#endif
++
++    return ret;
++}
+ #endif
+ 
+ #ifdef STACKADDR_AVAILABLE
+-- 
+2.40.0
+

Reply via email to