summaryrefslogtreecommitdiff
path: root/libre/ruby/PKGBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'libre/ruby/PKGBUILD')
-rw-r--r--libre/ruby/PKGBUILD338
1 files changed, 272 insertions, 66 deletions
diff --git a/libre/ruby/PKGBUILD b/libre/ruby/PKGBUILD
index a296f17fe..dcb4bf7a8 100644
--- a/libre/ruby/PKGBUILD
+++ b/libre/ruby/PKGBUILD
@@ -1,78 +1,100 @@
-# Contributor (Arch): Thomas Dziedzic <gostrc@gmail.com>
-# Contributor (Arch): Allan McRae <allan@archlinux.org>
-# Contributor (Arch): John Proctor <jproctor@prium.net>
-# Contributor (Arch): Jeramy Rutley <jrutley@gmail.com>
-
+# Maintainer (arch): Anatol Pomozov <anatol.pomozov@gmail.com>
+# Maintainer (arch): Andreas 'Segaja' Schleifer <segaja at archlinux dot org>
+# Maintainer (arch): Tim Meusel <tim@bastelfreak.de>
+# Contributor: Thomas Dziedzic <gostrc@gmail.com>
+# Contributor: Allan McRae <allan@archlinux.org>
+# Contributor: John Proctor <jproctor@prium.net>
+# Contributor: Jeramy Rutley <jrutley@gmail.com>
# Maintainer: Omar Vega Ramos <ovruni@gnu.org.pe>
# Contributor: Daniel Milewski <niitotantei@riseup.net>
# Contributor: André Silva <emulatorman@hyperbola.info>
# Contributor: Luke Shumaker <lukeshu@parabola.nu>
# Contributor: fauno <fauno@parabola.nu>
-# Rationale for inclusion in [libre]: Problematic license of
-# generator.c in bundled json extension.
-#
-# https://labs.parabola.nu/issues/674
-# https://bugs.ruby-lang.org/issues/11844
-# https://github.com/flori/json/issues/277
+
+# parabola changes and rationale:
+# - replace non-free 'generator.c' in bundled JSON extension
+# https://labs.parabola.nu/issues/674
+# https://bugs.ruby-lang.org/issues/11844
+# https://github.com/flori/json/issues/277
+# https://github.com/flori/json/pull/567
+# - specify *which* BSD license
-pkgname=(ruby ruby-docs)
-pkgver=2.7.1
-_jsonver=2.3.0
+pkgname=(ruby ruby-docs ruby-stdlib ruby-bundledgems)
+pkgver=3.0.6
pkgrel=1
-pkgrel+=.parabola1
-_srcrel=1 # increment this to rebuild the sourceball without bumping pkgver
arch=(x86_64)
-arch+=(i686 armv7h)
url='https://www.ruby-lang.org/en/'
-license=(BSD2 custom)
-makedepends=(gdbm openssl libffi doxygen graphviz libyaml ttf-dejavu tk)
-options=(!emptydirs)
+license=(BSD custom)
+makedepends=(doxygen gdbm graphviz libffi libyaml openssl ttf-dejavu tk)
+options=(!emptydirs !lto) # Disable LTO until fixes for https://bugs.ruby-lang.org/issues/18062 released
+_osslver=3.0.0
source=(https://cache.ruby-lang.org/pub/ruby/${pkgver:0:3}/ruby-${pkgver}.tar.xz
- json-${_jsonver}.tar.gz::https://github.com/flori/json/archive/v${_jsonver}.tar.gz
- remove-json-ext.patch
- add-json_pure.patch
- json-libre.patch)
-sha512sums=('79f98b1ea98e0b10ec79da1883e8fc84d48ffe5c09ae945cbebde94365e35a589d919aac965f74d70ca7e21370ecee631ac5a8f9c4eac61d62f5aa629f27bf31'
- '0cda44a77212748d9513e61314dfbc7c0cf82beebcc56eb8b043e4ada698bc475502100389b80fa5c9090341fd1c6d2841fc5c9332e520f1c8dd1084ca505379'
- 'cce1402a062ab5a065e7554ae23189cb9c8de0acc27a4c96db5a90a52cfce37fde8d128e95b997e6df05d327d2279a8368276820dfad8b744747ea619ad187ab'
- '9ff8a2ec9fdecd05fd506ed6f977dcd483e47611dc6bbe6c4622100a2071c0f6c7b3f813a94b73bebb9f0ed7fe9f6257289cdf971030ad525a3c8a0d065b09c2'
- '582017bd0f98878c0ac6f4625854422662d83ae6274a34762082a720052023780dceb17694b1f4e18d9a0dcbb525990341176eac31040aa63099a8b3a8d52071')
+ ruby-openssl-$_osslver.tar.xz::https://github.com/ruby/openssl/archive/refs/tags/v$_osslver.tar.gz)
+sha512sums=('086516c563673692aa9cb63b82617397f8b845641b3eb09833989292d31f987af808ac1ae9aa6b0eee1688e5f3f7a0777017bfd4027142152ca939eba2b1a551'
+ 'SKIP'
+ '076d2924b61c4f7704b47718a33732fb5285a3af39f328ed9e83add36589da99dfae73b3e893398fc3f2a74dcbead0b66edc682040fa1b48f9530894c7187f95')
+b2sums=('461878ce72f6ec33365c21ab84db52225533f9967f005405b1675a49e77a11a737a8de7eed9c59fcddb2685ae2fb9ac879ad8252a112ccf51ca7bf1c8e9d118d'
+ 'SKIP'
+ '2eeb64caf188d79137686a8c5f0aa9d27860b3a3da8e0d4082f749beaa600928d814fe8cd70a6921358066603ce453d92838c1bce32509574ea333b6ca567fc8')
-prepare() {
- cd "$srcdir/json-${_jsonver}"
-
- # Modify 'json' so that it doesn't try to load (non-free!) 'json/ext'
- msg "applying json-libre.patch"
- rm -rf -- json.gemspec ext lib/json/ext*
- patch -p1 -i ../json-libre.patch
-
- # Now remove the json ext from the ruby sources
- cd "$srcdir/ruby-${pkgver}"
- msg "applying remove-json-ext.patch"
- rm -r ext/json test/json
- patch -p1 -i ../remove-json-ext.patch
-
- # and insert the json_pure lib instead
- msg "applying add-json_pure.patch"
- cp -r ../json-${_jsonver}/lib/* -t lib/
- cp ../json-${_jsonver}/json_pure.gemspec -t lib/json/
- cp -rT ../json-${_jsonver}/tests test/json
- patch -p1 -i ../add-json_pure.patch
-
- # Clean up the original json sources
- cd "$srcdir"
- rm -rf "json-${_jsonver}"
+# Parabola: Mundane packaging considerations.
+license=( ${license[*]/BSD/custom:BSD-2-Clause} )
+arch+=(armv7h i686)
+pkgrel+=.parabola1
+options+=(debug)
+
+# Parabola: Replace the CVTUTF code with a free implementation.
+# https://github.com/flori/json/pull/567
+# We need to do this in mksource() (not of prepare()) so that the
+# .src.pkg.tar file doesn't include nonfree sources.
+_jsonver=6e75be64c896e093075ec99bf94a3f5fc576c283
+_srcrel=1 # increment this to rebuild the sourceball (mksource, _jsonver) without bumping pkgver
+mksource=("${source[0]}"
+ "ruby-json-${_jsonver}.tar.gz::https://github.com/parabola-gnulinuxlibre/ruby-json/archive/${_jsonver}.tar.gz"
+ 0001-Prep-to-use-Parabola-s-patched-ruby-json.patch)
+mksha512sums=('abbf883cd9f3ddbd171df8f8c3cd35d930623c4c01a5e01387de0aee9811cca7604b82163e18e04f809773bf1ca5a450f13f62f3db14f191f610e116ae4fa6f8'
+ 'ce0a1399f0974e3919e85af9aa50e982a5e1adff7312f716033f6a19ce7044b046e037f19fcf43adaeff402c882bd0a3b045e93c245287a7f947754125eb39c6'
+ 'e2df05dea2014edd025f1ebeb9bffe121bfb49e4b45dc906f74b947f0d9f869dec5fee385533a2cf26057fcd226a0d0905b94ee8ca8a3f38cf511c39fa22ab12')
+mkb2sums=('e1fca86cdf267fc2289ef4d605fdf0023265c3a291ca4088361c0acd64310a7c41bf0750b4ac762157c20ceaa5df8bdc0a67374bcad9654bca5c3fc8630ff89c'
+ 'f1339558107ee1f4b9a54b63d601c9c4a78ed1a4cc148c3c57d963d5536a1b8ced66dd7cd4b7ea9bc2c5ee5fcb3801c028671884484e16ea7d57d0a49e16f317'
+ 'b0ec9e3d834c4260211838ce45211dde552b0f679b05fe523469e52416bc89ddc835746355b2b8bae9dcf1a26733d2968b134fa67712e5f60180134569470a73')
+source=("https://repo.parabola.nu/other/ruby-libre/ruby-${pkgver}-libre${_srcrel}.tar.gz"{,.sig} "${source[@]:1}")
+mkdepends=(ruby)
+mksource() {
+ mkdir "$srcdir/ruby"
+ mv -T "$srcdir/ruby-$pkgver" "$srcdir/ruby/ruby"
+
+ mkdir "$srcdir/flori"
+ mv -T "$srcdir/ruby-json-$_jsonver" "$srcdir/flori/json"
+
+ pushd "$srcdir/ruby/ruby"
+ patch -p1 -i ../../0001-Prep-to-use-Parabola-s-patched-ruby-json.patch
+ ruby tool/sync_default_gems.rb json
+ popd
+ mv -T "$srcdir/ruby/ruby" "$srcdir/ruby-${pkgver}"
+ rm -rf -- "$srcdir/ruby" "$srcdir/flori"
+}
+
+
+prepare() {
cd ruby-${pkgver}
- # remove bundled gems, we are going to ship them as separate packages
- rm -rf gems/
+ rm -rf ext/openssl test/openssl
+ mv ../openssl-$_osslver/ext/openssl ext
+ mv ../openssl-$_osslver/lib ext/openssl
+ mv ../openssl-$_osslver/{History.md,openssl.gemspec} ext/openssl
+ mv ../openssl-$_osslver/test/openssl test
}
build() {
cd ruby-${pkgver}
+ # this uses malloc_usable_size, which is incompatible with fortification level 3
+ export CFLAGS="${CFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}"
+ export CXXFLAGS="${CXXFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}"
+
./configure \
--prefix=/usr \
--sysconfdir=/etc \
@@ -89,12 +111,16 @@ build() {
check() {
cd ruby-${pkgver}
+ # this uses malloc_usable_size, which is incompatible with fortification level 3
+ export CFLAGS="${CFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}"
+ export CXXFLAGS="${CXXFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}"
+
make test
}
package_ruby() {
pkgdesc='An object-oriented language for quick and easy programming'
- depends=(gdbm openssl libffi libyaml gmp zlib rubygems ruby-irb)
+ depends=(gdbm openssl libffi libyaml libxcrypt gmp zlib rubygems ruby-stdlib ruby-bundledgems)
optdepends=(
'ruby-docs: Ruby documentation'
'tk: for Ruby/TK'
@@ -114,24 +140,92 @@ package_ruby() {
rm "${pkgdir}"/usr/bin/gem
# remove bundler as it shipped as a separate package
- rm -r "${pkgdir}"/usr/lib/ruby/${rubyver}/{bundler,bundler.rb}
rm "${pkgdir}"/usr/bin/{bundle,bundler}
- rm "${pkgdir}"/usr/lib/ruby/gems/${rubyver}/specifications/default/bundler-*.gemspec
- rm "${pkgdir}"/usr/share/man/man1/{bundle,bundle-*}.1
# remove bundled rdoc gem
- rm -r "${pkgdir}"/usr/lib/ruby/${rubyver}/{rdoc,rdoc.rb}
rm "${pkgdir}"/usr/bin/{rdoc,ri}
- rm "${pkgdir}"/usr/lib/ruby/gems/${rubyver}/specifications/default/rdoc-*.gemspec
+ rm "${pkgdir}"/usr/share/man/man1/ri.1
# remove irb as it is a separate package now
- rm -r "${pkgdir}"/usr/lib/ruby/${rubyver}/{irb,irb.rb}
rm "${pkgdir}"/usr/bin/irb
- rm "${pkgdir}"/usr/lib/ruby/gems/${rubyver}/specifications/default/irb-*.gemspec
rm "${pkgdir}"/usr/share/man/man1/irb.1
+ # remove other binaries that are shipped as separate packages
+ rm "${pkgdir}"/usr/bin/{rake,rbs,typeprof,erb,racc}
+ rm "${pkgdir}"/usr/share/man/man1/erb.1
+
# remove all bundled gems to avoid conflicts with ruby-* Arch packages
rm -r "${pkgdir}"/usr/lib/ruby/gems/${rubyver}/gems/*
+ rm "${pkgdir}"/usr/lib/ruby/gems/${rubyver}/specifications/*.gemspec
+ rm "${pkgdir}"/usr/lib/ruby/gems/${rubyver}/cache/*.gem
+
+ # remove already packaged stdlib gems (needs to be as dependency in ruby-stdlib)
+ local stdlib_gems=(
+ abbrev
+ base64
+ benchmark
+ bigdecimal
+ bundler
+ cgi
+ csv
+ date
+ delegate
+ did_you_mean
+ digest
+ drb
+ english
+ erb
+ etc
+ fcntl
+ fiddle
+ fileutils
+ find
+ forwardable
+ getoptlong
+ io-console
+ io-nonblock
+ io-wait
+ ipaddr
+ irb
+ json
+ logger
+ mutex_m
+ net-http
+ open-uri
+ psych
+ racc
+ rdoc
+ reline
+ stringio
+ time
+ tmpdir
+ uri
+ )
+
+ for stdlib_gem in "${stdlib_gems[@]}"; do
+ # Parabola: We've replaced "x86_64-linux" with *-linux*".
+ rm --force --recursive --verbose \
+ "${pkgdir}"/usr/lib/ruby/${rubyver}/${stdlib_gem} \
+ "${pkgdir}"/usr/lib/ruby/${rubyver}/${stdlib_gem}.rb \
+ "${pkgdir}"/usr/lib/ruby/${rubyver}/*-linux*/${stdlib_gem}.so \
+ "${pkgdir}"/usr/lib/ruby/gems/${rubyver}/specifications/default/${stdlib_gem}-*.gemspec
+ done
+
+ # Parabola: We've replaced "x86_64-linux" with *-linux*".
+ rm --recursive --verbose \
+ "${pkgdir}"/usr/lib/ruby/${rubyver}/English.rb \
+ "${pkgdir}"/usr/lib/ruby/${rubyver}/io/console \
+ "${pkgdir}"/usr/lib/ruby/${rubyver}/net/http \
+ "${pkgdir}"/usr/lib/ruby/${rubyver}/net/http.rb \
+ "${pkgdir}"/usr/lib/ruby/${rubyver}/net/https.rb \
+ "${pkgdir}"/usr/lib/ruby/${rubyver}/*-linux*/cgi \
+ "${pkgdir}"/usr/lib/ruby/${rubyver}/*-linux*/date_core.so \
+ "${pkgdir}"/usr/lib/ruby/${rubyver}/*-linux*/digest \
+ "${pkgdir}"/usr/lib/ruby/${rubyver}/*-linux*/io/console.so \
+ "${pkgdir}"/usr/lib/ruby/${rubyver}/*-linux*/io/nonblock.so \
+ "${pkgdir}"/usr/lib/ruby/${rubyver}/*-linux*/io/wait.so \
+ "${pkgdir}"/usr/lib/ruby/${rubyver}/*-linux*/json \
+ "${pkgdir}"/usr/lib/ruby/${rubyver}/*-linux*/racc
}
package_ruby-docs() {
@@ -143,8 +237,120 @@ package_ruby-docs() {
install -D -m644 COPYING "${pkgdir}/usr/share/licenses/ruby-docs/LICENSE"
install -D -m644 BSDL "${pkgdir}/usr/share/licenses/ruby-docs/BSDL"
+}
+
+package_ruby-stdlib() {
+ # upstream list of gems contained in stdlib ( https://github.com/ruby/ruby/tree/master/{ext,lib} )
+ pkgdesc='A vast collection of classes and modules that you can require in your code for additional features'
+
+ depends=(
+ ruby-abbrev
+ ruby-base64
+ ruby-benchmark
+ ruby-bigdecimal
+ ruby-bundler
+ ruby-cgi
+ ruby-csv
+ ruby-date
+ #ruby-dbm # removed in 3.1.2
+ #ruby-debug # removed in 3.1.2
+ ruby-delegate
+ ruby-did_you_mean
+ ruby-digest
+ ruby-drb
+ ruby-english
+ ruby-erb
+ ruby-etc
+ ruby-fcntl
+ ruby-fiddle
+ ruby-fileutils
+ ruby-find
+ ruby-forwardable
+ #ruby-gdbm # removed in 3.1.2
+ ruby-getoptlong
+ ruby-io-console
+ ruby-io-nonblock
+ ruby-io-wait
+ ruby-ipaddr
+ ruby-irb
+ ruby-json
+ ruby-logger
+ #ruby-matrix # removed in 3.1.2
+ ruby-mutex_m
+ #ruby-net-ftp # removed in 3.1.2
+ ruby-net-http
+ #ruby-net-imap # removed in 3.1.2
+ #ruby-net-pop # removed in 3.1.2
+ #ruby-net-protocol
+ #ruby-net-smtp # removed in 3.1.2
+ #ruby-nkf
+ #ruby-observer
+ ruby-open-uri
+ #ruby-open3
+ #ruby-openssl
+ #ruby-optparse
+ #ruby-ostruct
+ #ruby-pathname
+ #ruby-pp
+ #ruby-prettyprint
+ #ruby-prime # removed in 3.1.2
+ #ruby-pstore
+ ruby-psych
+ ruby-racc
+ ruby-rdoc
+ #ruby-readline
+ #ruby-readline-ext
+ ruby-reline
+ #ruby-resolv
+ #ruby-resolv-replace
+ #ruby-rinda
+ #ruby-securerandom
+ #ruby-set
+ #ruby-shellwords
+ #ruby-singleton
+ ruby-stringio
+ #ruby-strscan
+ #ruby-syslog
+ #ruby-tempfile
+ ruby-time
+ #ruby-timeout
+ ruby-tmpdir
+ #ruby-tracer # removed in 3.1.2
+ #ruby-tsort
+ #ruby-un
+ ruby-uri
+ #ruby-weakref
+ #ruby-yaml
+ #ruby-zlib
- # sometimes it installs ruby/capi/doxygen_objdb_XXXXXXX.tmp;
- # otherwise /usr/share/doc is empty
- rm -rf "$pkgdir/usr/share/doc"
+ #ruby-error_highlight # new in 3.2.1
+ #ruby2_keywords # new in 3.1.2 - already exists in [community]
+ )
}
+
+package_ruby-bundledgems() {
+ # upstream list of bundled gems ( https://github.com/ruby/ruby/blob/master/gems/bundled_gems )
+ pkgdesc='Ruby Gems (third-party libraries) that are installed by default when Ruby is installed'
+
+ depends=(
+ ruby-minitest
+ ruby-power_assert
+ ruby-rake
+ #ruby-rbs
+ ruby-rexml
+ #ruby-rss
+ ruby-test-unit
+ #ruby-typeprof
+
+ # --- new in 3.1.2
+ #ruby-debug
+ #ruby-matrix
+ #ruby-net-ftp
+ #ruby-net-imap
+ #ruby-net-pop
+ #ruby-net-smtp
+ #ruby-prime
+ )
+}
+
+# vim: tabstop=2 shiftwidth=2 expandtab: