Backport r35374 and r35375

* lib/rubygems:  Update to RubyGems 1.8.22 plus r33517 and r35337 which
  were ported to the rubygems git repository.

  See https://github.com/rubygems/rubygems/blob/1.8/History.txt for
  changes since 1.8.11.

* test/rubygems:  ditto.

* lib/rubygems/version.rb:  Fixed init_with warning by calling into
  yaml_initialize (for syck) from psych's init_with



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@35402 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
drbrain 2012-04-19 22:43:16 +00:00
parent b51081308b
commit de280961df
37 changed files with 1190 additions and 153 deletions

View file

@ -4,7 +4,11 @@ require 'rubygems/builder'
class Gem::Commands::BuildCommand < Gem::Command
def initialize
super('build', 'Build a gem from a gemspec')
super 'build', 'Build a gem from a gemspec'
add_option '--force', 'skip validation of the spec' do |value, options|
options[:force] = true
end
end
def arguments # :nodoc:
@ -22,7 +26,7 @@ class Gem::Commands::BuildCommand < Gem::Command
spec = load_gemspec gemspec
if spec then
Gem::Builder.new(spec).build
Gem::Builder.new(spec).build options[:force]
else
alert_error "Error loading gemspec. Aborting."
terminate_interaction 1

View file

@ -13,6 +13,7 @@ class Gem::Commands::FetchCommand < Gem::Command
add_bulk_threshold_option
add_proxy_option
add_source_option
add_clear_sources_option
add_version_option
add_platform_option
@ -58,8 +59,16 @@ class Gem::Commands::FetchCommand < Gem::Command
next
end
path = Gem::RemoteFetcher.fetcher.download spec, source_uri
FileUtils.mv path, File.basename(spec.cache_file)
file = "#{spec.full_name}.gem"
remote_path = URI.parse(source_uri) + "gems/#{file}"
fetch = Gem::RemoteFetcher.fetcher
gem = fetch.fetch_path remote_path.to_s
File.open file, "wb" do |f|
f.write gem
end
say "Downloaded #{spec.full_name}"
end

View file

@ -94,10 +94,14 @@ extensions.
end
# TODO use installer options
install_defaults = Gem::ConfigFile::PLATFORM_DEFAULTS['install']
installer_env_shebang = install_defaults.to_s['--env-shebang']
installer = Gem::Installer.new(gem,
:wrappers => true,
:force => true,
:install_dir => spec.base_dir)
:install_dir => spec.base_dir,
:env_shebang => installer_env_shebang)
installer.install
say "Restored #{spec.full_name}"

View file

@ -252,9 +252,19 @@ TEXT
end
def make_destination_dirs(install_destdir)
lib_dir = nil
bin_dir = nil
lib_dir, bin_dir = Gem.default_rubygems_dirs
unless lib_dir
lib_dir, bin_dir = generate_default_dirs(install_destdir)
end
mkdir_p lib_dir
mkdir_p bin_dir
return lib_dir, bin_dir
end
def generate_default_dirs(install_destdir)
prefix = options[:prefix]
site_or_vendor = options[:site_or_vendor]
@ -283,10 +293,7 @@ TEXT
bin_dir = File.join install_destdir, bin_dir.gsub(/^[a-zA-Z]:/, '')
end
mkdir_p lib_dir
mkdir_p bin_dir
return lib_dir, bin_dir
[lib_dir, bin_dir]
end
def remove_old_bin_files(bin_dir)

View file

@ -62,7 +62,25 @@ FIELD name of gemspec field to show
"Please specify a gem name or file on the command line"
end
dep = Gem::Dependency.new gem, options[:version]
case options[:version]
when String
req = Gem::Requirement.parse options[:version]
when Gem::Requirement
req = options[:version]
else
raise Gem::CommandLineError, "Unsupported version type: #{options[:version]}"
end
if !req.none? and options[:all]
alert_error "Specify --all or -v, not both"
terminate_interaction 1
end
if options[:all]
dep = Gem::Dependency.new gem
else
dep = Gem::Dependency.new gem, options[:version]
end
field = get_one_optional_argument
@ -80,7 +98,11 @@ FIELD name of gemspec field to show
end
if remote? then
found = Gem::SpecFetcher.fetcher.fetch dep
found = Gem::SpecFetcher.fetcher.fetch dep, true
if dep.prerelease? or options[:prerelease]
found += Gem::SpecFetcher.fetcher.fetch dep, false, true, true
end
specs.push(*found.map { |spec,| spec })
end