mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
rbinstall.rb: purge git ls-files
* tool/rbinstall.rb (load_gemspec): purge `git ls-files` generated by bundle. it is not available always everywhere everytime. [ruby-dev:50068] [Bug #13423] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58327 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
fa3a612e2e
commit
796e995007
1 changed files with 17 additions and 5 deletions
|
@ -763,6 +763,20 @@ install?(:ext, :arch, :gem, :'default-gems', :'default-gems-arch') do
|
||||||
install_default_gem('ext', srcdir)
|
install_default_gem('ext', srcdir)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def load_gemspec(file)
|
||||||
|
code = File.read(file, encoding: "utf-8:-")
|
||||||
|
code.gsub!(/`git.*?`/m, '""')
|
||||||
|
begin
|
||||||
|
spec = eval(code, binding, file)
|
||||||
|
rescue SignalException, SystemExit
|
||||||
|
raise
|
||||||
|
rescue SyntaxError, Exception
|
||||||
|
end
|
||||||
|
raise("invalid spec in #{file}") unless spec
|
||||||
|
spec.loaded_from = file
|
||||||
|
spec
|
||||||
|
end
|
||||||
|
|
||||||
def install_default_gem(dir, srcdir)
|
def install_default_gem(dir, srcdir)
|
||||||
gem_dir = Gem.default_dir
|
gem_dir = Gem.default_dir
|
||||||
directories = Gem.ensure_gem_subdirectories(gem_dir, :mode => $dir_mode)
|
directories = Gem.ensure_gem_subdirectories(gem_dir, :mode => $dir_mode)
|
||||||
|
@ -773,10 +787,11 @@ def install_default_gem(dir, srcdir)
|
||||||
makedirs(default_spec_dir)
|
makedirs(default_spec_dir)
|
||||||
|
|
||||||
gems = Dir.glob("#{srcdir}/#{dir}/**/*.gemspec").map {|src|
|
gems = Dir.glob("#{srcdir}/#{dir}/**/*.gemspec").map {|src|
|
||||||
spec = Gem::Specification.load(src) || raise("invalid spec in #{src}")
|
spec = load_gemspec(src)
|
||||||
file_collector = RbInstall::Specs::FileCollector.new(src)
|
file_collector = RbInstall::Specs::FileCollector.new(src)
|
||||||
files = file_collector.collect
|
files = file_collector.collect
|
||||||
next if files.empty?
|
next if files.empty?
|
||||||
|
spec.files = files
|
||||||
spec
|
spec
|
||||||
}
|
}
|
||||||
gems.compact.sort_by(&:name).each do |gemspec|
|
gems.compact.sort_by(&:name).each do |gemspec|
|
||||||
|
@ -820,10 +835,7 @@ install?(:ext, :comm, :gem, :'bundle-gems') do
|
||||||
gem_ext_dir = "#$extout/gems/#{CONFIG['arch']}"
|
gem_ext_dir = "#$extout/gems/#{CONFIG['arch']}"
|
||||||
extensions_dir = Gem::StubSpecification.gemspec_stub("", gem_dir, gem_dir).extensions_dir
|
extensions_dir = Gem::StubSpecification.gemspec_stub("", gem_dir, gem_dir).extensions_dir
|
||||||
Gem::Specification.each_gemspec([srcdir+'/gems/*']) do |path|
|
Gem::Specification.each_gemspec([srcdir+'/gems/*']) do |path|
|
||||||
dir = File.dirname(path)
|
spec = load_gemspec(path)
|
||||||
spec = Dir.chdir(dir) {
|
|
||||||
Gem::Specification.load(File.basename(path))
|
|
||||||
}
|
|
||||||
next unless spec.platform == Gem::Platform::RUBY
|
next unless spec.platform == Gem::Platform::RUBY
|
||||||
next unless spec.full_name == path[srcdir.size..-1][/\A\/gems\/([^\/]+)/, 1]
|
next unless spec.full_name == path[srcdir.size..-1][/\A\/gems\/([^\/]+)/, 1]
|
||||||
spec.extension_dir = "#{extensions_dir}/#{spec.full_name}"
|
spec.extension_dir = "#{extensions_dir}/#{spec.full_name}"
|
||||||
|
|
Loading…
Add table
Reference in a new issue