mirror of
https://github.com/ruby/ruby.git
synced 2025-09-15 16:44:01 +02:00
Import fast-loading gem_prelude.rb from RubyGems.
Import RubyGems r1516. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14011 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
f90fdbfc73
commit
369697bceb
9 changed files with 254 additions and 34 deletions
|
@ -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
|
||||
|
|
|
@ -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 ]
|
||||
|
|
15
lib/rubygems/require_paths_builder.rb
Normal file
15
lib/rubygems/require_paths_builder.rb
Normal file
|
@ -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
|
Loading…
Add table
Add a link
Reference in a new issue