From 6b2d9ed2a5f60606731efe13a26be12d685a49eb Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Tue, 12 Aug 2025 13:47:22 +0900 Subject: [PATCH] Handle preperly comments in middle of lines in gems/bundled_gems --- common.mk | 12 +++++++----- defs/gmake.mk | 2 +- tool/fetch-bundled_gems.rb | 3 +-- tool/outdate-bundled-gems.rb | 2 +- tool/test-bundled-gems.rb | 3 +-- tool/update-bundled_gems.rb | 4 ++-- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/common.mk b/common.mk index f362948593..e2c3d72cc8 100644 --- a/common.mk +++ b/common.mk @@ -1539,12 +1539,14 @@ prepare-gems: $(HAVE_BASERUBY:yes=update-gems) $(HAVE_BASERUBY:yes=extract-gems) extract-gems: $(HAVE_BASERUBY:yes=update-gems) $(HAVE_BASERUBY:yes=outdate-bundled-gems) update-gems: $(HAVE_BASERUBY:yes=outdate-bundled-gems) +split_option = -F"\s+|\#.*" + update-gems$(sequential): PHONY $(ECHO) Downloading bundled gem files... $(Q) $(BASERUBY) -C "$(srcdir)" \ - -I./tool -rdownloader -answ \ + -I./tool -rdownloader $(split_option) -answ \ -e 'gem, ver = *$$F' \ - -e 'next if !ver or /^#/=~gem' \ + -e 'next if !ver' \ -e 'old = Dir.glob("gems/#{gem}-*.gem")' \ -e 'gem = "#{gem}-#{ver}.gem"' \ -e 'Downloader::RubyGems.download(gem, "gems", nil) and' \ @@ -1556,10 +1558,10 @@ update-gems$(sequential): PHONY extract-gems$(sequential): PHONY $(ECHO) Extracting bundled gem files... $(Q) $(BASERUBY) -C "$(srcdir)" \ - -Itool/lib -rfileutils -rbundled_gem -answ \ + -Itool/lib -rfileutils -rbundled_gem $(split_option) -answ \ -e 'BEGIN {d = ".bundle/gems"}' \ -e 'gem, ver, _, rev = *$$F' \ - -e 'next if !ver or /^#/=~gem' \ + -e 'next if !ver' \ -e 'g = "#{gem}-#{ver}"' \ -e 'unless File.directory?("#{d}/#{g}")' \ -e 'if rev and File.exist?(gs = "gems/src/#{gem}/#{gem}.gemspec")' \ @@ -1623,7 +1625,7 @@ yes-install-for-test-bundled-gems: yes-update-default-gemspecs test-bundled-gems-fetch: yes-test-bundled-gems-fetch yes-test-bundled-gems-fetch: clone-bundled-gems-src clone-bundled-gems-src: PHONY - $(Q) $(BASERUBY) -C $(srcdir)/gems ../tool/fetch-bundled_gems.rb BUNDLED_GEMS="$(BUNDLED_GEMS)" src bundled_gems + $(Q) $(BASERUBY) -C $(srcdir) tool/fetch-bundled_gems.rb BUNDLED_GEMS="$(BUNDLED_GEMS)" gems/src gems/bundled_gems no-test-bundled-gems-fetch: test-bundled-gems-prepare: $(TEST_RUNNABLE)-test-bundled-gems-prepare diff --git a/defs/gmake.mk b/defs/gmake.mk index 068425cb1d..6382e3d003 100644 --- a/defs/gmake.mk +++ b/defs/gmake.mk @@ -309,7 +309,7 @@ HELP_EXTRA_TASKS = \ # 4. "gem x.y.z URL" -> "gem-x.y.z" bundled-gems := $(shell sed \ -e 's/[ ][ ]*/ /g' \ - -e 's/^ //;/\#/d;s/ *$$//;/^$$/d' \ + -e 's/^ //;s/\#.*//;s/ *$$//;/^$$/d' \ $(if $(filter yes,$(HAVE_GIT)), \ -e 's/^\(.*\) \(.*\) \(.*\) \(.*\)/\1|\2|\4|\3/' \ ) \ diff --git a/tool/fetch-bundled_gems.rb b/tool/fetch-bundled_gems.rb index b76feefd94..e46c5bdc1c 100755 --- a/tool/fetch-bundled_gems.rb +++ b/tool/fetch-bundled_gems.rb @@ -1,4 +1,4 @@ -#!ruby -an +#!ruby -alnF\s+|#.* BEGIN { require 'fileutils' require_relative 'lib/colorize' @@ -21,7 +21,6 @@ BEGIN { n, v, u, r = $F next unless n -next if n =~ /^#/ next if bundled_gems&.all? {|pat| !File.fnmatch?(pat, n)} unless File.exist?("#{n}/.git") diff --git a/tool/outdate-bundled-gems.rb b/tool/outdate-bundled-gems.rb index c82d31d743..47ee80bc89 100755 --- a/tool/outdate-bundled-gems.rb +++ b/tool/outdate-bundled-gems.rb @@ -115,7 +115,7 @@ srcdir = Removal.new(ARGV.shift) curdir = !srcdir.base || File.identical?(srcdir.base, ".") ? srcdir : Removal.new bundled = File.readlines("#{srcdir.base}gems/bundled_gems"). - grep(/^(\w\S+)\s+\S+(?:\s+\S+\s+(\S+))?/) {$~.captures}.to_h rescue nil + grep(/^(\w[^\#\s]+)\s+[^\#\s]+(?:\s+[^\#\s]+\s+([^\#\s]+))?/) {$~.captures}.to_h rescue nil srcdir.glob(".bundle/gems/*/") do |dir| base = File.basename(dir) diff --git a/tool/test-bundled-gems.rb b/tool/test-bundled-gems.rb index 2b7e8916e5..027ed647f1 100644 --- a/tool/test-bundled-gems.rb +++ b/tool/test-bundled-gems.rb @@ -25,8 +25,7 @@ exit_code = 0 ruby = ENV['RUBY'] || RbConfig.ruby failed = [] File.foreach("#{gem_dir}/bundled_gems") do |line| - next if /^\s*(?:#|$)/ =~ line - gem = line.split.first + next unless gem = line[/^[^\s\#]+/] next unless bundled_gems.empty? || bundled_gems.split(",").include?(gem) next unless File.directory?("#{gem_dir}/src/#{gem}/test") diff --git a/tool/update-bundled_gems.rb b/tool/update-bundled_gems.rb index e20566546b..dec6b49cee 100755 --- a/tool/update-bundled_gems.rb +++ b/tool/update-bundled_gems.rb @@ -1,4 +1,4 @@ -#!ruby -pla +#!ruby -alpF\s+|#.* BEGIN { require 'rubygems' date = nil @@ -9,7 +9,7 @@ output = STDERR if ARGF.file == STDIN END { output.print date.strftime("latest_date=%F") if date } -unless /^[^#]/ !~ (gem = $F[0]) +if gem = $F[0] ver = Gem::Version.new($F[1]) (gem, src), = Gem::SpecFetcher.fetcher.detect(:latest) {|s| s.platform == "ruby" && s.name == gem