1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

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
This commit is contained in:
rhe 2016-09-26 02:50:31 +00:00
parent 537fea9921
commit d1dbeebebf
2 changed files with 16 additions and 25 deletions

View file

@ -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

View file

@ -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