extra/ruby to 3.2.4-1

This commit is contained in:
Kevin Mihelich 2024-08-09 18:25:43 +00:00
parent 946c0dc190
commit 212d2be0f8
4 changed files with 580 additions and 212 deletions

189
extra/ruby/.SRCINFO Normal file
View file

@ -0,0 +1,189 @@
pkgbase = ruby
pkgdesc = An object-oriented language for quick and easy programming
pkgver = 3.2.4
pkgrel = 1
url = https://www.ruby-lang.org/en/
arch = x86_64
license = BSD-2-Clause
checkdepends = inetutils
checkdepends = procps-ng
makedepends = doxygen
makedepends = gcc-libs
makedepends = gdbm
makedepends = glibc
makedepends = gmp
makedepends = graphviz
makedepends = libffi
makedepends = libxcrypt
makedepends = libyaml
makedepends = openssl
makedepends = readline
makedepends = rust
makedepends = tk
makedepends = zlib
options = !emptydirs
source = https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.4.tar.xz
source = ruby-3.2-openssl-3.3-fix.patch::https://github.com/ruby/ruby/commit/dd5e625d7bcb7dc849fdbc2ad8053f9c2724efb4.patch
sha512sums = fb0af37be4b6ad7b98ab9f8a508952238ee68b5828e3926331e4db52e2ebc1e6046f31114069322db0cd3bea7c9b82ace91c8564573ddcfa1f960877b237dbff
sha512sums = 52351374fc9aa9c3576bfb4b62df1d1d8dbe7327270a4d1c5777d247a33d6e6528b08a537fc4c87d9d0cc54b4b9183848f6c54d54fc727871b3e511b7a73ddb7
b2sums = 9c2300a958b03528d51f0d74a069c8c538ca4009835d55377509a000bcfb43893a8a80d8fda57011e77c72e6283cb259281d5ba7b37444546e49f2a9ad515cf3
b2sums = 1ee662e57f9f29b4ab29b391b38b988a8b5c199e62c815353c3a47e6eceea910344c7d9a00512916e05b6404efddf941313dfdcb0bec027f7f668443309228b9
pkgname = ruby
depends = gcc-libs
depends = gdbm
depends = glibc
depends = gmp
depends = libffi
depends = libxcrypt
depends = libyaml
depends = openssl
depends = readline
depends = zlib
depends = rubygems
optdepends = tk: for Ruby/TK
optdepends = ruby-docs: Documentation for Ruby
optdepends = ruby-default-gems: Default gems which are part of Ruby StdLib
optdepends = ruby-bundled-gems: Bundled gems which are part of Ruby StdLib
optdepends = ruby-stdlib: Full Ruby StdLib including default gems, bundled gems and tools
provides = libruby.so
provides = ruby-abbrev
provides = ruby-base64
provides = ruby-benchmark
provides = ruby-bigdecimal
provides = ruby-cgi
provides = ruby-csv
provides = ruby-date
provides = ruby-delegate
provides = ruby-did_you_mean
provides = ruby-digest
provides = ruby-drb
provides = ruby-english
provides = ruby-error_highlight
provides = ruby-etc
provides = ruby-fcntl
provides = ruby-fiddle
provides = ruby-fileutils
provides = ruby-find
provides = ruby-forwardable
provides = ruby-getoptlong
provides = ruby-io-console
provides = ruby-io-nonblock
provides = ruby-io-wait
provides = ruby-ipaddr
provides = ruby-json
provides = ruby-logger
provides = ruby-mutex_m
provides = ruby-net-http
provides = ruby-net-protocol
provides = ruby-nkf
provides = ruby-observer
provides = ruby-open-uri
provides = ruby-open3
provides = ruby-openssl
provides = ruby-optparse
provides = ruby-ostruct
provides = ruby-pathname
provides = ruby-pp
provides = ruby-prettyprint
provides = ruby-pstore
provides = ruby-psych
provides = ruby-readline
provides = ruby-readline-ext
provides = ruby-reline
provides = ruby-resolv
provides = ruby-resolv-replace
provides = ruby-rinda
provides = ruby-ruby2_keywords
provides = ruby-securerandom
provides = ruby-set
provides = ruby-shellwords
provides = ruby-singleton
provides = ruby-stringio
provides = ruby-strscan
provides = ruby-syntax_suggest
provides = ruby-syslog
provides = ruby-tempfile
provides = ruby-time
provides = ruby-timeout
provides = ruby-tmpdir
provides = ruby-tsort
provides = ruby-un
provides = ruby-uri
provides = ruby-weakref
provides = ruby-yaml
provides = ruby-zlib
conflicts =
replaces = ruby-abbrev
replaces = ruby-base64
replaces = ruby-benchmark
replaces = ruby-bigdecimal
replaces = ruby-cgi
replaces = ruby-csv
replaces = ruby-date
replaces = ruby-delegate
replaces = ruby-did_you_mean
replaces = ruby-digest
replaces = ruby-drb
replaces = ruby-english
replaces = ruby-etc
replaces = ruby-fcntl
replaces = ruby-fiddle
replaces = ruby-fileutils
replaces = ruby-find
replaces = ruby-forwardable
replaces = ruby-getoptlong
replaces = ruby-io-console
replaces = ruby-io-nonblock
replaces = ruby-io-wait
replaces = ruby-ipaddr
replaces = ruby-json
replaces = ruby-logger
replaces = ruby-mutex_m
replaces = ruby-net-http
replaces = ruby-open-uri
replaces = ruby-psych
replaces = ruby-reline
replaces = ruby-ruby2_keywords
replaces = ruby-set
replaces = ruby-stringio
replaces = ruby-time
replaces = ruby-tmpdir
replaces = ruby-uri
pkgname = ruby-docs
pkgdesc = Documentation files for Ruby
pkgname = ruby-default-gems
pkgdesc = Default gems which are part of Ruby StdLib
depends = ruby-bundler
depends = ruby-erb
depends = ruby-irb
depends = ruby-racc
depends = ruby-rdoc
depends = ruby-rubygems
pkgname = ruby-bundled-gems
pkgdesc = Bundled gems which are part of Ruby StdLib
depends = ruby-debug
depends = ruby-matrix
depends = ruby-minitest
depends = ruby-net-ftp
depends = ruby-net-imap
depends = ruby-net-pop
depends = ruby-net-smtp
depends = ruby-power_assert
depends = ruby-prime
depends = ruby-rake
depends = ruby-rbs
depends = ruby-rexml
depends = ruby-rss
depends = ruby-test-unit
depends = ruby-typeprof
conflicts = ruby-bundledgems
replaces = ruby-bundledgems
pkgname = ruby-stdlib
pkgdesc = Full Ruby StdLib including default gems, bundled gems and tools
depends = ruby-default-gems
depends = ruby-bundled-gems

