pantry/projects/ruby-lang.org/package.yml
Scott J. Goldman 186ee41804
fix(ruby-lang.org) (#4875)
* fix(ruby-lang.org)

it appears there are a few hardcoded paths from ci that made it into the
packaged rbconfig.rb. this breaks installation of gems that require
native compilation. so, lets patch that up

* fix(ruby-lang.org): actually, don't use brewkit stubs for install & cc

* fix(ruby): make this a little more explicit
2024-01-18 15:16:26 -05:00

159 lines
5 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
gnu.org/patch: '*'
gnu.org/bison: ^3
gnu.org/autoconf: '*'
rust-lang.org: ^1 # required to build YJIT
linux:
ruby-lang.org: ^3 # ruby requires ruby to build
# ^^ only linux because we got issues on darwin currently and darwin provides ruby (for now)
script:
- patch -p1 -F5 < props/mkconfig.rb.diff
- ./configure $ARGS
# clang17 doesn't like [[maybe_unused]] on types
# fix cribbed from https://github.com/ruby/ruby/pull/4603/commits/fbdff085ef3c8a56e0a33404e8795879e3167549
- run: |
if test -f maybe_unused.h; then
sed -i -e 's/elif RBIMPL_HAS_C_ATTRIBUTE(maybe_unused)/elif RBIMPL_HAS_C_ATTRIBUTE(maybe_unused) \&\& (__STDC_VERSION__ >= 202000L)/' maybe_unused.h
fi
if: linux
working-directory: include/ruby/internal/attr
- make --jobs {{hw.concurrency}} install
# we provide these as `rubygems.org`
- run: rm -f 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 -f $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: |
if test -d pkgconfig; then rm -rf pkgconfig; fi
mv *-{{hw.platform}}*/* .
rmdir *-{{hw.platform}}*
working-directory: ${{prefix}}/lib
if: '>=2.6'
- run: sed -i.bak
-e 's|$(DESTDIR){{prefix}}|$(topdir)|g'
-e 's|CONFIG\["topdir"\] = .*|CONFIG\["topdir"\] = TOPDIR|g'
-e 's|CONFIG\["INSTALL"\] =.*|CONFIG\["INSTALL"\] = "/usr/bin/install"|g'
-e 's|CONFIG\["MJIT_CC"\] =.*|CONFIG\["MJIT_CC"\] = "/usr/bin/cc"|g'
rbconfig.rb
working-directory: ${{prefix}}/lib/ruby/{{version.marketing}}.0
env:
CFLAGS: $CFLAGS -Wno-implicit-function-declaration
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 # ^^
- --enable-yjit # https://github.com/pkgxdev/pantry/issues/3538
test:
dependencies:
rubygems.org: '*' # is a companion __however__ brewkit doesnt add companions to the test env automatically
script:
- ruby -e 'puts "Hello World!"'
# “The terminfo database could not be found.”
# all platforms but only happens in the test harness
# ie. you can run this locally and it will work
# - echo 'puts 1' | irb
# tests the libraries that come with Ruby can be utilized
- run: ruby $FIXTURE
fixture:
content: |
require 'date'
puts Date.today
extname: rb
# tests the gems that come with Ruby can be utilized
- run: ruby $FIXTURE
fixture:
content: |
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}"
extname: rb
- run: ruby --yjit $FIXTURE
if: ^3.1
fixture:
content: |
def fib(n)
return n if n <= 1
fib(n-1) + fib(n-2)
end
puts fib(35)
extname: rb
provides:
- bin/erb
- bin/irb
- bin/rake
- bin/rdoc
- bin/ri
- bin/ruby
interprets:
extensions: rb
args: ruby
companions:
rubygems.org: '*'