Changeset View
Changeset View
Standalone View
Standalone View
lang/ruby23/files/patch-tool_rbinstall.rb
--- tool/rbinstall.rb.orig 2015-03-25 03:33:14 UTC | --- tool/rbinstall.rb.orig 2015-11-16 06:33:17 UTC | ||||
+++ tool/rbinstall.rb | +++ tool/rbinstall.rb | ||||
@@ -311,6 +311,7 @@ | @@ -322,6 +322,7 @@ bindir = CONFIG["bindir", true] | ||||
libdir = CONFIG[CONFIG.fetch("libdirname", "libdir"), true] | libdir = CONFIG[CONFIG.fetch("libdirname", "libdir"), true] | ||||
rubyhdrdir = CONFIG["rubyhdrdir", true] | rubyhdrdir = CONFIG["rubyhdrdir", true] | ||||
archhdrdir = CONFIG["rubyarchhdrdir"] || (rubyhdrdir + "/" + CONFIG['arch']) | archhdrdir = CONFIG["rubyarchhdrdir"] || (rubyhdrdir + "/" + CONFIG['arch']) | ||||
+libdatadir = CONFIG["prefix", true] + "/" + "libdata" | +libdatadir = CONFIG["prefix", true] + "/" + "libdata" | ||||
rubylibdir = CONFIG["rubylibdir", true] | rubylibdir = CONFIG["rubylibdir", true] | ||||
archlibdir = CONFIG["rubyarchdir", true] | archlibdir = CONFIG["rubyarchdir", true] | ||||
sitelibdir = CONFIG["sitelibdir"] | sitelibdir = CONFIG["sitelibdir"] | ||||
@@ -366,7 +367,7 @@ | @@ -376,7 +377,7 @@ end | ||||
install?(:local, :arch, :data) do | install?(:local, :arch, :data) do | ||||
pc = CONFIG["ruby_pc"] | pc = CONFIG["ruby_pc"] | ||||
if pc and File.file?(pc) and File.size?(pc) | if pc and File.file?(pc) and File.size?(pc) | ||||
- prepare "pkgconfig data", pkgconfigdir = File.join(libdir, "pkgconfig") | - prepare "pkgconfig data", pkgconfigdir = File.join(libdir, "pkgconfig") | ||||
+ prepare "pkgconfig data", pkgconfigdir = File.join(libdatadir, "pkgconfig") | + prepare "pkgconfig data", pkgconfigdir = File.join(libdatadir, "pkgconfig") | ||||
install pc, pkgconfigdir, :mode => $data_mode | install pc, pkgconfigdir, :mode => $data_mode | ||||
end | end | ||||
end | end | ||||
@@ -653,86 +654,6 @@ | @@ -695,88 +696,6 @@ end | ||||
end | |||||
# :startdoc: | # :startdoc: | ||||
-install?(:ext, :comm, :gem) do | -install?(:ext, :comm, :gem) do | ||||
- $:.unshift(File.join(srcdir, "lib")) | |||||
- require("rubygems.rb") | |||||
- 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) | ||||
- prepare "default gems", gem_dir, directories | - prepare "default gems", gem_dir, directories | ||||
- | - | ||||
- spec_dir = File.join(gem_dir, directories.grep(/^spec/)[0]) | - spec_dir = File.join(gem_dir, directories.grep(/^spec/)[0]) | ||||
- default_spec_dir = "#{spec_dir}/default" | - default_spec_dir = "#{spec_dir}/default" | ||||
- makedirs(default_spec_dir) | - makedirs(default_spec_dir) | ||||
- | - | ||||
- gems = {} | - gems = {} | ||||
- File.foreach(File.join(srcdir, "defs/default_gems")) do |line| | |||||
- line.chomp! | |||||
- line.sub!(/\s*#.*/, '') | |||||
- next if line.empty? | |||||
- words = [] | |||||
- line.scan(/\G\s*([^\[\]\s]+|\[([^\[\]]*)\])/) do | |||||
- words << ($2 ? $2.split : $1) | |||||
- end | |||||
- name, base_dir, src, execs = *words | |||||
- next unless name and base_dir and src | |||||
- | - | ||||
- src = File.join(srcdir, src) | |||||
- base_dir = File.join(srcdir, base_dir) | |||||
- specgen = RbInstall::Specs::Generator.new(name, base_dir, src, execs || []) | |||||
- gems[name] ||= specgen | |||||
- end | |||||
- | |||||
- Dir.glob(srcdir+"/{lib,ext}/**/*.gemspec").each do |src| | - Dir.glob(srcdir+"/{lib,ext}/**/*.gemspec").each do |src| | ||||
- specgen = RbInstall::Specs::Reader.new(src) | - specgen = RbInstall::Specs::Reader.new(src) | ||||
- gems[specgen.gemspec.name] ||= specgen | - gems[specgen.gemspec.name] ||= specgen | ||||
- end | - end | ||||
- | - | ||||
- gems.sort.each do |name, specgen| | - gems.sort.each do |name, specgen| | ||||
- gemspec = specgen.gemspec | - gemspec = specgen.gemspec | ||||
- base_dir = specgen.src.sub(/\A#{Regexp.escape(srcdir)}\//, "") | |||||
- 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 | - specgen.spec_source | ||||
- end | - end | ||||
- | - | ||||
- unless gemspec.executables.empty? then | - unless gemspec.executables.empty? then | ||||
- bin_dir = File.join(gem_dir, 'gems', full_name, 'bin') | - bin_dir = File.join(gem_dir, 'gems', full_name, 'bin') | ||||
- makedirs(bin_dir) | - makedirs(bin_dir) | ||||
- | - | ||||
- execs = gemspec.executables.map {|exec| File.join(srcdir, 'bin', exec)} | - execs = gemspec.executables.map {|exec| File.join(srcdir, 'bin', exec)} | ||||
- install(execs, bin_dir, :mode => $prog_mode) | - install(execs, bin_dir, :mode => $script_mode) | ||||
- end | - end | ||||
- end | - end | ||||
-end | -end | ||||
- | - | ||||
-install?(:ext, :comm, :gem) do | -install?(:ext, :comm, :gem) do | ||||
- begin | |||||
- require "zlib" | |||||
- rescue LoadError | |||||
- end | |||||
- if defined?(Zlib) | |||||
- require 'pathname' | |||||
- 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) | ||||
- prepare "bundle gems", gem_dir, directories | - prepare "bundle gems", gem_dir, directories | ||||
- Dir.glob(srcdir+'/gems/*.gem').each do |gem| | - install_dir = with_destdir(gem_dir) | ||||
- Gem.install gem, Gem::Requirement.default, :install_dir => with_destdir(Gem.dir), :domain => :local, :ignore_dependencies => true | - installed_gems = {} | ||||
- gemname = Pathname(gem).basename | - options = { | ||||
- :install_dir => install_dir, | |||||
- :bin_dir => with_destdir(bindir), | |||||
- :domain => :local, | |||||
- :ignore_dependencies => true, | |||||
- :dir_mode => $dir_mode, | |||||
- :data_mode => $data_mode, | |||||
- :prog_mode => $prog_mode, | |||||
- :wrappers => true, | |||||
- :format_executable => true, | |||||
- } | |||||
- Gem::Specification.each_spec([srcdir+'/gems/*']) do |spec| | |||||
- ins = RbInstall::UnpackedInstaller.new(spec, options) | |||||
- puts "#{" "*30}#{spec.name} #{spec.version}" | |||||
- ins.install | |||||
- File.chmod($data_mode, File.join(install_dir, "specifications", "#{spec.full_name}.gemspec")) | |||||
- installed_gems[spec.full_name] = true | |||||
- end | |||||
- installed_gems, gems = Dir.glob(srcdir+'/gems/*.gem').partition {|gem| installed_gems.key?(File.basename(gem, '.gem'))} | |||||
- unless installed_gems.empty? | |||||
- install installed_gems, gem_dir+"/cache" | |||||
- end | |||||
- next if gems.empty? | |||||
- if defined?(Zlib) | |||||
- Gem.instance_variable_set(:@ruby, with_destdir(File.join(bindir, ruby_install_name))) | |||||
- gems.each do |gem| | |||||
- Gem.install(gem, Gem::Requirement.default, options) | |||||
- gemname = File.basename(gem) | |||||
- puts "#{" "*30}#{gemname}" | - puts "#{" "*30}#{gemname}" | ||||
- end | - end | ||||
- # fix directory permissions | - # fix directory permissions | ||||
- # TODO: Gem.install should accept :dir_mode option or something | - # TODO: Gem.install should accept :dir_mode option or something | ||||
- File.chmod($dir_mode, *Dir.glob(with_destdir(Gem.dir)+"/**/")) | - File.chmod($dir_mode, *Dir.glob(install_dir+"/**/")) | ||||
- # fix .gemspec permissions | - # fix .gemspec permissions | ||||
- File.chmod($data_mode, *Dir.glob(with_destdir(Gem.dir)+"/specifications/*.gemspec")) | - File.chmod($data_mode, *Dir.glob(install_dir+"/specifications/*.gemspec")) | ||||
- else | - else | ||||
- puts "skip installing bundle gems because of lacking zlib" | - puts "skip installing bundle gems because of lacking zlib" | ||||
- end | - end | ||||
-end | -end | ||||
- | - | ||||
parse_args() | parse_args() | ||||
include FileUtils | include FileUtils |