aboutsummaryrefslogtreecommitdiffstats
path: root/main/ruby/APKBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'main/ruby/APKBUILD')
-rw-r--r--main/ruby/APKBUILD305
1 files changed, 105 insertions, 200 deletions
diff --git a/main/ruby/APKBUILD b/main/ruby/APKBUILD
index 95d7251471a..b7c061773db 100644
--- a/main/ruby/APKBUILD
+++ b/main/ruby/APKBUILD
@@ -1,9 +1,22 @@
# Contributor: Carlo Landmeter <clandmeter@alpinelinux.org>
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
-# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
#
# secfixes:
+# 3.1.4-r0:
+# - CVE-2023-28755
+# - CVE-2023-28756
+# 3.1.3-r0:
+# - CVE-2021-33621
+# 3.1.2-r0:
+# - CVE-2022-28738
+# - CVE-2022-28739
+# 3.0.3-r0:
+# - CVE-2021-41817
+# - CVE-2021-41816
+# - CVE-2021-41819
# 2.7.4-r0:
+# - CVE-2021-31799
# - CVE-2021-31810
# - CVE-2021-32066
# 2.7.3-r0:
@@ -42,7 +55,10 @@
# - CVE-2017-17405
#
pkgname=ruby
-pkgver=2.7.4
+# When upgrading, upgrade also each ruby-<name> aport listed in file
+# gems/bundled_gems. If some aport is missing or not in the main repo,
+# create/move it.
+pkgver=3.3.0
_abiver="${pkgver%.*}.0"
pkgrel=0
pkgdesc="An object-oriented language for quick and easy programming"
@@ -50,37 +66,42 @@ url="https://www.ruby-lang.org/"
arch="all"
license="Ruby AND BSD-2-Clause AND MIT"
depends="ca-certificates"
-depends_dev="$pkgname=$pkgver-r$pkgrel gmp-dev libucontext-dev"
-makedepends="$depends_dev zlib-dev openssl-dev gdbm-dev readline-dev
- libffi-dev coreutils yaml-dev linux-headers autoconf"
+depends_dev="
+ $pkgname=$pkgver-r$pkgrel
+ $pkgname-rdoc=$pkgver-r$pkgrel
+ gmp-dev
+ libucontext-dev
+ "
+makedepends="$depends_dev
+ autoconf
+ cargo
+ gdbm-dev
+ libffi-dev
+ linux-headers
+ openssl-dev>3
+ readline-dev
+ yaml-dev
+ zlib-dev
+ "
install="$pkgname.post-upgrade"
subpackages="$pkgname-dbg $pkgname-doc $pkgname-dev
- $pkgname-bigdecimal
- $pkgname-etc
- $pkgname-fiddle
- $pkgname-gdbm
- $pkgname-io-console:io_console
- $pkgname-irb::noarch
- $pkgname-json
- $pkgname-minitest::noarch
- $pkgname-net-telnet:net_telnet:noarch
- $pkgname-power_assert::noarch
- $pkgname-rake::noarch
$pkgname-rdoc::noarch
- $pkgname-sdbm
- $pkgname-test-unit:test_unit:noarch
- $pkgname-webrick::noarch
- $pkgname-xmlrpc::noarch
$pkgname-libs
$pkgname-full::noarch
"
source="https://cache.ruby-lang.org/pub/ruby/${pkgver%.*}/ruby-$pkgver.tar.gz
- rubygems-avoid-platform-specific-gems.patch
test_insns-lower-recursion-depth.patch
fix-get_main_stack.patch
+ dont-install-bundled-gems.patch
+ fix-riscv64-build.patch
"
replaces="ruby-gems"
+# For backward compatibility (pre 3.x).
+for _i in bigdecimal etc fiddle gdbm io-console irb json; do
+ provides="$provides ruby-$_i=$pkgver-r$pkgrel"
+done
+
_gemdir="/usr/lib/ruby/gems/$_abiver"
_rubydir="/usr/lib/ruby/$_abiver"
_chost="${CHOST/-alpine-/-}"
@@ -90,14 +111,6 @@ case "$CARCH" in
*) _arch="$CARCH";;
esac
-_bundled_gems=
-for _i in $subpackages; do
- case "$_i" in
- *-dev | *-doc | *-libs | *-full:*) continue;;
- *) _bundled_gems="$_bundled_gems ${_i%%:*}";;
- esac
-done
-
prepare() {
default_prepare
autoconf
@@ -105,17 +118,29 @@ prepare() {
# v2.7.1 - Of all the bootstraptest only test_fiber fails on s390x:
# test_fiber.rb bootstraptest.tmp.rb:8: [BUG] vm_call_cfunc: cfp consistency error (0x000003ffb63fefb0, 0x000003ffb42f5f58)
case "$CARCH" in
- s390x)
- rm bootstraptest/test_fiber.rb ;;
+ s390x) rm bootstraptest/test_fiber.rb;;
esac
+
+ local name ver; while read -r name ver _; do
+ case "$name=$ver" in
+ [a-z]*=[0-9]*.[0-9]*)
+ if ! apk add -qs "ruby-$name>=$ver" >/dev/null 2>&1; then
+ warning "bump package ruby-$name to version $ver"
+ fi
+ echo "ruby-$name>=$ver" >> "$srcdir"/.ruby-full.depends
+ esac
+ done < "$builddir"/gems/bundled_gems
}
build() {
# -fomit-frame-pointer makes ruby segfault, see gentoo bug #150413
- # In many places aliasing rules are broken; play it safe
- # as it's risky with newer compilers to leave it as it is.
- export CFLAGS="$CFLAGS -fno-omit-frame-pointer -fno-strict-aliasing"
- export CPPFLAGS="$CPPFLAGS -fno-omit-frame-pointer -fno-strict-aliasing"
+ # In many places aliasing rules are broken; play it safe
+ # as it's risky with newer compilers to leave it as it is.
+ # -O2 - ruby is a language runtime, so performance is crucial. Moreover,
+ # ruby 3.1.1 fails with Bus Error when compiled with -Os on armhf/armv7.
+ # This makes ruby-libs 7% bigger (13.4 -> 14.4 MiB).
+ export CFLAGS="${CFLAGS/-Os/} -fno-omit-frame-pointer -fno-strict-aliasing"
+ export CPPFLAGS="${CPPFLAGS/-Os/} -fno-omit-frame-pointer -fno-strict-aliasing"
# Needed for coroutine stuff
export LIBS="-lucontext"
@@ -123,6 +148,12 @@ build() {
# ruby saves path to install. we want use $PATH
export INSTALL=install
+ case "$CARCH" in
+ # Ruby segfaults when built with default (-O3).
+ # See https://bugs.ruby-lang.org/issues/20099.
+ s390x) export optflags="-O2";;
+ esac
+
# the configure script does not detect isnan/isinf as macros
export ac_cv_func_isnan=yes
export ac_cv_func_isinf=yes
@@ -144,211 +175,85 @@ build() {
}
check() {
- make test
+ # https://bugs.ruby-lang.org/issues/18380
+ local disable_tests="-n !/TestAddressResolve#test_socket_getnameinfo_domain_blocking/"
+
+ case "$CARCH" in
+ x86 | armhf | armv7)
+ # TestReadline#test_interrupt_in_other_thread fails on 32 bit arches according
+ # to upstream, but the test is disabled just on Travis, not in test suite.
+ # https://bugs.ruby-lang.org/issues/18393
+ disable_tests="$disable_tests -n !/TestReadline#test_interrupt_in_other_thread/"
+ ;;
+ esac
+
+ make test TESTS="$disable_tests"
}
package() {
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" SUDO="" install
install -m 644 -D COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
+ cd "$pkgdir"
+
# Remove bundled gem bundler; it's provided by a separate aport/package
# ruby-bundler.
- subpkgdir=".trash" _mvgem bundler && rm -Rf .trash
+ rm -rf ./$_rubydir/bundler
+ rm ./$_rubydir/bundler.rb
+ rm -rf ./$_gemdir/gems/bundler-*
+ rm ./$_gemdir/specifications/default/bundler-*.gemspec
rm usr/bin/bundle usr/bin/bundler
- rm usr/share/man/man1/bundle* usr/share/man/man5/gemfile.5*
# Remove bundled CA certificates; they are provided by ca-certificates.
- rm "$pkgdir"/$_rubydir/rubygems/ssl_certs/*/*.pem
- rmdir "$pkgdir"/$_rubydir/rubygems/ssl_certs/* || true
+ rm ./$_rubydir/rubygems/ssl_certs/*/*.pem
+ rmdir ./$_rubydir/rubygems/ssl_certs/* || true
- rm -Rf "$pkgdir"/$_gemdir/cache/*
+ rm -Rf ./$_gemdir/cache/*
- if [ -d "$pkgdir"/usr/local ]; then
- local f=$(cd "$pkgdir" ; find usr/local -type f)
+ if [ -d usr/local ]; then
+ local f=$(find usr/local -type f)
if [ -n "$f" ]; then
error "Found files in /usr/local:"
echo "$f"
return 1
fi
- rm -r "$pkgdir"/usr/local
+ rm -r usr/local
fi
}
-bigdecimal() {
- pkgdesc="Ruby arbitrary-precision floating point decimal arithmetic"
- license="Ruby"
- depends="$pkgname-libs"
-
- _mvgem bigdecimal
-}
-
-etc() {
- pkgdesc="Provides access to information typically stored in UNIX /etc directory"
- license="BSD-2-Clause"
- depends=""
-
- _mvgem etc
-}
-
-fiddle() {
- pkgdesc="A libffi wrapper for Ruby"
- license="BSD-2-Clause"
- depends=""
-
- _mvgem fiddle
-}
-
-gdbm() {
- pkgdesc="Ruby extension for GNU dbm"
- license="BSD-2-Clause"
- depends=""
-
- _mvgem gdbm
-}
-
-io_console() {
- pkgdesc="Ruby simple console IO library"
- license="BSD-2-Clause"
- depends=""
-
- _mvgem io-console
- _mv $_rubydir/io \
- $_rubydir/$_chost/io/console.so
-}
-
-irb() {
- pkgdesc="The Interactive Ruby"
- replaces="$pkgname"
- depends="$pkgname $pkgname-io-console"
-
- cd "$pkgdir"
- _mvgem irb
- _mv usr/bin/irb
-}
-
-json() {
- pkgdesc="JSON implementation as a Ruby extension in C"
- license="Ruby"
- depends=""
-
- _mvgem json
-}
-
-minitest() {
- pkgdesc="Ruby suite of testing facilities"
- license="MIT"
- depends="$pkgname"
-
- _mvgem minitest
-}
-
-net_telnet() {
- pkgdesc="Telnet client functionality for Ruby"
- depends="$pkgname-libs"
-
- _mvgem net-telnet
-}
-
-power_assert() {
- pkgdesc="Power Assert for Ruby"
- depends="$pkgname-libs"
-
- _mvgem power_assert
-}
-
-rake() {
- pkgdesc="Ruby based make-like utility"
- license="MIT"
- depends="$pkgname"
-
- _mvgem rake
- _mv usr/bin/rake
-}
-
rdoc() {
pkgdesc="Ruby documentation tool"
license="Ruby"
- depends="$pkgname $pkgname-json $pkgname-io-console"
-
- _mvgem rdoc
- _mv usr/bin/ri \
- usr/bin/rdoc
-}
-
-sdbm() {
- pkgdesc="A simple file-based key-value store with String keys and values for Ruby"
- license="BSD-2-Clause"
- depends=""
-
- _mvgem sdbm
-}
-
-test_unit() {
- pkgdesc="An xUnit family unit testing framework for Ruby"
- license="Ruby PSFL"
- depends="$pkgname $pkgname-power_assert"
-
- _mvgem test-unit
-}
-
-webrick() {
- pkgdesc="HTTP server toolkit for Ruby"
- license="BSD-2-Clause"
- depends="$pkgname $pkgname-etc"
-
- _mvgem webrick
-}
-
-xmlrpc() {
- pkgdesc="XMLRPC library for Ruby"
- license="Ruby"
- depends="$pkgname-libs"
+ depends="$pkgname"
- _mvgem xmlrpc
+ amove $_rubydir/rdoc
+ amove $_gemdir/gems/rdoc-*
+ amove $_gemdir/specifications/default/rdoc-*
+ amove usr/bin/ri
+ amove usr/bin/rdoc
}
libs() {
pkgdesc="Libraries necessary to run Ruby"
depends=""
- mkdir -p "$subpkgdir"/usr
- mv "$pkgdir"/usr/lib "$subpkgdir"/usr/
+ amove usr/lib
}
full() {
pkgdesc="Ruby with all bundled gems"
# bundler is bundled since Ruby 2.6, so include it in ruby-full despite
# that it's provided by a seprate aport/package.
- depends="ruby $_bundled_gems ruby-bundler"
+ depends="ruby ruby-rdoc ruby-bundler $(cat "$srcdir"/.ruby-full.depends)"
mkdir -p "$subpkgdir"
}
-_mv() {
- local i; for i in "$@"; do
- mkdir -p "$subpkgdir"/${i%/*}
- mv "$pkgdir"/$i "$subpkgdir"/${i%/*}/
- done
-}
-
-_mvgem() {
- cd "$pkgdir"
- local path; for path in ./$_rubydir/$1.rb \
- ./$_rubydir/$1 \
- ./$_rubydir/$_chost/$1 \
- ./$_rubydir/$_chost/$1.so \
- ./$_gemdir/gems/$1-* \
- ./$_gemdir/specifications/$1-* \
- ./$_gemdir/specifications/default/$1-* ; do
- [ ! -e "$pkgdir/$path" ] || _mv "$path"
- done
-}
-
-
sha512sums="
-a317752e9a32c8d1261e67ca89c396722ee779ec8ba4594987812d065b73751f51485a1ede8044aae14b3b16e8d049c6953cef530ae1b82abb135b446c653f8a ruby-2.7.4.tar.gz
-a142199140fa711a64717429e9069fd2082319abaf4b129f561db374b3bc16e2a90cc4c849b5d28334505d1c71fed242aef3c44d983da3513d239dcb778673a5 rubygems-avoid-platform-specific-gems.patch
-43c1fc80f0dcb4f24d891478889808583da90dc9e0df74c3b1cf41253c13a0d416d2b7ae17e7d53ac1238340a845b088f0fe20324a79905cc6b950b3dcfa4ac6 test_insns-lower-recursion-depth.patch
-3ffc034c01110ee5531265333ca5ee8d61d08131843fe3004c5b34c88c9c1b32cb4ed89574f393177c8bd526e9c15da61ab344f93adf07b9148c561ee19e2eb5 fix-get_main_stack.patch
+26074009b501fc793d71a74e419f34a6033c9353433919ca74ba2d24a3de432dbb11fd92c2bc285f0e4d951a6d6c74bf5b69a2ab36200c8c26e871746d6e0fc6 ruby-3.3.0.tar.gz
+16fc1f35aee327d1ecac420b091beaa53c675e0504d5a6932004f17ca68a2c38f57b053b0a3903696f2232c5add160d363e3972a962f7f7bcb52e4e998c7315d test_insns-lower-recursion-depth.patch
+42cd45c1db089a1ae57834684479a502e357ddba82ead5fa34e64c13971e7ab7ad2919ddd60a104a817864dd3e2e35bdbedb679210eb41d82cab36a0687e43d4 fix-get_main_stack.patch
+a77da5e5eb7d60caf3f1cabb81e09b88dc505ddd746e34efd1908c0096621156d81cc65095b846ba9bdb66028891aefce883a43ddec6b56b5beb4aac5e4ee33f dont-install-bundled-gems.patch
+000530316af1fca007fe8cee694b59e2e801674bcc1a2ebea95e67745d4afc0ce66c902fdbc88ee847a4fbf55115b183cd803cbf7c98ef685938efb3e2b7c991 fix-riscv64-build.patch
"