From 5170f5c85fe0e84fe8af55c6a024c7b6e844b0f1 Mon Sep 17 00:00:00 2001
From: davidovski <david@davidovski.xyz>
Date: Sat, 28 May 2022 19:37:22 +0100
Subject: fixed packages

---
 repo/system/ruby/dont-install-bundled-gems.patch   | 20 +++++++++
 repo/system/ruby/ruby.xibuild                      | 48 ++++++++++++++++++++++
 .../ruby/test_insns-lower-recursion-depth.patch    | 47 +++++++++++++++++++++
 3 files changed, 115 insertions(+)
 create mode 100644 repo/system/ruby/dont-install-bundled-gems.patch
 create mode 100644 repo/system/ruby/ruby.xibuild
 create mode 100644 repo/system/ruby/test_insns-lower-recursion-depth.patch

(limited to 'repo/system/ruby')

diff --git a/repo/system/ruby/dont-install-bundled-gems.patch b/repo/system/ruby/dont-install-bundled-gems.patch
new file mode 100644
index 0000000..2a913b9
--- /dev/null
+++ b/repo/system/ruby/dont-install-bundled-gems.patch
@@ -0,0 +1,20 @@
+Don't install bundled gems - we package them separately.
+
+--- a/tool/rbinstall.rb
++++ b/tool/rbinstall.rb
+@@ -1003,6 +1003,7 @@
+   end
+ end
+ 
++=begin XXX-Patched
+ install?(:ext, :comm, :gem, :'bundled-gems') do
+   if CONFIG['CROSS_COMPILING'] == 'yes'
+     # The following hacky steps set "$ruby = BASERUBY" in tool/fake.rb
+@@ -1104,6 +1105,7 @@
+     puts "skip installing bundled gems because of lacking zlib"
+   end
+ end
++=end
+ 
+ parse_args()
+ 
diff --git a/repo/system/ruby/ruby.xibuild b/repo/system/ruby/ruby.xibuild
new file mode 100644
index 0000000..3cc7f7b
--- /dev/null
+++ b/repo/system/ruby/ruby.xibuild
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+NAME="ruby"
+DESC="An object-oriented language for quick and easy programming"
+
+MAKEDEPS="make "
+DEPS="sbase cacerts gmp libucontext musl zlib "
+
+PKG_VER=3.1.2
+SOURCE="https://cache.ruby-lang.org/pub/ruby/${PKG_VER%.*}/ruby-$PKG_VER.tar.gz"
+ADDITIONAL="dont-install-bundled-gems.patch dont-install-bundled-gems.patch test_insns-lower-recursion-depth.patch "
+
+prepare () {
+    apply_patches
+}
+
+build () {
+    export CFLAGS="-O2 -fno-omit-frame-pointer -fno-strict-aliasing"
+	export CPPFLAGS="-O2 -fno-omit-frame-pointer -fno-strict-aliasing"
+
+	# Needed for coroutine stuff
+	export LIBS="-lucontext"
+
+	# ruby saves path to install. we want use $PATH
+	export INSTALL=install
+
+	# the configure script does not detect isnan/isinf as macros
+	export ac_cv_func_isnan=yes
+	export ac_cv_func_isinf=yes
+
+
+	./configure \
+		--prefix=/usr \
+		--sysconfdir=/etc \
+		--mandir=/usr/share/man \
+		--infodir=/usr/share/info \
+		--with-sitedir=/usr/local/lib/site_ruby \
+		--with-search-path="/usr/lib/site_ruby/\$(ruby_ver)/x86_64-linux" \
+		--enable-pthread \
+		--disable-rpath \
+		--enable-shared \
+		--with-mantype=man
+    make
+}
+
+package () {
+    make DESTDIR=$PKG_DEST install
+}
diff --git a/repo/system/ruby/test_insns-lower-recursion-depth.patch b/repo/system/ruby/test_insns-lower-recursion-depth.patch
new file mode 100644
index 0000000..0069720
--- /dev/null
+++ b/repo/system/ruby/test_insns-lower-recursion-depth.patch
@@ -0,0 +1,47 @@
+The patched test is a recursion function. We have lower stack size,
+so we hit SystemStackError sooner than on other platforms.
+
+  #361 test_insns.rb:389:in `block in <top (required)>':
+     # recursive once
+     def once n
+       return %r/#{
+         if n == 0
+           true
+         else
+           once(n-1)             # here
+         end
+       }/ox
+     end
+     x = once(128); x = once(7); x = once(16);
+     x =~ "true" && $~
+    #=> "" (expected "true")  once
+  Stderr output is not empty
+     bootstraptest.tmp.rb:3:in `once': stack level too deep (SystemStackError)
+             from bootstraptest.tmp.rb:7:in `block in once'
+             from bootstraptest.tmp.rb:3:in `once'
+             from bootstraptest.tmp.rb:7:in `block in once'
+             from bootstraptest.tmp.rb:3:in `once'
+             from bootstraptest.tmp.rb:7:in `block in once'
+             from bootstraptest.tmp.rb:3:in `once'
+             from bootstraptest.tmp.rb:7:in `block in once'
+             from bootstraptest.tmp.rb:3:in `once'
+              ... 125 levels...
+             from bootstraptest.tmp.rb:3:in `once'
+             from bootstraptest.tmp.rb:7:in `block in once'
+             from bootstraptest.tmp.rb:3:in `once'
+             from bootstraptest.tmp.rb:11:in `<main>'
+  Test_insns.rb           FAIL 1/187
+  FAIL 1/1197 tests failed
+  Make: *** [uncommon.mk:666: yes-btest-ruby] Error 1
+
+--- a/bootstraptest/test_insns.rb
++++ b/bootstraptest/test_insns.rb
+@@ -274,7 +274,7 @@
+         end
+       }/ox
+     end
+-    x = once(128); x = once(7); x = once(16);
++    x = once(32); x = once(7); x = once(16);
+     x =~ "true" && $~
+   },
+   [ 'once', <<-'},', ],         # {
-- 
cgit v1.2.1