summaryrefslogtreecommitdiff
path: root/common.mk
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2025-06-06 18:28:44 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2025-06-07 18:41:36 +0900
commite90282be7ba1bc8e3119f6e1a2c80356ceb3f80a (patch)
treed3a83db351abe8962122bc4a0b90b03a0a6e4d56 /common.mk
parentc45e4da71b3112f3734863d2051f0d8fb1a38cb8 (diff)
[Bug #21388] Make snapshots of gems
If the revision of bundled gems is specified for ruby master (and `git` is usable), checkout that revision and build a snapshot gem, and use it for `test-spec` instead of the downloaded release version.
Diffstat (limited to 'common.mk')
-rw-r--r--common.mk59
1 files changed, 28 insertions, 31 deletions
diff --git a/common.mk b/common.mk
index d76223e072..6ffb2718ef 100644
--- a/common.mk
+++ b/common.mk
@@ -1533,46 +1533,43 @@ extract-gems: $(HAVE_BASERUBY:yes=update-gems)
update-gems$(sequential): PHONY
$(ECHO) Downloading bundled gem files...
$(Q) $(BASERUBY) -C "$(srcdir)" \
- -I./tool -rdownloader -answ \
- -e 'gem, ver = *$$F' \
- -e 'next if !ver or /^#/=~gem' \
- -e 'old = Dir.glob("gems/#{gem}-*.gem")' \
- -e 'gem = "#{gem}-#{ver}.gem"' \
- -e 'Downloader::RubyGems.download(gem, "gems", nil) and' \
- -e '(old.delete("gems/#{gem}"); !old.empty?) and' \
- -e 'File.unlink(*old) and' \
- -e 'FileUtils.rm_rf(old.map{'"|n|"'n.chomp(".gem")})' \
- gems/bundled_gems
+ -I./tool/lib -r./tool/downloader -rbundled_gem \
+ -e "BundledGem.each(snapshot: %[$(HAVE_GIT)]==%[yes]) do |gem, ver, _, rev|" \
+ -e "old = Dir.glob(%[gems/#{gem}-*.gem])" \
+ -e "gem = %[#{gem}-#{ver}.gem]" \
+ -e "(rev || Downloader::RubyGems.download(gem, %[gems], nil)) and" \
+ -e "(old.delete(%[gems/#{gem}]); !old.empty?) and" \
+ -e "File.unlink(*old) and" \
+ -e "FileUtils.rm_rf(old.map{|n|n.chomp(%[.gem])})" \
+ -e "end"
extract-gems$(sequential): PHONY
$(ECHO) Extracting bundled gem files...
$(Q) $(BASERUBY) -C "$(srcdir)" \
- -Itool/lib -rfileutils -rbundled_gem -answ \
- -e 'BEGIN {d = ".bundle/gems"}' \
- -e 'gem, ver, _, rev = *$$F' \
- -e 'next if !ver or /^#/=~gem' \
- -e 'g = "#{gem}-#{ver}"' \
- -e 'unless File.directory?("#{d}/#{g}")' \
- -e 'if rev and File.exist?(gs = "gems/src/#{gem}/#{gem}.gemspec")' \
- -e 'BundledGem.build(gs, ver, "gems")' \
- -e 'end' \
- -e 'BundledGem.unpack("gems/#{g}.gem", ".bundle")' \
- -e 'end' \
- gems/bundled_gems
+ -Itool/lib -rfileutils -rbundled_gem \
+ -e "d = ARGV.shift" \
+ -e "BundledGem.each(snapshot: %[$(HAVE_GIT)]==%[yes]) do |gem, ver, _, rev|" \
+ -e "g = %[#{gem}-#{ver}]" \
+ -e "unless File.directory?(%[#{d}/#{g}])" \
+ -e "if rev and File.exist?(gs = %[gems/src/#{gem}/#{gem}.gemspec])" \
+ -e "BundledGem.build(gs, ver, %[gems])" \
+ -e "end" \
+ -e "BundledGem.unpack(%[gems/#{g}.gem], %[.bundle])" \
+ -e "end" \
+ -e "end"
+ -- .bundle/gems
extract-gems$(sequential): $(HAVE_GIT:yes=clone-bundled-gems-src)
clone-bundled-gems-src: PHONY
$(Q) $(BASERUBY) -C "$(srcdir)" \
- -Itool/lib -rbundled_gem -answ \
- -e 'BEGIN {git = $$git}' \
- -e 'gem, _, repo, rev = *$$F' \
- -e 'next if !rev or /^#/=~gem' \
- -e 'gemdir = "gems/src/#{gem}"' \
- -e 'BundledGem.checkout(gemdir, repo, rev, git: git)' \
- -e 'BundledGem.dummy_gemspec("#{gemdir}/#{gem}.gemspec")' \
- -- -git="$(GIT)" \
- gems/bundled_gems
+ -Itool/lib -rbundled_gem \
+ -e "BundledGem.each do |gem, _, repo, rev|" \
+ -e "gemdir = %[gems/src/#{gem}]" \
+ -e "BundledGem.checkout(gemdir, repo, rev, git: git)" \
+ -e "BundledGem.dummy_gemspec(%[#{gemdir}/#{gem}.gemspec])" \
+ -e "end" \
+ -- -git="$(GIT)"
outdate-bundled-gems: PHONY
$(Q) $(BASERUBY) $(tooldir)/$@.rb --make="$(MAKE)" --mflags="$(MFLAGS)" \