summaryrefslogtreecommitdiff
path: root/defs
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2020-03-13 15:31:21 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2020-03-13 15:34:50 +0900
commit88f4ebac83a77f933e9da099eabdf05004767de9 (patch)
tree0cb0e6ceb94242f3a90b3d1f615912a034543287 /defs
parent0cd7be99e9a15f649970559e43e3edb704568670 (diff)
Update and extract for each gem
Diffstat (limited to 'defs')
-rw-r--r--defs/gmake.mk30
1 files changed, 27 insertions, 3 deletions
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