pantry/projects/ruby-lang.org/package.yml
Max Howell 4eb1cca264
ruby/gems fixes (#2184)
hopefully got all the edgecases this time
2023-06-16 09:33:37 -04:00

140 lines
4 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

distributable:
url: https://cache.ruby-lang.org/pub/ruby/{{version.marketing}}/ruby-{{version}}.tar.xz
strip-components: 1
versions:
# ruby have *some* releases, but historically only have tags
# so if we want to build older releases we can only scan tags
github: ruby/ruby/tags
dependencies:
openssl.org: ^1.1
pyyaml.org: ^0.2
zlib.net: ^1
build:
dependencies:
freedesktop.org/pkg-config: ^0.29
gnu.org/gettext: ^0.21
tea.xyz/gx/cc: c99
tea.xyz/gx/make: '*'
gnu.org/patch: '*'
gnu.org/bison: ^3
gnu.org/autoconf: '*'
linux:
ruby-lang.org: ~3.1 # ruby requires ruby to build
# ^^ only linux because we got issues on darwin currently and darwin provides ruby (for now)
env:
ARGS:
- --prefix="{{prefix}}"
- --enable-load-relative # makes us relocatable
- --without-gmp
- --with-rubyarchprefix={{prefix}}/lib/ruby # no need for architecture specific crap
- --with-rubyhdrdir={{prefix}}/include # ^^
- --with-rubyarchhdrdir={{prefix}}/include # ^^
- --disable-multiarch # ^^
- --with-vendordir=no # is empty so dont pollute
- --with-vendorarchdir=no # ^^
- --with-sitedir=no # ^^
- --with-sitearchdir=no # ^^
script:
- patch -p1 < props/mkconfig.rb.diff
- ./configure $ARGS
- make --jobs {{hw.concurrency}} install
# we provide these as `rubygems.org`
- run: rm bundle bundler gem
working-directory: ${{prefix}}/bin
- fix-shebangs.ts ${{prefix}}/bin/*
# ruby itself provides the gems for these and we dont want that
# we want to pkg them ourselves as part of rubygems.org
# to ensure the user gets a good ruby experience rubygems is marked as
# a companion which in most use means gems are automatically added to the
# pkgenv. Ruby behaves well if gems isn't around but the user may get
# unexpected errors in scenarios where they constructed an pkgenv manually
- working-directory:
${{prefix}}/lib/ruby/{{version.marketing}}.0
run: |
for x in bundler rubygems bundler.rb rubygems.rb; do
if test -d $x; then
rm -rf $x
else
rm $x
fi
done
rm -rf ../gems/3.2.0/gems/bundler-*.*.*
- run: |
rm -rf share/ri
rm -rf share/doc
rm -rf lib/ruby/site_ruby
rm -rf lib/ruby/vendor_ruby
working-directory:
${{prefix}}
# weirdly files get put here and we can't figure out how to stop it
- run: |
mv *-{{hw.platform}}*/* .
rmdir *-{{hw.platform}}*
working-directory:
${{prefix}}/lib
- run: sed -i.bak
-e 's|$(DESTDIR){{prefix}}|$(topdir)|g'
-e 's|CONFIG\["topdir"\] = .*|CONFIG\["topdir"\] = TOPDIR|g'
rbconfig.rb
working-directory:
${{prefix}}/lib/ruby/{{version.marketing}}.0
test:
dependencies:
tea.xyz/gx/cc: c99 # for native extensions
tea.xyz/gx/make: '*'
rubygems.org: '*' # is a companion __however__ brewkit doesnt add companions to the env automatically
script:
- |
ruby -e 'puts "Hello World!"'
# echo 'puts 1' | irb
# ^^ FIXME `The terminfo database could not be found`
# tests the libraries that come with Ruby can be utilized
- run: |
mv $FIXTURE a.rb
ruby a.rb
fixture: |
require 'date'
puts Date.today
# tests the gems that come with Ruby can be utilized
- run: |
mv $FIXTURE a.rb
ruby a.rb
fixture: |
require 'matrix'
matrix = Matrix[[1, 2], [3, 4]]
transpose_matrix = matrix.transpose
determinant = matrix.determinant
puts "Original matrix:\n#{matrix}"
puts "Transposed matrix:\n#{transpose_matrix}"
puts "Determinant of the matrix: #{determinant}"
provides:
- bin/erb
- bin/irb
- bin/racc
- bin/rake
- bin/rbs
- bin/rdoc
- bin/ri
- bin/ruby
- bin/typeprof
interprets:
extensions: rb
args: ruby
companions:
rubygems.org: '*'