diff options
Diffstat (limited to 'main/ruby/APKBUILD')
-rw-r--r-- | main/ruby/APKBUILD | 358 |
1 files changed, 126 insertions, 232 deletions
diff --git a/main/ruby/APKBUILD b/main/ruby/APKBUILD index 6f287a710c4..b7c061773db 100644 --- a/main/ruby/APKBUILD +++ b/main/ruby/APKBUILD @@ -1,10 +1,31 @@ -# Contributor: Carlo Landmeter <clandmeter@gmail.com> +# 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: +# - CVE-2021-28965 +# - CVE-2021-28966 +# 2.7.2-r0: +# - CVE-2020-25613 # 2.6.6-r0: -# - CVE-2020-16255 +# - CVE-2020-10663 # - CVE-2020-10933 # 2.6.5-r0: # - CVE-2019-16255 @@ -34,48 +55,53 @@ # - CVE-2017-17405 # pkgname=ruby -pkgver=2.7.1 +# 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=3 +pkgrel=0 pkgdesc="An object-oriented language for quick and easy programming" url="https://www.ruby-lang.org/" arch="all" -license="Ruby BSD-2-Clause" +license="Ruby AND BSD-2-Clause AND MIT" depends="ca-certificates" -depends_dev="$pkgname=$pkgver-r$pkgrel gmp-dev" -makedepends="$depends_dev zlib-dev openssl-dev gdbm-dev db-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-dbm - $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 - openssl-config-support-include-directive.patch - arm-coroutines.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-/-}" @@ -85,52 +111,52 @@ case "$CARCH" in *) _arch="$CARCH";; esac -# s390x/mips require libucontext -case "$CARCH" in - s390x|mips*) - depends_dev="$depends_dev libucontext-dev" - makedepends="$makedepends libucontext-dev" - ;; -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 - # XXX: Fix broken symlinks pointing to nowhere. - rm tool/config.sub tool/config.guess - touch tool/config.sub tool/config.guess - update_config_sub - update_config_guess + # 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;; + esac - autoconf + 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" # 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 - case "$CARCH" in - s390x|mips*) - export LIBS="-lucontext" - ;; - esac ./configure \ --build=$CBUILD \ @@ -139,7 +165,7 @@ build() { --sysconfdir=/etc \ --mandir=/usr/share/man \ --infodir=/usr/share/info \ - --with-sitedir='/usr/local/lib/site_ruby' \ + --with-sitedir=/usr/local/lib/site_ruby \ --with-search-path="/usr/lib/site_ruby/\$(ruby_ver)/$_arch-linux" \ --enable-pthread \ --disable-rpath \ @@ -149,217 +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 # 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 -} - -dbm() { - pkgdesc="A Ruby wrapper for the UNIX-style Database Manager Library" - license="BSD-2-Clause" - depends="" - - _mvgem dbm -} - -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" - - 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" - _mvgem webrick -} - -xmlrpc() { - pkgdesc="XMLRPC library for Ruby" - license="Ruby" - depends="$pkgname-libs" - - _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="d54ec78d46644269a200cc64c84beed1baaea74189e0ffc167f90f4b9540bb6d9e7b19807c0990e1b13738b83d1e2bb4c712396d033db6a7501e6046fff12839 ruby-2.7.1.tar.gz -cfdc5ea3b2e2ea69c51f38e8e2180cb1dc27008ca55cc6301f142ebafdbab31c3379b3b6bba9ff543153876dd98ed2ad194df3255b7ea77a62e931c935f80538 rubygems-avoid-platform-specific-gems.patch -814fe6359505b70d8ff680adf22f20a74b4dbd3fecc9a63a6c2456ee9824257815929917b6df5394ed069a6869511b8c6dce5b95b4acbbb7867c1f3a975a0150 test_insns-lower-recursion-depth.patch -8d730f02f76e53799f1c220eb23e3d2305940bb31216a7ab1e42d3256149c0721c7d173cdbfe505023b1af2f5cb3faa233dcc1b5d560fa8f980c17c2d29a9d81 fix-get_main_stack.patch -a67813d7aa3553ed336f04b17461c5129546afb71a2a7cca6d1b1c860f8dd5839ca2f7695c971369f295aced3580687a28881ccd6c305f6dbdfe6b0ecf584d0e openssl-config-support-include-directive.patch -eaee5cd1b11506df5d28d6ac909b0eae55d88e7fbb471a0cee1be7293934980a36616603a5bcb5cf8bf8518e5f313e2bba566c52bd57afe62505c8e02b0a7b87 arm-coroutines.patch" +sha512sums=" +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 +" |