Make gemspec files for default gems with extensions

So that rubygems can find them as gems.  However, the `--install-dir`
option of `gem install` seems to exclude prerelease gems, even already
installed in that directory, from the dependencies for some reasons;
use the `GEM_HOME` environment variable instead.

Now net-imap 0.5.0 depends on json gem.
This commit is contained in:
Nobuyoshi Nakada 2024-10-31 01:06:36 +09:00
parent 80fd846353
commit 0fda818bd7
No known key found for this signature in database
GPG Key ID: 3582D74E1FEE4465
Notes: git 2024-10-31 17:33:36 +00:00
3 changed files with 35 additions and 8 deletions

View File

@ -1573,6 +1573,35 @@ test-bundled-gems-precheck: $(TEST_RUNNABLE)-test-bundled-gems-precheck
yes-test-bundled-gems-precheck: main yes-test-bundled-gems-precheck: main
no-test-bundled-gems-precheck: no-test-bundled-gems-precheck:
update-default-gemspecs: main
$(ACTIONS_GROUP)
@$(MAKEDIRS) $(srcdir)/.bundle/specifications
@$(XRUBY) -W0 -C "$(srcdir)" -rrubygems \
-e "destdir = ARGV.shift" \
-e "ARGV.each do |basedir|" \
-e "Dir.glob(basedir+'/**/*.gemspec') do |g|" \
-e "dir, base = File.split(g)" \
-e "spec = Dir.chdir(dir) {Gem::Specification.load(base)} ||" \
-e "Gem::Specification.load(g)" \
-e "unless spec" \
-e "puts %[Ignoring #{g}]" \
-e "next" \
-e "end" \
-e "spec.files.clear" \
-e "spec.extensions.clear" \
-e "File.binwrite(File.join(destdir, spec.full_name+'.gemspec'), spec.to_ruby)" \
-e "end" \
-e "end" \
-- .bundle/specifications lib ext
$(ACTIONS_ENDGROUP)
install-for-test-bundled-gems: update-default-gemspecs
$(ACTIONS_GROUP)
$(XRUBY) -C "$(srcdir)" -r./tool/lib/gem_env.rb bin/gem \
install --no-document --conservative \
"hoe" "json-schema" "test-unit-rr" "simplecov" "simplecov-html" "simplecov-json"
$(ACTIONS_ENDGROUP)
test-bundled-gems-fetch: yes-test-bundled-gems-fetch test-bundled-gems-fetch: yes-test-bundled-gems-fetch
yes-test-bundled-gems-fetch: yes-test-bundled-gems-fetch:
$(ACTIONS_GROUP) $(ACTIONS_GROUP)
@ -1582,12 +1611,9 @@ no-test-bundled-gems-fetch:
test-bundled-gems-prepare: $(PRECHECK_BUNDLED_GEMS) test-bundled-gems-fetch test-bundled-gems-prepare: $(PRECHECK_BUNDLED_GEMS) test-bundled-gems-fetch
test-bundled-gems-prepare: $(TEST_RUNNABLE)-test-bundled-gems-prepare test-bundled-gems-prepare: $(TEST_RUNNABLE)-test-bundled-gems-prepare
no-test-bundled-gems-prepare: no-test-bundled-gems-precheck no-test-bundled-gems-prepare: no-test-bundled-gems-precheck no-test-bundled-gems-fetch
yes-test-bundled-gems-prepare: yes-test-bundled-gems-precheck yes-test-bundled-gems-prepare: yes-test-bundled-gems-precheck yes-test-bundled-gems-fetch
$(ACTIONS_GROUP) yes-test-bundled-gems-prepare: install-for-test-bundled-gems
$(XRUBY) -C "$(srcdir)" bin/gem install --no-document \
--install-dir .bundle --conservative "hoe" "json-schema" "test-unit-rr" "simplecov"
$(ACTIONS_ENDGROUP)
PREPARE_BUNDLED_GEMS = test-bundled-gems-prepare PREPARE_BUNDLED_GEMS = test-bundled-gems-prepare
test-bundled-gems: $(TEST_RUNNABLE)-test-bundled-gems $(DOT_WAIT) $(TEST_RUNNABLE)-test-bundled-gems-spec test-bundled-gems: $(TEST_RUNNABLE)-test-bundled-gems $(DOT_WAIT) $(TEST_RUNNABLE)-test-bundled-gems-spec

2
tool/lib/gem_env.rb Normal file
View File

@ -0,0 +1,2 @@
ENV['GEM_HOME'] = gem_home = File.expand_path('.bundle')
ENV['GEM_PATH'] = [gem_home, File.expand_path('../../../.bundle', __FILE__)].uniq.join(File::PATH_SEPARATOR)

View File

@ -2,6 +2,7 @@ require 'rbconfig'
require 'timeout' require 'timeout'
require 'fileutils' require 'fileutils'
require_relative 'lib/colorize' require_relative 'lib/colorize'
require_relative 'lib/gem_env'
ENV.delete("GNUMAKEFLAGS") ENV.delete("GNUMAKEFLAGS")
@ -10,8 +11,6 @@ github_actions = ENV["GITHUB_ACTIONS"] == "true"
allowed_failures = ENV['TEST_BUNDLED_GEMS_ALLOW_FAILURES'] || '' allowed_failures = ENV['TEST_BUNDLED_GEMS_ALLOW_FAILURES'] || ''
allowed_failures = allowed_failures.split(',').reject(&:empty?) allowed_failures = allowed_failures.split(',').reject(&:empty?)
ENV["GEM_PATH"] = [File.realpath('.bundle'), File.realpath('../.bundle', __dir__)].join(File::PATH_SEPARATOR)
colorize = Colorize.new colorize = Colorize.new
rake = File.realpath("../../.bundle/bin/rake", __FILE__) rake = File.realpath("../../.bundle/bin/rake", __FILE__)
gem_dir = File.realpath('../../gems', __FILE__) gem_dir = File.realpath('../../gems', __FILE__)