summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common.mk9
-rwxr-xr-xtool/rbinstall.rb9
2 files changed, 11 insertions, 7 deletions
diff --git a/common.mk b/common.mk
index 7369d26bf0..57e11abb48 100644
--- a/common.mk
+++ b/common.mk
@@ -1290,11 +1290,12 @@ update-gems: PHONY
extract-gems: PHONY
$(ECHO) Extracting bundled gem files...
- $(Q) $(RUNRUBY) -C "$(srcdir)/gems" \
- -I../tool -rgem-unpack -answ \
+ $(Q) $(RUNRUBY) -C "$(srcdir)" \
+ -Itool -rgem-unpack -answ \
+ -e 'BEGIN {FileUtils.mkdir_p(d = ".bundle/gems")}' \
-e 'gem, ver = *$$F' \
- -e 'Gem.unpack("#{gem}-#{ver}.gem")' \
- bundled_gems
+ -e 'Gem.unpack("gems/#{gem}-#{ver}.gem", d)' \
+ gems/bundled_gems
update-bundled_gems: PHONY
$(Q) $(RUNRUBY) -rrubygems \
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
index 341adbf765..a9b6b9b179 100755
--- a/tool/rbinstall.rb
+++ b/tool/rbinstall.rb
@@ -878,11 +878,14 @@ install?(:ext, :comm, :gem, :'bundled-gems') do
}
gem_ext_dir = "#$extout/gems/#{CONFIG['arch']}"
extensions_dir = Gem::StubSpecification.gemspec_stub("", gem_dir, gem_dir).extensions_dir
- dirs = Gem::Util.glob_files_in_dir "*/", "#{srcdir}/gems"
- Gem::Specification.each_gemspec(dirs) do |path|
+ File.foreach("#{srcdir}/gems/bundled_gems") do |name|
+ next unless /^(\S+)\s+(S+).*/ =~ name
+ gem_name = "#$1-#$2"
+ path = "#{srcdir}/.bundle/gems/#{gem_name}/#$1.gemspec"
+ next unless File.exist?(path)
spec = load_gemspec(path)
next unless spec.platform == Gem::Platform::RUBY
- next unless spec.full_name == path[srcdir.size..-1][/\A\/gems\/([^\/]+)/, 1]
+ next unless spec.full_name == gem_name
spec.extension_dir = "#{extensions_dir}/#{spec.full_name}"
if File.directory?(ext = "#{gem_ext_dir}/#{spec.full_name}")
spec.extensions[0] ||= "-"