mirror of
https://github.com/ruby/ruby.git
synced 2025-09-20 02:53:57 +02:00
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:
parent
b51081308b
commit
de280961df
37 changed files with 1190 additions and 153 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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}"
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue