PKGBUILDs/community/ruby/PKGBUILD
2022-11-05 02:39:03 +00:00

290 lines
7.5 KiB
Bash

# Maintainer: Anatol Pomozov <anatol.pomozov@gmail.com>
# Maintainer: Andreas 'Segaja' Schleifer <segaja at archlinux dot org>
# Maintainer: 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>
# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
# - generalize arch-dependent removal of gem remains
pkgname=(ruby ruby-docs ruby-stdlib ruby-bundledgems)
pkgver=3.0.4
pkgrel=20
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
_osslver=3.0.0
source=(https://cache.ruby-lang.org/pub/ruby/${pkgver:0:3}/ruby-${pkgver}.tar.xz
ruby-openssl-$_osslver.tar.xz::https://github.com/ruby/openssl/archive/refs/tags/v$_osslver.tar.gz)
sha512sums=('53bf7dd403b0c68af9691882ad8ed7422c8d1f496627428fb4c3caf0b0313715524b744c5f453aced2d49e16e55f3f45b46b9a77aa3097dbfcae7caa0208194b'
'076d2924b61c4f7704b47718a33732fb5285a3af39f328ed9e83add36589da99dfae73b3e893398fc3f2a74dcbead0b66edc682040fa1b48f9530894c7187f95')
prepare() {
cd ruby-${pkgver}
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}
./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
)
}