diff options
Diffstat (limited to 'lib/rubygems')
-rw-r--r-- | lib/rubygems/installer.rb | 9 | ||||
-rw-r--r-- | lib/rubygems/platform.rb | 9 | ||||
-rw-r--r-- | lib/rubygems/require_paths_builder.rb | 15 |
3 files changed, 29 insertions, 4 deletions
diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb index 03f7c92828..46d0144a88 100644 --- a/lib/rubygems/installer.rb +++ b/lib/rubygems/installer.rb @@ -10,6 +10,7 @@ require 'rbconfig' require 'rubygems/format' require 'rubygems/ext' +require 'rubygems/require_paths_builder' ## # The installer class processes RubyGem .gem files and installs the @@ -27,6 +28,8 @@ class Gem::Installer class ExtensionBuildError < Gem::InstallError; end include Gem::UserInteraction + + include Gem::RequirePathsBuilder ## # Constructs an Installer instance that will install the gem located at @@ -111,6 +114,8 @@ class Gem::Installer generate_bin build_extensions write_spec + + write_require_paths_file_if_needed # HACK remove? Isn't this done in multiple places? cached_gem = File.join @gem_home, "cache", @gem.split(/\//).pop @@ -235,8 +240,8 @@ class Gem::Installer # the symlink if the gem being installed has a newer version. # def generate_bin_symlink(filename, bindir) - if Config::CONFIG["arch"] =~ /dos|win32/i then - alert_warning "Unable to use symlinks on win32, installing wrapper" + if Gem.win_platform? then + alert_warning "Unable to use symlinks on Windows, installing wrapper" generate_bin_script filename, bindir return end diff --git a/lib/rubygems/platform.rb b/lib/rubygems/platform.rb index 24081d4fec..496c4b1fb8 100644 --- a/lib/rubygems/platform.rb +++ b/lib/rubygems/platform.rb @@ -13,7 +13,7 @@ class Gem::Platform attr_accessor :version def self.local - arch = Config::CONFIG['arch'] + arch = Gem::ConfigMap[:arch] arch = "#{arch}_60" if arch =~ /mswin32$/ @local ||= new(arch) end @@ -27,6 +27,8 @@ class Gem::Platform def self.new(arch) # :nodoc: case arch + when Gem::Platform::CURRENT then + Gem::Platform.local when Gem::Platform::RUBY, nil, '' then Gem::Platform::RUBY else @@ -71,7 +73,10 @@ class Gem::Platform when /^java([\d.]*)/ then [ 'java', $1 ] when /linux/ then [ 'linux', $1 ] when /mingw32/ then [ 'mingw32', nil ] - when /(mswin\d+)(\_(\d+))?/ then [ $1, $3 ] + when /(mswin\d+)(\_(\d+))?/ then + os, version = $1, $3 + @cpu = 'x86' if @cpu.nil? and os =~ /32$/ + [os, version] when /netbsdelf/ then [ 'netbsdelf', nil ] when /openbsd(\d+\.\d+)/ then [ 'openbsd', $1 ] when /solaris(\d+\.\d+)/ then [ 'solaris', $1 ] diff --git a/lib/rubygems/require_paths_builder.rb b/lib/rubygems/require_paths_builder.rb new file mode 100644 index 0000000000..fe4f593bf4 --- /dev/null +++ b/lib/rubygems/require_paths_builder.rb @@ -0,0 +1,15 @@ +module Gem + module RequirePathsBuilder + def write_require_paths_file_if_needed(spec = @spec, gem_home = @gem_home) + return if spec.require_paths == ["lib"] && (spec.bindir.nil? || spec.bindir == "bin") + file_name = File.join(gem_home, 'gems', "#{@spec.full_name}", ".require_paths") + file_name.untaint + File.open(file_name, "w") do |file| + spec.require_paths.each do |path| + file.puts path + end + file.puts spec.bindir if spec.bindir + end + end + end +end
\ No newline at end of file |