From 3435e5ef3ae1e2ab77dcd37e2b233bebc3d4f122 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Thu, 6 Oct 2022 01:31:19 +0000 Subject: [PATCH] added community/ruby --- community/ruby/PKGBUILD | 276 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 276 insertions(+) create mode 100644 community/ruby/PKGBUILD diff --git a/community/ruby/PKGBUILD b/community/ruby/PKGBUILD new file mode 100644 index 000000000..d92188db2 --- /dev/null +++ b/community/ruby/PKGBUILD @@ -0,0 +1,276 @@ +# Maintainer: Anatol Pomozov +# Maintainer: Andreas 'Segaja' Schleifer +# Maintainer: Tim Meusel +# Contributor: Thomas Dziedzic +# Contributor: Allan McRae +# Contributor: John Proctor +# Contributor: Jeramy Rutley + +# ALARM: Kevin Mihelich +# - generalize arch-dependent removal of gem remains + +pkgname=(ruby ruby-docs ruby-stdlib ruby-bundledgems) +pkgver=3.0.4 +pkgrel=18 +arch=(x86_64) +url='https://www.ruby-lang.org/en/' +license=(BSD custom) +makedepends=(gdbm openssl libffi doxygen graphviz libyaml ttf-dejavu tk) +options=(debug !emptydirs !lto) # Disable LTO until fixes for https://bugs.ruby-lang.org/issues/18062 released +source=(https://cache.ruby-lang.org/pub/ruby/${pkgver:0:3}/ruby-${pkgver}.tar.xz) +sha512sums=('53bf7dd403b0c68af9691882ad8ed7422c8d1f496627428fb4c3caf0b0313715524b744c5f453aced2d49e16e55f3f45b46b9a77aa3097dbfcae7caa0208194b') + +build() { + cd ruby-${pkgver} + + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --sharedstatedir=/var/lib \ + --libexecdir=/usr/lib/ruby \ + --enable-shared \ + --disable-rpath \ + --with-dbm-type=gdbm_compat + + make +} + +check() { + cd ruby-${pkgver} + + make test +} + +package_ruby() { + pkgdesc='An object-oriented language for quick and easy programming' + depends=(gdbm openssl libffi libyaml libxcrypt gmp zlib rubygems ruby-stdlib ruby-bundledgems) + optdepends=( + 'ruby-docs: Ruby documentation' + 'tk: for Ruby/TK' + ) + + cd ruby-${pkgver} + + make DESTDIR="${pkgdir}" install-nodoc + + install -D -m644 COPYING "${pkgdir}/usr/share/licenses/ruby/LICENSE" + install -D -m644 BSDL "${pkgdir}/usr/share/licenses/ruby/BSDL" + + rubyver=${pkgver:0:3}.0 + + # remove rubygems as it shipped as a separate package + rm -r "${pkgdir}"/usr/lib/ruby/${rubyver}/{rubygems,rubygems.rb} + rm "${pkgdir}"/usr/bin/gem + + # remove bundler as it shipped as a separate package + rm "${pkgdir}"/usr/bin/{bundle,bundler} + + # remove bundled rdoc gem + rm "${pkgdir}"/usr/bin/{rdoc,ri} + rm "${pkgdir}"/usr/share/man/man1/ri.1 + + # remove irb as it is a separate package now + rm "${pkgdir}"/usr/bin/irb + 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 + 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 + + 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() { + pkgdesc='Documentation files for ruby' + + cd ruby-${pkgver} + + make DESTDIR="${pkgdir}" install-doc install-capi + + 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 + + #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 + ) +}