From 6b2d9ed2a5f60606731efe13a26be12d685a49eb Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Tue, 12 Aug 2025 13:47:22 +0900 Subject: [PATCH 1/2] 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 f362948593e1d9..e2c3d72cc82cc3 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 068425cb1d82c5..6382e3d0031832 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 b76feefd942cf7..e46c5bdc1c5ff0 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 @@ 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 c82d31d743da65..47ee80bc8924ea 100755 --- a/tool/outdate-bundled-gems.rb +++ b/tool/outdate-bundled-gems.rb @@ -115,7 +115,7 @@ def each_directory 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 2b7e8916e50964..027ed647f10683 100644 --- a/tool/test-bundled-gems.rb +++ b/tool/test-bundled-gems.rb @@ -25,8 +25,7 @@ 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 e20566546bb0c4..dec6b49ceede9b 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 @@ 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 From 401932c18f72db086a1a9890d34efb2e48a42e35 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Tue, 12 Aug 2025 18:19:09 +0900 Subject: [PATCH 2/2] NMake needs caret to escape a hash sign --- common.mk | 2 +- template/Makefile.in | 2 ++ win32/Makefile.sub | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/common.mk b/common.mk index e2c3d72cc82cc3..de90083c80e0a3 100644 --- a/common.mk +++ b/common.mk @@ -1539,7 +1539,7 @@ 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+|\#.*" +split_option = -F"\s+|$(HASH_SIGN).*" update-gems$(sequential): PHONY $(ECHO) Downloading bundled gem files... diff --git a/template/Makefile.in b/template/Makefile.in index ea6ab349b0ec69..66ac10de1b4578 100644 --- a/template/Makefile.in +++ b/template/Makefile.in @@ -289,6 +289,8 @@ ABI_VERSION_HDR = $(hdrdir)/ruby/internal/abi.h CAT_DEPEND = sed -e 's/{\$$([^(){}]*)[^{}]*}//g' -e /AUTOGENERATED/q +HASH_SIGN = \# + .SUFFIXES: .inc .h .c .y .i .$(ASMEXT) .$(DTRACE_EXT) all: diff --git a/win32/Makefile.sub b/win32/Makefile.sub index 4dc63a99f20891..664d54e5ff169d 100644 --- a/win32/Makefile.sub +++ b/win32/Makefile.sub @@ -464,6 +464,7 @@ ASMEXT = asm INSTALLED_LIST= .installed.list +HASH_SIGN = ^# SRC_FILE = $(<:\=/) OS_SRC_FILE = $(<:/=\) DEST_FILE = $(@:\=/)