From 88f4ebac83a77f933e9da099eabdf05004767de9 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Fri, 13 Mar 2020 15:31:21 +0900 Subject: Update and extract for each gem --- defs/gmake.mk | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) (limited to 'defs') 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 -- cgit v1.2.3