aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrhe <rhe@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-09-26 02:50:31 +0000
committerrhe <rhe@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-09-26 02:50:31 +0000
commit0b8c90a93c6fc95d2d5bdd607cb1f4300c248848 (patch)
treee3be337ed6cceb8ee74f36dcee4dc2318632e726
parente9237ada3c29b335be5effb8378414dea6467c88 (diff)
downloadruby-0b8c90a93c6fc95d2d5bdd607cb1f4300c248848.tar.gz
rbinstall.rb: don't install gemspec for skipped libraries
* tool/rbinstall.rb (gem): Don't install gemspec if no files will be installed for the gem. This happens when the extension library is not compiled. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56248 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog6
-rwxr-xr-xtool/rbinstall.rb35
2 files changed, 16 insertions, 25 deletions
diff --git a/ChangeLog b/ChangeLog
index d13d137fa9..bc31aa4427 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Mon Sep 26 11:50:03 2016 Kazuki Yamaguchi <k@rhe.jp>
+
+ * tool/rbinstall.rb (gem): Don't install gemspec if no files will be
+ installed for the gem. This happens when the extension library is not
+ compiled.
+
Mon Sep 26 11:06:47 2016 Kazuki Yamaguchi <k@rhe.jp>
* string.c (enc_strlen, rb_enc_strlen_cr): Avoid signed integer
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
index e27cffd7a1..94bf91ecac 100755
--- a/tool/rbinstall.rb
+++ b/tool/rbinstall.rb
@@ -648,21 +648,6 @@ module RbInstall
string.sub(/\A#{Regexp.escape(prefix)}/, "")
end
end
-
- class Reader < Struct.new(:src)
- def gemspec
- @gemspec ||= begin
- spec = Gem::Specification.load(src) || raise("invalid spec in #{src}")
- file_collector = FileCollector.new(File.dirname(src))
- spec.files = file_collector.collect
- spec
- end
- end
-
- def spec_source
- @gemspec.to_ruby
- end
- end
end
class UnpackedInstaller < Gem::Installer
@@ -718,21 +703,21 @@ install?(:ext, :comm, :gem) do
default_spec_dir = "#{spec_dir}/default"
makedirs(default_spec_dir)
- gems = {}
-
- Dir.glob(srcdir+"/{lib,ext}/**/*.gemspec").each do |src|
- specgen = RbInstall::Specs::Reader.new(src)
- gems[specgen.gemspec.name] ||= specgen
- end
-
- gems.sort.each do |name, specgen|
- gemspec = specgen.gemspec
+ gems = Dir.glob(srcdir+"/{lib,ext}/**/*.gemspec").map {|src|
+ spec = Gem::Specification.load(src) || raise("invalid spec in #{src}")
+ file_collector = RbInstall::Specs::FileCollector.new(File.dirname(src))
+ files = file_collector.collect
+ next if files.empty?
+ spec.files = files
+ spec
+ }
+ gems.compact.sort_by(&:name).each do |gemspec|
full_name = "#{gemspec.name}-#{gemspec.version}"
puts "#{" "*30}#{gemspec.name} #{gemspec.version}"
gemspec_path = File.join(default_spec_dir, "#{full_name}.gemspec")
open_for_install(gemspec_path, $data_mode) do
- specgen.spec_source
+ gemspec.to_ruby
end
unless gemspec.executables.empty? then