summaryrefslogtreecommitdiff
path: root/repo/system/ruby
diff options
context:
space:
mode:
Diffstat (limited to 'repo/system/ruby')
-rw-r--r--repo/system/ruby/dont-install-bundled-gems.patch20
-rw-r--r--repo/system/ruby/ruby.xibuild48
-rw-r--r--repo/system/ruby/test_insns-lower-recursion-depth.patch47
3 files changed, 115 insertions, 0 deletions
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', <<-'},', ], # {