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:
parent
537fea9921
commit
d1dbeebebf
2 changed files with 16 additions and 25 deletions
|
@ -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>
|
Mon Sep 26 11:06:47 2016 Kazuki Yamaguchi <k@rhe.jp>
|
||||||
|
|
||||||
* string.c (enc_strlen, rb_enc_strlen_cr): Avoid signed integer
|
* string.c (enc_strlen, rb_enc_strlen_cr): Avoid signed integer
|
||||||
|
|
|
@ -648,21 +648,6 @@ module RbInstall
|
||||||
string.sub(/\A#{Regexp.escape(prefix)}/, "")
|
string.sub(/\A#{Regexp.escape(prefix)}/, "")
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
|
||||||
class UnpackedInstaller < Gem::Installer
|
class UnpackedInstaller < Gem::Installer
|
||||||
|
@ -718,21 +703,21 @@ install?(:ext, :comm, :gem) do
|
||||||
default_spec_dir = "#{spec_dir}/default"
|
default_spec_dir = "#{spec_dir}/default"
|
||||||
makedirs(default_spec_dir)
|
makedirs(default_spec_dir)
|
||||||
|
|
||||||
gems = {}
|
gems = Dir.glob(srcdir+"/{lib,ext}/**/*.gemspec").map {|src|
|
||||||
|
spec = Gem::Specification.load(src) || raise("invalid spec in #{src}")
|
||||||
Dir.glob(srcdir+"/{lib,ext}/**/*.gemspec").each do |src|
|
file_collector = RbInstall::Specs::FileCollector.new(File.dirname(src))
|
||||||
specgen = RbInstall::Specs::Reader.new(src)
|
files = file_collector.collect
|
||||||
gems[specgen.gemspec.name] ||= specgen
|
next if files.empty?
|
||||||
end
|
spec.files = files
|
||||||
|
spec
|
||||||
gems.sort.each do |name, specgen|
|
}
|
||||||
gemspec = specgen.gemspec
|
gems.compact.sort_by(&:name).each do |gemspec|
|
||||||
full_name = "#{gemspec.name}-#{gemspec.version}"
|
full_name = "#{gemspec.name}-#{gemspec.version}"
|
||||||
|
|
||||||
puts "#{" "*30}#{gemspec.name} #{gemspec.version}"
|
puts "#{" "*30}#{gemspec.name} #{gemspec.version}"
|
||||||
gemspec_path = File.join(default_spec_dir, "#{full_name}.gemspec")
|
gemspec_path = File.join(default_spec_dir, "#{full_name}.gemspec")
|
||||||
open_for_install(gemspec_path, $data_mode) do
|
open_for_install(gemspec_path, $data_mode) do
|
||||||
specgen.spec_source
|
gemspec.to_ruby
|
||||||
end
|
end
|
||||||
|
|
||||||
unless gemspec.executables.empty? then
|
unless gemspec.executables.empty? then
|
||||||
|
|
Loading…
Add table
Reference in a new issue