summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtool/rbinstall.rb78
1 files changed, 8 insertions, 70 deletions
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
index fab042b8e6..9c0a4fa1ff 100755
--- a/tool/rbinstall.rb
+++ b/tool/rbinstall.rb
@@ -608,69 +608,6 @@ install?(:local, :comm, :man) do
end
module RbInstall
- module Specs
- class FileCollector
- def initialize(gemspec)
- @gemspec = gemspec
- @base_dir = File.dirname(gemspec)
- end
-
- def collect
- (ruby_libraries + built_libraries).sort
- end
-
- private
- def type
- /\/(ext|lib)?\/.*?\z/ =~ @base_dir
- $1
- end
-
- def ruby_libraries
- case type
- when "ext"
- prefix = "#{$extout}/common/"
- base = "#{prefix}#{relative_base}"
- when "lib"
- base = @base_dir
- prefix = base.sub(/lib\/.*?\z/, "") + "lib/"
- end
-
- if base
- Dir.glob("#{base}{.rb,/**/*.rb}").collect do |ruby_source|
- remove_prefix(prefix, ruby_source)
- end
- else
- [remove_prefix(File.dirname(@gemspec) + '/', @gemspec.gsub(/gemspec/, 'rb'))]
- end
- end
-
- def built_libraries
- case type
- when "ext"
- prefix = "#{$extout}/#{CONFIG['arch']}/"
- base = "#{prefix}#{relative_base}"
- dlext = CONFIG['DLEXT']
- Dir.glob("#{base}{.#{dlext},/**/*.#{dlext}}").collect do |built_library|
- remove_prefix(prefix, built_library)
- end
- when "lib"
- []
- else
- []
- end
- end
-
- def relative_base
- /\/#{Regexp.escape(type)}\/(.*?)\z/ =~ @base_dir
- $1
- end
-
- def remove_prefix(prefix, string)
- string.sub(/\A#{Regexp.escape(prefix)}/, "")
- end
- end
- end
-
class UnpackedInstaller < Gem::Installer
module DirPackage
def extract_files(destination_dir, pattern = "*")
@@ -760,7 +697,12 @@ install?(:ext, :comm, :gem, :'default-gems', :'default-gems-comm') do
install_default_gem('lib', srcdir)
end
install?(:ext, :arch, :gem, :'default-gems', :'default-gems-arch') do
- install_default_gem('ext', srcdir)
+ install_default_gem('ext', srcdir) do |path|
+ # assume that gemspec and extconf.rb are placed in the same directory
+ IO.foreach(File.dirname(path[(srcdir.size+1)..-1]) + "/Makefile") do |l|
+ break true if /^TARGET\s*=/ =~ l
+ end
+ end
end
def load_gemspec(file)
@@ -787,12 +729,8 @@ def install_default_gem(dir, srcdir)
makedirs(default_spec_dir)
gems = Dir.glob("#{srcdir}/#{dir}/**/*.gemspec").map {|src|
- spec = load_gemspec(src)
- file_collector = RbInstall::Specs::FileCollector.new(src)
- files = file_collector.collect
- next if files.empty?
- spec.files = files
- spec
+ next if block_given? and !yield(src)
+ load_gemspec(src)
}
gems.compact.sort_by(&:name).each do |gemspec|
full_name = "#{gemspec.name}-#{gemspec.version}"