From 88f4ebac83a77f933e9da099eabdf05004767de9 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Fri, 13 Mar 2020 15:31:21 +0900 Subject: [PATCH] Update and extract for each gem --- common.mk | 4 ++-- defs/gmake.mk | 30 +++++++++++++++++++++++++++--- template/GNUmakefile.in | 2 ++ 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/common.mk b/common.mk index 0742cbc9c7..e8f351116a 100644 --- a/common.mk +++ b/common.mk @@ -1276,7 +1276,7 @@ update-config_files: PHONY refresh-gems: update-bundled_gems prepare-gems prepare-gems: update-gems extract-gems -update-gems: PHONY +update-gems$(gnumake:yes=-nongnumake): PHONY $(ECHO) Downloading bundled gem files... $(Q) $(BASERUBY) -C "$(srcdir)" \ -I./tool -rdownloader -answ \ @@ -1289,7 +1289,7 @@ update-gems: PHONY -e 'FileUtils.rm_rf(old.map{'"|n|"'n.chomp(".gem")})' \ gems/bundled_gems -extract-gems: PHONY +extract-gems$(gnumake:yes=-nongnumake): PHONY $(ECHO) Extracting bundled gem files... $(Q) $(RUNRUBY) -C "$(srcdir)" \ -Itool -rgem-unpack -answ \ diff --git a/defs/gmake.mk b/defs/gmake.mk index a359b44eab..874a7aff95 100644 --- a/defs/gmake.mk +++ b/defs/gmake.mk @@ -1,6 +1,5 @@ # -*- mode: makefile-gmake; indent-tabs-mode: t -*- -gnumake = yes override gnumake_recursive := $(if $(findstring n,$(firstword $(MFLAGS))),,+) override mflags := $(filter-out -j%,$(MFLAGS)) MSPECOPT += $(if $(filter -j%,$(MFLAGS)),-j) @@ -243,9 +242,34 @@ HELP_EXTRA_TASKS = \ " update-github: merge master branch and push it to Pull Request [PR=1234]" \ "" -ifneq ($(filter refresh-gems prepare-gems,$(MAKECMDGOALS)),) extract-gems: update-gems -endif + +BUNDLED_GEMS := $(shell sed 's/[ ][ ]*/-/;s/[ ].*//' $(srcdir)/gems/bundled_gems) + +update-gems: | $(patsubst %,gems/%.gem,$(BUNDLED_GEMS)) + +gems/%.gem: + $(ECHO) Downloading bundled gem $*... + $(Q) $(BASERUBY) -C "$(srcdir)" \ + -I./tool -rdownloader \ + -e 'gem = "$(@F)"' \ + -e 'old = Dir.glob("gems/"+gem.sub(/-[^-]*$$/, "-*.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")})' + +extract-gems: | $(patsubst %,.bundle/gems/%,$(BUNDLED_GEMS)) + +.bundle/gems/%: gems/%.gem | .bundle/gems + $(ECHO) Extracting bundle gem $*... + $(Q) $(RUNRUBY) -C "$(srcdir)" \ + -Itool -rgem-unpack \ + -e 'Gem.unpack("gems/$(@F).gem", ".bundle/gems")' + +$(srcdir)/.bundle/gems: + $(MAKEDIRS) $@ + ifneq ($(filter update-bundled_gems refresh-gems,$(MAKECMDGOALS)),) update-gems: update-bundled_gems endif diff --git a/template/GNUmakefile.in b/template/GNUmakefile.in index d0444d37e2..444e44b3d3 100644 --- a/template/GNUmakefile.in +++ b/template/GNUmakefile.in @@ -1,3 +1,5 @@ +gnumake = yes + include Makefile ifeq ($(HAVE_BASERUBY),yes)