pantry/projects/rubygems.org/package.yml
Jacob Heider 8ecb800d0f fix(rubygems)
closes #6256
2024-06-11 13:58:58 -04:00

175 lines
5.9 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://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
build:
dependencies:
ruby-lang.org:
~3.1 # testing a theory
# NOTE ^^ we dont know what this comment means either!
script:
- ruby setup.rb
--prefix={{prefix}}
--env-shebang
--no-ri
--no-rdoc
# 3.5.5 fixed this
- run: patch -p1 --no-backup-if-mismatch < $PROP
if: <3.5.5
working-directory: ${{prefix}}
prop: |+
--- a/lib/rubygems/defaults.rb
+++ b/lib/rubygems/defaults.rb
@@ -20,13 +20,7 @@ def self.default_sources
# specified in the environment
def self.default_spec_cache_dir
- default_spec_cache_dir = File.join Gem.user_home, ".gem", "specs"
-
- unless File.exist?(default_spec_cache_dir)
- default_spec_cache_dir = File.join Gem.data_home, "gem", "specs"
- end
-
- default_spec_cache_dir
+ File.join Gem.cache_home, "gem", "specs"
end
##
- run: patch -p1 --no-backup-if-mismatch < "$SRCROOT"/props/fit-n-finish.patch
working-directory: ${{prefix}}
# 3.5.7 removed some redunant parens, breaking patching
- run: patch -p1 --no-backup-if-mismatch < "$SRCROOT"/props/fit-n-finish2-pre357.patch
if: <3.5.7
working-directory: ${{prefix}}
- run: patch -p1 --no-backup-if-mismatch < "$SRCROOT"/props/fit-n-finish2-post357.patch
if: '>=3.5.7'
working-directory: ${{prefix}}
# makes rubys default system dir be fixed in /usr/local/lib/ruby
# rather the relative to ~/.pkgx/ruby-lang.org
- run: |
patch -p1 --no-backup-if-mismatch < "$SRCROOT"/props/default-sys-dir.patch
sed -i -e 's/Gem.default_dir/Gem.default_system_dir/' lib/rubygems/path_support.rb
working-directory: ${{prefix}}
# removes redudnant `gem` directory that looks gross in our directory formatting
- run: sed -i -e 's/Gem.state_home, "gem",/Gem.state_home,/' defaults.rb
working-directory: ${{prefix}}/lib/rubygems
if: '>=3.4'
# ensure `gem` tries to install to ~/.gem if /usr/local is not writable
- run: patch -p1 --no-backup-if-mismatch < "$SRCROOT"/props/user-install-pre3.5.patch
working-directory: ${{prefix}}
if: '<3.5'
- run: patch -p1 --no-backup-if-mismatch < "$SRCROOT"/props/user-install-post3.5.patch
working-directory: ${{prefix}}
if: '>=3.5'
# fixes bug where gem wont create the full directory path when installing
# which typically isnt a problem since the directory already exists in a standard
# install but we fuck with the paths way more
- run: sed -i -e
'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
# 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: for PROG in rake rbs rdbg typeprof; do if test -f $PROG; then rm $PROG; fi; done
working-directory: ${{prefix}}/bin
# 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
# REF https://github.com/pkgxdev/pantry/issues/4010
- run: |
for tool in bundle bundler; do
echo "$(cat $PROP gems/bundler-*/exe/$tool)" > bin/$tool
done
echo "$(cat $PROP bin/gem)" > bin/gem
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" "$@"
working-directory: ${{prefix}}
# 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}}
# clean up empty, unused directory
- rmdir {{prefix}}/plugins
test:
env:
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
# test for https://github.com/pkgxdev/pantry/issues/4010
- run: |
mv $FIXTURE Gemfile
GEM_HOME=$HOME/.bundler bundle install --path vendor/bundle
fixture: |
source 'https://rubygems.org'
gem 'warbler', platforms: :jruby
# verifies that our bundler can be used as a gem
- run: 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
provides:
- bin/bundle
- bin/bundler
- bin/gem