From 31c94ffeb5f09d09ac2c86fc9e6614e38251a43d Mon Sep 17 00:00:00 2001 From: drbrain Date: Tue, 9 Jun 2009 21:38:59 +0000 Subject: Update to RubyGems 1.3.4 r2223 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23659 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- gem_prelude.rb | 126 ++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 76 insertions(+), 50 deletions(-) (limited to 'gem_prelude.rb') diff --git a/gem_prelude.rb b/gem_prelude.rb index 65f3481fea..aa874c88ea 100644 --- a/gem_prelude.rb +++ b/gem_prelude.rb @@ -2,12 +2,15 @@ # vim: filetype=ruby # THIS FILE WAS AUTOGENERATED, DO NOT EDIT -# NOTICE: Ruby is during initialization here. -# * Encoding.default_external does not reflects -E. -# * Should not expect Encoding.default_internal. -# * Locale encoding is available. +# NOTICE: Ruby is during initialization here. +# * Encoding.default_external does not reflects -E. +# * Should not expect Encoding.default_internal. +# * Locale encoding is available. + if defined?(Gem) then + # :stopdoc: + module Kernel def gem(gem_name, *version_requirements) @@ -18,20 +21,17 @@ if defined?(Gem) then module Gem - class LoadError < ::LoadError - end - ConfigMap = { - :sitedir => RbConfig::CONFIG["sitedir"], - :ruby_version => RbConfig::CONFIG["ruby_version"], - :rubylibprefix => RbConfig::CONFIG["rubylibprefix"], - :libdir => RbConfig::CONFIG["libdir"], - :sitelibdir => RbConfig::CONFIG["sitelibdir"], - :arch => RbConfig::CONFIG["arch"], - :bindir => RbConfig::CONFIG["bindir"], - :EXEEXT => RbConfig::CONFIG["EXEEXT"], - :RUBY_SO_NAME => RbConfig::CONFIG["RUBY_SO_NAME"], - :ruby_install_name => RbConfig::CONFIG["ruby_install_name"] + :EXEEXT => RbConfig::CONFIG["EXEEXT"], + :RUBY_SO_NAME => RbConfig::CONFIG["RUBY_SO_NAME"], + :arch => RbConfig::CONFIG["arch"], + :bindir => RbConfig::CONFIG["bindir"], + :libdir => RbConfig::CONFIG["libdir"], + :ruby_install_name => RbConfig::CONFIG["ruby_install_name"], + :ruby_version => RbConfig::CONFIG["ruby_version"], + :rubylibprefix => RbConfig::CONFIG["rubylibprefix"], + :sitedir => RbConfig::CONFIG["sitedir"], + :sitelibdir => RbConfig::CONFIG["sitelibdir"], } def self.dir @@ -67,24 +67,30 @@ if defined?(Gem) then end def self.set_home(home) + home = home.gsub File::ALT_SEPARATOR, File::SEPARATOR if File::ALT_SEPARATOR @gem_home = home - ensure_gem_subdirectories(@gem_home) end def self.set_paths(gpaths) if gpaths @gem_path = gpaths.split(File::PATH_SEPARATOR) + + if File::ALT_SEPARATOR then + @gem_path.map! do |path| + path.gsub File::ALT_SEPARATOR, File::SEPARATOR + end + end + @gem_path << Gem.dir else + # TODO: should this be Gem.default_path instead? @gem_path = [Gem.dir] end - @gem_path.uniq! - @gem_path.each do |gp| ensure_gem_subdirectories(gp) end - end - def self.ensure_gem_subdirectories(path) + @gem_path.uniq! end + # begin rubygems/defaults @post_install_hooks ||= [] @post_uninstall_hooks ||= [] @@ -106,8 +112,13 @@ if defined?(Gem) then if defined? RUBY_FRAMEWORK_VERSION then File.join File.dirname(ConfigMap[:sitedir]), 'Gems', ConfigMap[:ruby_version] + # 1.9.2dev reverted to 1.8 style path + elsif RUBY_VERSION > '1.9' and RUBY_VERSION < '1.9.2' then + File.join(ConfigMap[:libdir], ConfigMap[:ruby_install_name], 'gems', + ConfigMap[:ruby_version]) else - ConfigMap[:sitelibdir].sub(%r'/site_ruby/(?=[^/]+)', '/gems/') + File.join(ConfigMap[:libdir], ruby_engine, 'gems', + ConfigMap[:ruby_version]) end end @@ -123,15 +134,25 @@ if defined?(Gem) then # Default gem load path def self.default_path - [user_dir, default_dir] + if File.exist?(Gem.user_home) + [user_dir, default_dir] + else + [default_dir] + end end ## # Deduce Ruby's --program-prefix and --program-suffix from its install name def self.default_exec_format - baseruby = ConfigMap[:BASERUBY] || 'ruby' - ConfigMap[:RUBY_INSTALL_NAME].sub(baseruby, '%s') rescue '%s' + exec_format = ConfigMap[:ruby_install_name].sub('ruby', '%s') rescue '%s' + + unless exec_format =~ /%s/ then + raise Gem::Exception, + "[BUG] invalid exec_format #{exec_format.inspect}, no %s" + end + + exec_format end ## @@ -171,7 +192,9 @@ if defined?(Gem) then end + # end rubygems/defaults + ## # Methods before this line will be removed when QuickLoader is replaced # with the real RubyGems @@ -179,7 +202,7 @@ if defined?(Gem) then begin verbose, debug = $VERBOSE, $DEBUG - $DEBUG = $VERBOSE = nil + $VERBOSE = $DEBUG = nil begin require 'rubygems/defaults/operating_system' @@ -226,14 +249,14 @@ if defined?(Gem) then def push_gem_version_on_load_path(gem_name, *version_requirements) if version_requirements.empty? - unless GemPaths.has_key?(gem_name) - raise Gem::LoadError.new("Could not find RubyGem #{gem_name} (>= 0)\n") + unless GemPaths.has_key?(gem_name) then + raise Gem::LoadError, "Could not find RubyGem #{gem_name} (>= 0)\n" end # highest version gems already active return false else - if version_requirements.length > 1 + if version_requirements.length > 1 then QuickLoader.load_full_rubygems_library return gem(gem_name, *version_requirements) end @@ -241,26 +264,24 @@ if defined?(Gem) then requirement, version = version_requirements[0].split requirement.strip! - if loaded_version = GemVersions[gem_name] + if loaded_version = GemVersions[gem_name] then case requirement - when ">", ">=" - if (loaded_version <=> Gem.calculate_integers_for_gem_version(version)) >= 0 - return false - end - when "~>" - required_version = Gem.calculate_integers_for_gem_version(version) - if (loaded_version[0] == required_version[0]) - return false - end + when ">", ">=" then + return false if + (loaded_version <=> Gem.integers_for(version)) >= 0 + when "~>" then + required_version = Gem.integers_for version + + return false if loaded_version.first == required_version.first end end QuickLoader.load_full_rubygems_library - gem(gem_name, *version_requirements) + gem gem_name, *version_requirements end end - def calculate_integers_for_gem_version(gem_version) + def integers_for(gem_version) numbers = gem_version.split(".").collect {|n| n.to_i} numbers.pop while numbers.last == 0 numbers << 0 if numbers.empty? @@ -270,16 +291,20 @@ if defined?(Gem) then def push_all_highest_version_gems_on_load_path Gem.path.each do |path| gems_directory = File.join(path, "gems") - if File.exist?(gems_directory) + + if File.exist?(gems_directory) then Dir.entries(gems_directory).each do |gem_directory_name| next if gem_directory_name == "." || gem_directory_name == ".." + dash = gem_directory_name.rindex("-") next if dash.nil? + gem_name = gem_directory_name[0...dash] current_version = GemVersions[gem_name] - new_version = calculate_integers_for_gem_version(gem_directory_name[dash+1..-1]) - if current_version - if (current_version <=> new_version) == -1 + new_version = integers_for(gem_directory_name[dash+1..-1]) + + if current_version then + if (current_version <=> new_version) == -1 then GemVersions[gem_name] = new_version GemPaths[gem_name] = File.join(gems_directory, gem_directory_name) end @@ -309,7 +334,7 @@ if defined?(Gem) then # "tag" the first require_path inserted into the $LOAD_PATH to enable # indexing correctly with rubygems proper when it inserts an explicitly # gem version - unless require_paths.empty? + unless require_paths.empty? then require_paths.first.instance_variable_set(:@gem_prelude_index, true) end # gem directories must come after -I and ENV['RUBYLIB'] @@ -318,8 +343,9 @@ if defined?(Gem) then def const_missing(constant) QuickLoader.load_full_rubygems_library - if Gem.const_defined?(constant) - Gem.const_get(constant) + + if Gem.const_defined?(constant) then + Gem.const_get constant else super end @@ -338,7 +364,7 @@ if defined?(Gem) then begin Gem.push_all_highest_version_gems_on_load_path - $" << File.join(Gem::ConfigMap[:rubylibprefix], + $" << File.join(Gem::ConfigMap[:rubylibprefix], Gem::ConfigMap[:ruby_version], "rubygems.rb") rescue Exception => e puts "Error loading gem paths on load path in gem_prelude" -- cgit v1.2.3