View file

@ -0,0 +1,7 @@
[ruby]
source = "git"
git = "https://github.com/ruby/ruby.git"
prefix = "v"
from_pattern = "([0-9]+)_([0-9]+)_([0-9]+)"
to_pattern = "\\1.\\2.\\3"
exclude_regex = ".+(rc|preview).+"

View file

@ -6,36 +6,181 @@
# Contributor: John Proctor <jproctor@prium.net>
# Contributor: Jeramy Rutley <jrutley@gmail.com>
# Do not re-package default gems (see https://stdgems.org/). Trying to do that will lead to multiple problems
# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
# - generalize arch-dependent removal of gem remains
pkgname=(ruby ruby-docs ruby-stdlib ruby-bundledgems)
pkgver=3.0.6
pkgname=(
ruby
ruby-docs
ruby-default-gems
ruby-bundled-gems
ruby-stdlib
)
pkgver=3.2.4
pkgrel=1
arch=(x86_64)
pkgdesc='An object-oriented language for quick and easy programming'
url='https://www.ruby-lang.org/en/'
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
ruby-openssl-$_osslver.tar.xz::https://github.com/ruby/openssl/archive/refs/tags/v$_osslver.tar.gz)
sha512sums=('abbf883cd9f3ddbd171df8f8c3cd35d930623c4c01a5e01387de0aee9811cca7604b82163e18e04f809773bf1ca5a450f13f62f3db14f191f610e116ae4fa6f8'
'076d2924b61c4f7704b47718a33732fb5285a3af39f328ed9e83add36589da99dfae73b3e893398fc3f2a74dcbead0b66edc682040fa1b48f9530894c7187f95')
b2sums=('e1fca86cdf267fc2289ef4d605fdf0023265c3a291ca4088361c0acd64310a7c41bf0750b4ac762157c20ceaa5df8bdc0a67374bcad9654bca5c3fc8630ff89c'
'2eeb64caf188d79137686a8c5f0aa9d27860b3a3da8e0d4082f749beaa600928d814fe8cd70a6921358066603ce453d92838c1bce32509574ea333b6ca567fc8')
arch=(x86_64)
license=(BSD-2-Clause)
makedepends=(
doxygen
gcc-libs
gdbm
glibc
gmp
graphviz
libffi
libxcrypt
libyaml
openssl
readline
rust
tk
zlib
)
checkdepends=(
inetutils
procps-ng
)
options=('!emptydirs')
source=(
"https://cache.ruby-lang.org/pub/ruby/${pkgver:0:3}/ruby-${pkgver}.tar.xz"
ruby-3.2-openssl-3.3-fix.patch::https://github.com/ruby/ruby/commit/dd5e625d7bcb7dc849fdbc2ad8053f9c2724efb4.patch
)
sha512sums=('fb0af37be4b6ad7b98ab9f8a508952238ee68b5828e3926331e4db52e2ebc1e6046f31114069322db0cd3bea7c9b82ace91c8564573ddcfa1f960877b237dbff'
'52351374fc9aa9c3576bfb4b62df1d1d8dbe7327270a4d1c5777d247a33d6e6528b08a537fc4c87d9d0cc54b4b9183848f6c54d54fc727871b3e511b7a73ddb7')
b2sums=('9c2300a958b03528d51f0d74a069c8c538ca4009835d55377509a000bcfb43893a8a80d8fda57011e77c72e6283cb259281d5ba7b37444546e49f2a9ad515cf3'
'1ee662e57f9f29b4ab29b391b38b988a8b5c199e62c815353c3a47e6eceea910344c7d9a00512916e05b6404efddf941313dfdcb0bec027f7f668443309228b9')
_bootstrap=0
_rubyver="${pkgver:0:3}.0"
_bundled_gems=(
debug
matrix
minitest
net-ftp
net-imap
net-pop
net-smtp
power_assert
prime
rake
rbs
rexml
rss
test-unit
typeprof
)
_bundled_gems_bins=(
rake
rbs
rdbg
typeprof
)
_default_gems=(
abbrev
base64
benchmark
bigdecimal
cgi
csv
date
delegate
did_you_mean
digest
drb
english
error_highlight
etc
fcntl
fiddle
fileutils
find
forwardable
getoptlong
io-console
io-nonblock
io-wait
ipaddr
json
logger
mutex_m
net-http
net-protocol
nkf
observer
open-uri
open3
openssl
optparse
ostruct
pathname
pp
prettyprint
pstore
psych
readline
readline-ext
reline
resolv
resolv-replace
rinda
ruby2_keywords
securerandom
set
shellwords
singleton
stringio
strscan
syntax_suggest
syslog
tempfile
time
timeout
tmpdir
tsort
un
uri
weakref
yaml
zlib
)
_default_tool_gems=(
bundler
erb
irb
racc
rdoc
rubygems
)
_default_tool_gems_bins=(
bundle
bundler
erb
gem
irb
racc
rdoc
ri
)
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
cd "ruby-${pkgver}"
# ignore test_session_reuse_but_expire test for openssl version 3.3
sed -i "s/3.2./3.3./g" test/net/http/test_https.rb
patch -Np1 < ../ruby-3.2-openssl-3.3-fix.patch
}
build() {
cd ruby-${pkgver}
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 \
@ -51,242 +196,182 @@ build() {
}
check() {
cd ruby-${pkgver}
cd "ruby-${pkgver}"
make test
# 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 check
}
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=(
gcc-libs
gdbm
glibc
gmp
libffi
libxcrypt
libyaml
openssl
readline
zlib
)
optdepends=(
'tk: for Ruby/TK'
'ruby-docs: Documentation for Ruby'
'ruby-default-gems: Default gems which are part of Ruby StdLib'
'ruby-bundled-gems: Bundled gems which are part of Ruby StdLib'
'ruby-stdlib: Full Ruby StdLib including default gems, bundled gems and tools'
)
provides=(
libruby.so
)
replaces=(
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-ruby2_keywords
ruby-set
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]
)
conflicts=("${replaces[@]}")
provides+=("${_default_gems[@]/#/ruby-}")
cd "ruby-${pkgver}"
make DESTDIR="${pkgdir}" install-nodoc
install --verbose -D --mode=0644 BSDL COPYING --target-directory "${pkgdir}/usr/share/licenses/${pkgname}"
install --verbose -D --mode=0644 *.md --target-directory "${pkgdir}/usr/share/doc/${pkgname}"
# remove unrepreducible files
rm --recursive --verbose \
"${pkgdir}/usr/lib/ruby/gems/${_rubyver}/cache"
# bootstrap switch
if (( _bootstrap )); then
# provide everything for a bootstrap build
# use a reference to provides to srcinfo generation isn't confused
declare -n bootstrap_provides=provides
bootstrap_provides+=("${_default_tool_gems[@]/#/ruby-}" rubygems)
bootstrap_provides+=("${_bundled_gems[@]/#/ruby-}")
declare -n bootstrap_conflicts=conflicts
bootstrap_conflicts+=("${_default_tool_gems[@]/#/ruby-}" rubygems)
bootstrap_conflicts+=("${_bundled_gems[@]/#/ruby-}")
else
# remove de-vendored parts
_remove_default_tool_gems
_remove_bundled_gems
# add standard dependencies
depends+=(
rubygems
)
fi
}
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'
# remove bundled gems - they are provided as dedicated packages
_remove_bundled_gems() {
local gem bin
for gem in "${_bundled_gems[@]}"; do
msg2 "removing bundled gem ${gem}"
rm --recursive --verbose \
"${pkgdir}/usr/lib/ruby/gems/${_rubyver}/gems/${gem}"-* \
"${pkgdir}/usr/lib/ruby/gems/${_rubyver}/specifications/${gem}"-*.gemspec
rm --recursive --verbose --force \
"${pkgdir}/usr/lib/ruby/gems/${_rubyver}/extensions"/*-linux*/"${_rubyver}/${gem}"-*
done
for bin in "${_bundled_gems_bins[@]}"; do
rm --recursive --verbose "${pkgdir}/usr/bin/${bin}"
rm --recursive --verbose --force "${pkgdir}/usr/share/man/man1/${bin}.1"
done
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
)
# remove default tool gems - they are provided as dedicated packages
_remove_default_tool_gems() {
local gem bin
for gem in "${_default_tool_gems[@]}"; do
msg2 "removing default gem ${gem}"
rm --recursive --verbose \
"${pkgdir}/usr/lib/ruby/${_rubyver}/${gem}"*
if [[ ${gem} != rubygems ]]; then
rm --recursive --verbose \
"${pkgdir}/usr/lib/ruby/gems/${_rubyver}/gems/${gem}"-* \
"${pkgdir}/usr/lib/ruby/gems/${_rubyver}/specifications/default/${gem}"-*.gemspec
fi
rm --recursive --verbose --force \
"${pkgdir}/usr/lib/ruby/${_rubyver}"/*-linux*/"${gem}"
done
for bin in "${_default_tool_gems_bins[@]}"; do
rm --recursive --verbose "${pkgdir}/usr/bin/${bin}"
rm --recursive --verbose --force "${pkgdir}/usr/share/man/man1/${bin}.1"
done
}
package_ruby-docs() {
pkgdesc='Documentation files for Ruby'
cd "ruby-${pkgver}"
make DESTDIR="${pkgdir}" install-doc install-capi
install --verbose -D --mode=0644 BSDL COPYING --target-directory "${pkgdir}/usr/share/licenses/${pkgname}"
}
package_ruby-bundled-gems() {
pkgdesc='Bundled gems which are part of Ruby StdLib'
replaces=(ruby-bundledgems)
conflicts=(ruby-bundledgems)
depends=("${_bundled_gems[@]/#/ruby-}")
cd "ruby-${pkgver}"
install --verbose -D --mode=0644 BSDL COPYING --target-directory "${pkgdir}/usr/share/licenses/${pkgname}"
}
package_ruby-default-gems() {
pkgdesc='Default gems which are part of Ruby StdLib'
depends=("${_default_tool_gems[@]/#/ruby-}")
cd "ruby-${pkgver}"
install --verbose -D --mode=0644 BSDL COPYING --target-directory "${pkgdir}/usr/share/licenses/${pkgname}"
}
package_ruby-stdlib() {
pkgdesc='Full Ruby StdLib including default gems, bundled gems and tools'
depends=(ruby-default-gems ruby-bundled-gems)
cd "ruby-${pkgver}"
install --verbose -D --mode=0644 BSDL COPYING --target-directory "${pkgdir}/usr/share/licenses/${pkgname}"
}
# vim: tabstop=2 shiftwidth=2 expandtab:

