pantry/projects/rubygems.org/package.yml

138 lines
4.2 KiB
YAML
Raw Normal View History

2022-11-02 23:38:19 +03:00
distributable:
url: https://github.com/rubygems/rubygems/archive/refs/tags/v{{version}}.tar.gz
strip-components: 1
versions:
github: rubygems/rubygems
dependencies:
ruby-lang.org: '>=2.3'
runtime:
env:
RUBYLIB: ${{prefix}}/lib:$RUBYLIB
2022-11-02 23:38:19 +03:00
build:
dependencies:
gnu.org/patch: '*'
ruby-lang.org: ~3.1 # testing a theory
2023-06-13 22:31:03 +03:00
script:
- ruby setup.rb
2023-12-26 12:51:02 +03:00
--prefix={{prefix}}
--env-shebang
--no-ri
--no-rdoc
2023-03-19 15:01:42 +03:00
- run: |
2023-12-29 10:12:30 +03:00
patch -p1 --no-backup-if-mismatch < "$SRCROOT"/props/fit-n-finish.1.patch
patch -p1 --no-backup-if-mismatch < "$SRCROOT"/props/fit-n-finish.2.patch
sed -i -e 's/Gem.default_dir/Gem.default_system_dir/' lib/rubygems/path_support.rb
working-directory: ${{prefix}}
2023-12-29 10:12:30 +03:00
- run: sed -i -e 's/Gem.state_home, "gem",/Gem.state_home,/' defaults.rb
working-directory: ${{prefix}}/lib/rubygems
2023-11-13 21:44:01 +03:00
if: '>=3.4'
2023-12-29 10:12:30 +03:00
- run: patch -p1 --no-backup-if-mismatch "" < "$SRCROOT"/props/fit-n-finish.3.patch
working-directory: ${{prefix}}
if: '<3.5'
2023-12-29 10:12:30 +03:00
- run: patch -p1 --no-backup-if-mismatch < "$SRCROOT"/props/fit-n-finish.4.patch
working-directory: ${{prefix}}
if: '>=3.5'
2023-12-29 10:12:30 +03:00
- run: sed -i -e
2023-12-26 12:51:02 +03:00
's/Dir\.mkdir dir, \*\[options\[:dir_mode\].*/FileUtils.mkdir_p dir, *[options[:dir_mode] \&\& 0o755].compact/'
installer.rb
working-directory: ${{prefix}}/lib/rubygems
# these are provided by ruby-lang.org
2023-12-26 12:51:02 +03:00
# they turn up here since that is how gem handles deps
# but ruby is in PATH and has these and that is the preference
- run: rm rake rbs rdbg typeprof
working-directory: ${{prefix}}/bin
2023-03-19 15:01:42 +03:00
# ruby has a neat feature where it will look for a ruby shebang and
# ignore everything from before that, so we can make scripts that execute
# as POSIX shell and then re-exec themselves as ruby scripts
2023-12-26 12:51:02 +03:00
# REF https://github.com/pkgxdev/pantry/issues/4010
- run: |
2023-12-26 12:51:02 +03:00
for tool in bundle bundler; do
echo "$(cat $PROP gems/bundler-*/exe/$tool)" > bin/$tool
2023-06-13 22:31:03 +03:00
done
echo "$(cat $PROP bin/gem)" > bin/gem
2023-12-26 12:51:02 +03:00
prop: |
#!/bin/sh
d="$(cd "$(dirname "$0")"/.. && pwd)"
export RUBYLIB="$d/lib"
if [ -z "$GEM_PATH" ]; then
export GEM_PATH="$d"
else
export GEM_PATH="$d:$GEM_PATH"
fi
exec ruby "$0" "$@"
2023-12-26 12:51:02 +03:00
working-directory:
${{prefix}}
2023-12-26 12:51:02 +03:00
# no longer needed
- rm -rf {{prefix}}/gems
# the bundler code figures out the “gem path” for itself by checking for this directory structure
# for some reason we are not installed in a gem-compatible way and
# `GEM_PATH` is not used here (but it is later)
# FIXME this stuff is messy, ideally wed do much less stuff since it breaks easily with new releases
- run: ln -s bin exe
working-directory: ${{prefix}}
2023-12-26 12:51:02 +03:00
# clean up empty, unused directory
2023-06-13 22:31:03 +03:00
- rmdir {{prefix}}/plugins
2022-11-02 23:38:19 +03:00
test:
env:
2023-06-13 22:31:03 +03:00
vRUBY: ${{deps.ruby-lang.org.version.marketing}}.0
script:
# for debug
- gem env
- |
gem install awesome_print --verbose
ruby -e 'require "rubygems"' -e 'require "awesome_print"' -e'ap $LOAD_PATH'
- |
gem install hexapdf --verbose
if [ -w /usr/local/lib/ruby/ ]; then
v="$(/usr/local/bin/hexapdf version | cut -d' ' -f2)"
test -d /usr/local/lib/ruby/gems/$vRUBY/gems/hexapdf-$v
else
v="$(~/.local/bin/hexapdf version | cut -d' ' -f2)"
test -d ~/.gem/ruby/$vRUBY/gems/hexapdf-$v
fi
2022-11-02 23:38:19 +03:00
# test for https://github.com/pkgxdev/pantry/issues/4010
2023-12-26 12:51:02 +03:00
- run: |
mv $FIXTURE Gemfile
2023-12-29 10:12:30 +03:00
GEM_HOME=$HOME/.bundler bundle install --path vendor/bundle
2023-12-26 12:51:02 +03:00
fixture: |
source 'https://rubygems.org'
gem 'warbler', platforms: :jruby
# verifies that our bundler can be used as a gem
- run:
2023-12-29 10:12:30 +03:00
rm -rf {{deps.ruby-lang.org.prefix}}/lib/ruby/gems/*/bundler*
rm -rf {{deps.ruby-lang.org.prefix}}/lib/ruby/gems/*/rubygems*
GEM_HOME=$HOME/.bundler ruby $FIXTURE
fixture:
content: |
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'ruby-macho', '~> 3'
end
extname: rb
2022-11-02 23:38:19 +03:00
provides:
- bin/bundle
- bin/bundler
- bin/gem