summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-01-16 04:52:59 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-01-16 04:52:59 +0000
commit983cbb1aed57665e3a616f40b759f35bf143e091 (patch)
treeff9eb17a393cfc7e341154f3a2bfaf9b198981f1
parentd0cf23b57eae01a21e10658b8272b498117d3913 (diff)
common.mk: extract-gems
* common.mk (extract-gems): extract gem files to install them even if zlib is not available. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49271 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--common.mk11
-rwxr-xr-xtool/gem-unpack.rb16
2 files changed, 27 insertions, 0 deletions
diff --git a/common.mk b/common.mk
index 0b82bcc..96f6215 100644
--- a/common.mk
+++ b/common.mk
@@ -924,6 +924,14 @@ update-gems: PHONY
-e 'File.unlink(*(old-[gem]))' \
bundled_gems
+extract-gems: PHONY
+ $(ECHO) Extracting bundled gem files...
+ $(Q) $(RUNRUBY) -C "$(srcdir)/gems" \
+ -I../tool -rgem-unpack -answ \
+ -e 'gem, ver = *$$F' \
+ -e 'Gem.unpack("#{gem}-#{ver}.gem")' \
+ bundled_gems
+
UPDATE_LIBRARIES = no
### set the following environment variable or uncomment the line if
@@ -973,6 +981,9 @@ extract-extlibs:
clean-extlibs:
$(Q) $(RMALL) $(srcdir)/.downloaded-cache
+clean-gems:
+ $(Q) $(RM) gems/*.gem
+
CLEAN_CACHE = clean-extlibs
info: info-program info-libruby_a info-libruby_so info-arch
diff --git a/tool/gem-unpack.rb b/tool/gem-unpack.rb
new file mode 100755
index 0000000..5f15751
--- /dev/null
+++ b/tool/gem-unpack.rb
@@ -0,0 +1,16 @@
+require 'rubygems'
+require 'rubygems/package'
+
+def Gem.unpack(file, dir = nil)
+ pkg = Gem::Package.new(file)
+ pkg.security_policy = Gem::Security::LowSecurity
+ spec = pkg.spec
+ target = spec.full_name
+ target = File.join(dir, target) if dir
+ pkg.extract_files target
+ spec_file = File.join(target, "#{spec.name}.gemspec")
+ open(spec_file, 'wb') do |f|
+ f.print spec.to_ruby
+ end
+ puts "Unpacked #{file}"
+end