87
extra/ruby/README.md Normal file
View file

@ -0,0 +1,87 @@
# Ruby Packaging
## Bootstrap
To transition to a new language version of Ruby like 3.2 to 3.3, the process
involves three main phases: initial bootstrapping with a non-de-vendored Ruby,
rebuilding a base set of Ruby packages using a production build, and finally, a
comprehensive rebuild of all existing Ruby-dependent packages in the correct
sequence.
### bundled gem compatibility
A list of compatible bundled gem versions for packaging can be found at
<https://stdgems.org>. The de-vendored packages should make sure to be
compatible to the ruby version.
### bootstrap packages
The bootstrapping phase starts with the creation of a minimal set of bootstrap
packages, crucially including a non-de-vendored version of Ruby. This step aims
to establish a foundational Ruby environment that is capable of supporting the
compilation and installation of more complex Ruby applications and libraries.
Its essential that this version of Ruby is non-de-vendored to ensure that all
components required for further package dependencies are available and
functional.
Build the following packages in the given order:
- ruby `_bootstrap=1 pkgrel=0`
- rubygems `--nocheck`
- ruby-rake
- ruby-hoe
- ruby-kpeg
- ruby-rdoc
- ruby-irb
- ruby-power_assert `--nocheck`
- ruby-test-unit
- ruby-webrick
- ruby-erb `--nocheck`
### base set
Following the initial setup, the next step involves the rebuilding of a
specific chain of Ruby packages using a production build of Ruby. This
production build should be a de-vendored version of Ruby, intended for
deployment. The purpose of this phase is to compile a full base set of Ruby
packages that are ready for consumption. This includes key libraries and tools
necessary for the broader Ruby ecosystem.
Build the following packages in the given order:
- ruby `_bootstrap=0`
- rubygems
- ruby-rake
- ruby-bundler
- ruby-webrick
- ruby-rake-compiler
- ruby-erb
- ruby-power_assert
- ruby-test-unit
- ruby-diff-lcs
- ruby-rspec-support
- ruby-rspec-core
- ruby-rspec-expectations
- ruby-rspec-mocks
- ruby-rspec
- ruby-rr `--nocheck`
- ruby-test-unit-rr
- ruby-rr
- ruby-debug
- ruby-irb
- ruby-minitest
- ruby-hoe
- ruby-kpeg
- ruby-racc
- ruby-rdoc
- ruby-typeprof
### rebuild all packages
The final step in upgrading to a new language version of Ruby is the comprehensive
rebuild of all existing packages that depend on Ruby, in their appropriate
sequential order. This step is critical to ensure that all applications and
libraries are compatible with the new Ruby version. This rebuild must be
carefully managed to maintain dependency integrity.
- rebuild all packages in order