diff options
Diffstat (limited to 'main/ruby/APKBUILD')
-rw-r--r-- | main/ruby/APKBUILD | 305 |
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 " |