From 7a56c316418980b8a41fcbdc94067b2bda2ad112 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Sat, 7 Jun 2025 18:43:56 +0900 Subject: [PATCH] Revert "[Bug #21388] Make snapshots of gems" This reverts commit e90282be7ba1bc8e3119f6e1a2c80356ceb3f80a, a commit miss. --- common.mk | 59 ++++++++++++++++++++++------------------- defs/gmake.mk | 19 +++---------- tool/lib/bundled_gem.rb | 27 ------------------- 3 files changed, 35 insertions(+), 70 deletions(-) diff --git a/common.mk b/common.mk index 6ffb2718ef..d76223e072 100644 --- a/common.mk +++ b/common.mk @@ -1533,43 +1533,46 @@ extract-gems: $(HAVE_BASERUBY:yes=update-gems) update-gems$(sequential): PHONY $(ECHO) Downloading bundled gem files... $(Q) $(BASERUBY) -C "$(srcdir)" \ - -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" + -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 extract-gems$(sequential): PHONY $(ECHO) Extracting bundled gem files... $(Q) $(BASERUBY) -C "$(srcdir)" \ - -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 + -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 extract-gems$(sequential): $(HAVE_GIT:yes=clone-bundled-gems-src) clone-bundled-gems-src: PHONY $(Q) $(BASERUBY) -C "$(srcdir)" \ - -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)" + -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 outdate-bundled-gems: PHONY $(Q) $(BASERUBY) $(tooldir)/$@.rb --make="$(MAKE)" --mflags="$(MFLAGS)" \ diff --git a/defs/gmake.mk b/defs/gmake.mk index 1e23d9eaa3..87fc8021b2 100644 --- a/defs/gmake.mk +++ b/defs/gmake.mk @@ -305,23 +305,13 @@ HELP_EXTRA_TASKS = \ # 1. squeeze spaces # 2. strip and skip comment/empty lines -# 3. "gem x.y.z URL xxxxxx" -> "gem|x.y.z(+1).snapshot|xxxxxx|URL" +# 3. "gem x.y.z URL xxxxxx" -> "gem|x.y.z|xxxxxx|URL" # 4. "gem x.y.z URL" -> "gem-x.y.z" bundled-gems := $(shell sed \ -e 's/[ ][ ]*/ /g' \ -e 's/^ //;/\#/d;s/ *$$//;/^$$/d' \ $(if $(filter yes,$(HAVE_GIT)), \ - -e '/^\(.*\) \(.*\) \(.*\) \(.*\)/{' \ - -e 's//\1|\3|\4|\2/ ; # gem url rev ver' \ - -e 's/|[0-9][0-9]*\.[0-9][0-9]*$$/&.0/ ; # add teeny' \ - -e '/\([0-9]9*\)$$/{ ; # bump up' \ - -e 's//\n\1/;h;s/^.*\n//' \ - -e 'y/0123456789/1234567890/;s/^0/10/' \ - -e 'x;G;s/\n.*\n//;s/$$/.snapshot/' \ - -e '}' \ - -e 's/^\(.*\)|\(.*\)|\(.*\)|\(.*\)/\1|\4|\3|\2/' \ - \ - -e '}' \ + -e 's/^\(.*\) \(.*\) \(.*\) \(.*\)/\1|\2|\4|\3/' \ ) \ -e 's/ /-/;s/ .*//' \ $(srcdir)/gems/bundled_gems) @@ -395,12 +385,11 @@ $(bundled-gem-gemspec): $(bundled-gem-revision) \ | $(srcdir)/gems/src/$(1)/.git $(Q) $(BASERUBY) -I$(tooldir)/lib -rbundled_gem -e 'BundledGem.dummy_gemspec(*ARGV)' $$(@) -$(bundled-gem-gemfile): $(bundled-gem-revision) +$(bundled-gem-gemfile): $(bundled-gem-gemspec) $(bundled-gem-revision) $(ECHO) Building $(1)@$(3) to $$(@) $(Q) $(BASERUBY) -C "$(srcdir)" \ -Itool/lib -rbundled_gem \ - -e 'BundledGem.build(*ARGV, validation: false)' \ - gems/src/$(1)/$(1).gemspec $(2) gems + -e 'BundledGem.build("gems/src/$(1)/$(1).gemspec", "$(2)", "gems", validation: false)' endef define build-gem-0 diff --git a/tool/lib/bundled_gem.rb b/tool/lib/bundled_gem.rb index 3f71db89a4..45e41ac648 100644 --- a/tool/lib/bundled_gem.rb +++ b/tool/lib/bundled_gem.rb @@ -16,24 +16,6 @@ module BundledGem "psych" # rdoc ] - def self.each(release: true, snapshot: false) - File.foreach(File.join(__dir__, "../../gems/bundled_gems")) do |line| - line.chomp! - next if /^\s*(?:#|$)/ =~ line - gem, ver, uri, rev = line.split - if !rev - next unless release - elsif snapshot - # Assume a version ending with digits only segment is a release - # version, and append suffix to make prerelase version. - # Bump up because "X.Y.Z.snapshot" < "X.Y.Z" as versions. - ver = ver.succ if /\.\d+\z/.match?(ver) - ver += ".snapshot" - end - yield gem, ver, uri, rev - end - end - module_function def unpack(file, *rest) @@ -54,15 +36,6 @@ module BundledGem Dir.chdir(gemdir) do spec = Gem::Specification.load(gemfile) abort "Failed to load #{gemspec}" unless spec - spec.version = version - spec.files.delete_if do |f| - case f - when 'Gemfile', 'Rakefile', gemfile - true - else - f.start_with?('bin/', 'test/', '.git') - end - end output = File.join(outdir, spec.file_name) FileUtils.rm_rf(output) package = Gem::Package.new(output)