From aacaa2ec5e13d7d678b58208bf3d6c0551f251cd Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Sun, 27 Nov 2022 01:12:06 +0900 Subject: Refine outdate-bundled-gems --- common.mk | 35 ++++++++++++++++++++++++++++------- defs/gmake.mk | 3 +-- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/common.mk b/common.mk index 07335e4878..125b81b3f9 100644 --- a/common.mk +++ b/common.mk @@ -1372,6 +1372,7 @@ update-config_files: PHONY refresh-gems: update-bundled_gems prepare-gems prepare-gems: $(HAVE_BASERUBY:yes=update-gems) $(HAVE_BASERUBY:yes=extract-gems) +extract-gems: $(HAVE_BASERUBY:yes=update-gems) $(DOT_WAIT) $(HAVE_BASERUBY:yes=outdate-bundled-gems) update-gems$(gnumake:yes=-sequential): PHONY $(ECHO) Downloading bundled gem files... @@ -1403,16 +1404,36 @@ extract-gems$(gnumake:yes=-sequential): PHONY -e 'end' \ gems/bundled_gems -extract-gems: outdate-bundled-gems outdate-bundled-gems: PHONY - $(Q) $(BASERUBY) -C "$(srcdir)" \ + $(Q) $(BASERUBY) \ -rfileutils \ - -e "Dir.glob('.bundle/gems/*/') {|g|" \ - -e "FileUtils::Verbose.rm_rf(g) unless File.exist?(%[gems/#{File.basename(g)}.gem])" \ + -e "srcdir = ARGV.shift" \ + -e "FU = /\A-\w*n/ =~ ENV['MFLAGS'] ? FileUtils::DryRun : FileUtils::Verbose" \ + -e "Dir.glob(%[#{srcdir}/.bundle/gems/*/]) {|dir|" \ + -e "gem = %[#{srcdir}/gems/#{File.basename(dir)}.gem]" \ + -e "FU.rm_rf(dir) unless File.exist?(gem)" \ + -e "}" \ + -e "Dir.glob(%[#{srcdir}/.bundle/specifications/*.gemspec]) {|spec|" \ + -e "gem = %[#{srcdir}/gems/#{File.basename(spec, '.gemspec')}.gem]" \ + -e "FU.rm_f(spec) unless File.exist?(gem)" \ + -e "}" \ + -e "Dir.glob('.bundle/specifications/*.gemspec') {|spec|" \ + -e "dir = %[#{srcdir}/.bundle/gems/#{File.basename(spec, '.gemspec')}]" \ + -e "FU.rm_f(spec) unless File.directory?(dir)" \ + -e "}" \ + -e "Dir.glob('.bundle/gems/*/') {|dir|" \ + -e "spec = %[.bundle/specifications/#{File.basename(dir)}.gemspec]" \ + -e "FU.rm_rf(dir) unless File.exist?(spec)" \ + -e "}" \ + -e "Dir.glob('.bundle/extensions/*/*/*/') {|dir|" \ + -e "spec = %[.bundle/specifications/#{File.basename(dir)}.gemspec]" \ + -e "unless File.exist?(spec)" \ + -e "FU.rm_rf(dir)" \ + -e "FU.rmdir(File.dirname(dir), parents: true) rescue nil" \ + -e "end" \ -e "}" \ - -e "Dir.glob('.bundle/specifications/*.gemspec') {|g|" \ - -e "FileUtils::Verbose.rm_f(g) unless File.exist?(%[gems/#{File.basename(g, '.gemspec')}.gem])" \ - -e "}" + -e "# $(MAKE)" \ + "$(srcdir)" update-bundled_gems: PHONY $(Q) $(RUNRUBY) -rrubygems \ diff --git a/defs/gmake.mk b/defs/gmake.mk index 6064ae40d8..e854a0ac77 100644 --- a/defs/gmake.mk +++ b/defs/gmake.mk @@ -268,8 +268,6 @@ HELP_EXTRA_TASKS = \ " update-github: merge master branch and push it to Pull Request [PR=1234]" \ "" -extract-gems: $(HAVE_BASERUBY:yes=update-gems) - # 1. squeeze spaces # 2. strip and skip comment/empty lines # 3. "gem x.y.z URL xxxxxx" -> "gem|x.y.z|xxxxxx|URL" @@ -288,6 +286,7 @@ bundled-gems := $(filter-out $(bundled-gems-rev),$(bundled-gems)) update-gems: | $(patsubst %,$(srcdir)/gems/%.gem,$(bundled-gems)) update-gems: | $(foreach g,$(bundled-gems-rev),$(srcdir)/gems/src/$(word 1,$(subst |, ,$(value g)))) +update-gems: | $(foreach g,$(bundled-gems-rev),$(srcdir)/gems/$(word 1,$(subst |, ,$(value g)))-$(word 2,$(subst |, ,$(value g))).gem) test-bundler-precheck: | $(srcdir)/.bundle/cache -- cgit v1.2.1