summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-02-04 00:48:31 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-02-04 00:48:31 +0000
commitea2a00d785576a7dc45c0f6e965de605929e889d ()
tree567e52888b17aacb404c59eb64519d927fb8894f /lib
parentbd950a75b512a7d6243d1f0bb5e944a06a2e1f94 (diff)
* lib/rubygems: Update to RubyGems 2.2.2 prerelease to check fixes to
CI. * test/rubygems: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44799 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--lib/rubygems/available_set.rb3
-rw-r--r--lib/rubygems/config_file.rb5
-rw-r--r--lib/rubygems/dependency_installer.rb1
-rw-r--r--lib/rubygems/ext/ext_conf_builder.rb6
-rw-r--r--lib/rubygems/installer.rb2
-rw-r--r--lib/rubygems/package/tar_header.rb2
-rw-r--r--lib/rubygems/remote_fetcher.rb40
-rw-r--r--lib/rubygems/request.rb8
-rw-r--r--lib/rubygems/request_set.rb8
-rw-r--r--lib/rubygems/resolver.rb2
-rw-r--r--lib/rubygems/resolver/api_set.rb7
-rw-r--r--lib/rubygems/resolver/best_set.rb21
-rw-r--r--lib/rubygems/resolver/composed_set.rb11
-rw-r--r--lib/rubygems/resolver/git_set.rb3
-rw-r--r--lib/rubygems/resolver/index_set.rb4
-rw-r--r--lib/rubygems/resolver/installer_set.rb16
-rw-r--r--lib/rubygems/resolver/lock_set.rb2
-rw-r--r--lib/rubygems/resolver/set.rb17
-rw-r--r--lib/rubygems/resolver/vendor_set.rb2
-rw-r--r--lib/rubygems/source/git.rb14
-rw-r--r--lib/rubygems/test_case.rb24
-rw-r--r--lib/rubygems/version.rb5
22 files changed, 175 insertions, 28 deletions
@@ -4,9 +4,12 @@ class Gem::AvailableSet
Tuple = Struct.new(:spec, :source)
def initialize
@set = []
@sorted = nil
end
attr_reader :set
@@ -137,9 +137,10 @@ class Gem::ConfigFile
attr_reader :ssl_verify_mode
##
- # Path name of directory or file of openssl CA certificate, used for remote https connection
- attr_reader :ssl_ca_cert
##
# Path name of directory or file of openssl client certificate, used for remote https connection with client authentication
@@ -419,6 +419,7 @@ class Gem::DependencyInstaller
request_set = as.to_request_set install_development_deps
request_set.soft_missing = @force
installer_set = Gem::Resolver::InstallerSet.new @domain
installer_set.always_install.concat request_set.always_install
@@ -34,7 +34,11 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
ENV["RUBYOPT"] = ["-r#{siteconf_path}", rubyopt].compact.join(' ')
cmd = [Gem.ruby, File.basename(extension), *args].join ' '
- run cmd, results
ENV["DESTDIR"] = nil
ENV["RUBYOPT"] = rubyopt
@@ -641,7 +641,7 @@ version = "#{Gem::Requirement.default}"
if ARGV.first
str = ARGV.first
str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
- if str =~ /\\A_(.*)_\\z/
version = $1
ARGV.shift
end
@@ -134,7 +134,7 @@ class Gem::Package::TarHeader
vals[:gid] ||= 0
vals[:mtime] ||= 0
vals[:checksum] ||= ""
- vals[:typeflag] ||= "0"
vals[:magic] ||= "ustar"
vals[:version] ||= "00"
vals[:uname] ||= "wheel"
@@ -131,11 +131,19 @@ class Gem::RemoteFetcher
FileUtils.mkdir_p cache_dir rescue nil unless File.exist? cache_dir
- # Always escape URI's to deal with potential spaces and such
- unless URI::Generic === source_uri
- source_uri = URI.parse(URI.const_defined?(:DEFAULT_PARSER) ?
- URI::DEFAULT_PARSER.escape(source_uri.to_s) :
- URI.escape(source_uri.to_s))
end
scheme = source_uri.scheme
@@ -285,20 +293,20 @@ class Gem::RemoteFetcher
def cache_update_path uri, path = nil, update = true
mtime = path && File.stat(path).mtime rescue nil
- if mtime && Net::HTTPNotModified === fetch_path(uri, mtime, true)
- Gem.read_binary(path)
- else
- data = fetch_path(uri)
- if update and path then
- open(path, 'wb') do |io|
- io.flock(File::LOCK_EX)
- io.write data
- end
- end
- data
end
end
##
@@ -48,15 +48,14 @@ class Gem::Request
connection.key = OpenSSL::PKey::RSA.new pem
end
if Gem.configuration.ssl_ca_cert
if File.directory? Gem.configuration.ssl_ca_cert
store.add_path Gem.configuration.ssl_ca_cert
else
store.add_file Gem.configuration.ssl_ca_cert
end
- else
- store.set_default_paths
- add_rubygems_trusted_certs(store)
end
connection.cert_store = store
rescue LoadError => e
@@ -106,7 +105,8 @@ class Gem::Request
request = @request_class.new @uri.request_uri
unless @uri.nil? || @uri.user.nil? || @uri.user.empty? then
- request.basic_auth @uri.user, @uri.password
end
request.add_field 'User-Agent', @user_agent
@@ -39,6 +39,11 @@ class Gem::RequestSet
attr_accessor :ignore_dependencies
##
# Sets used for resolution
attr_reader :sets # :nodoc:
@@ -71,6 +76,7 @@ class Gem::RequestSet
@git_set = nil
@ignore_dependencies = false
@install_dir = Gem.dir
@requests = []
@sets = []
@soft_missing = false
@@ -150,6 +156,7 @@ class Gem::RequestSet
gemdeps = options[:gemdeps]
@install_dir = options[:install_dir] || Gem.dir
load_gemdeps gemdeps, options[:without_groups]
@@ -235,6 +242,7 @@ class Gem::RequestSet
@sets << @vendor_set
set = Gem::Resolver.compose_sets(*@sets)
resolver = Gem::Resolver.new @dependencies, set
resolver.development = @development
@@ -59,6 +59,8 @@ class Gem::Resolver
sets = sets.map do |set|
case set
when Gem::Resolver::ComposedSet then
set.sets
else
@@ -25,10 +25,12 @@ class Gem::Resolver::APISet < Gem::Resolver::Set
# http://guides.rubygems.org/rubygems-org-api
def initialize dep_uri = 'https://rubygems.org/api/v1/dependencies'
dep_uri = URI dep_uri unless URI === dep_uri # for ruby 1.8
@dep_uri = dep_uri
- @uri = dep_uri + '../../..'
@data = Hash.new { |h,k| h[k] = [] }
@source = Gem::Source.new @uri
@@ -41,6 +43,8 @@ class Gem::Resolver::APISet < Gem::Resolver::Set
def find_all req
res = []
versions(req.name).each do |ver|
if req.dependency.match? req.name, ver[:number]
res << Gem::Resolver::APISpecification.new(self, ver)
@@ -55,6 +59,7 @@ class Gem::Resolver::APISet < Gem::Resolver::Set
# data for DependencyRequests +reqs+.
def prefetch reqs
names = reqs.map { |r| r.dependency.name }
needed = names - @data.keys
@@ -12,11 +12,30 @@ class Gem::Resolver::BestSet < Gem::Resolver::ComposedSet
def initialize sources = Gem.sources
super()
- sources.each_source do |source|
@sets << source.dependency_resolver_set
end
end
def pretty_print q # :nodoc:
q.group 2, '[BestSet', ']' do
q.breakable
@@ -16,10 +16,21 @@ class Gem::Resolver::ComposedSet < Gem::Resolver::Set
# Gem::Resolver::compose_sets instead.
def initialize *sets
@sets = sets
end
##
# Finds all specs matching +req+ in all sets.
def find_all req
@@ -33,6 +33,8 @@ class Gem::Resolver::GitSet < Gem::Resolver::Set
attr_reader :specs # :nodoc:
def initialize # :nodoc:
@git = ENV['git'] || 'git'
@need_submodules = {}
@repositories = {}
@@ -91,6 +93,7 @@ class Gem::Resolver::GitSet < Gem::Resolver::Set
@repositories.each do |name, (repository, reference)|
source = Gem::Source::Git.new name, repository, reference
source.root_dir = @root_dir
source.specs.each do |spec|
git_spec = Gem::Resolver::GitSpecification.new self, spec, source
@@ -5,6 +5,8 @@
class Gem::Resolver::IndexSet < Gem::Resolver::Set
def initialize source = nil # :nodoc:
@f =
if source then
sources = Gem::SourceList.from [source]
@@ -34,6 +36,8 @@ class Gem::Resolver::IndexSet < Gem::Resolver::Set
def find_all req
res = []
name = req.dependency.name
@all[name].each do |uri, n|
@@ -24,14 +24,17 @@ class Gem::Resolver::InstallerSet < Gem::Resolver::Set
# Creates a new InstallerSet that will look for gems in +domain+.
def initialize domain
@domain = domain
@f = Gem::SpecFetcher.fetcher
@always_install = []
@ignore_dependencies = false
@ignore_installed = false
- @remote_set = Gem::Resolver::BestSet.new if consider_remote?
@specs = {}
end
@@ -120,5 +123,16 @@ class Gem::Resolver::InstallerSet < Gem::Resolver::Set
end
end
end
@@ -9,6 +9,8 @@ class Gem::Resolver::LockSet < Gem::Resolver::Set
# Creates a new LockSet from the given +source+
def initialize source
@source = Gem::Source::Lock.new source
@specs = []
end
@@ -5,6 +5,15 @@
class Gem::Resolver::Set
##
# The find_all method must be implemented. It returns all Resolver
# Specification objects matching the given DependencyRequest +req+.
@@ -23,5 +32,13 @@ class Gem::Resolver::Set
def prefetch reqs
end
end
@@ -21,6 +21,8 @@ class Gem::Resolver::VendorSet < Gem::Resolver::Set
attr_reader :specs # :nodoc:
def initialize # :nodoc:
@directories = {}
@specs = {}
end
@@ -24,6 +24,11 @@ class Gem::Source::Git < Gem::Source
attr_reader :reference
##
# The git repository this gem is sourced from.
attr_reader :repository
@@ -53,6 +58,7 @@ class Gem::Source::Git < Gem::Source
@reference = reference
@need_submodules = submodules
@root_dir = Gem.dir
@git = ENV['git'] || 'git'
end
@@ -85,6 +91,8 @@ class Gem::Source::Git < Gem::Source
def checkout # :nodoc:
cache
unless File.exist? install_dir then
system @git, 'clone', '--quiet', '--no-checkout',
repo_cache_dir, install_dir
@@ -107,6 +115,8 @@ class Gem::Source::Git < Gem::Source
# Creates a local cache repository for the git gem.
def cache # :nodoc:
if File.exist? repo_cache_dir then
Dir.chdir repo_cache_dir do
system @git, 'fetch', '--quiet', '--force', '--tags',
@@ -142,6 +152,8 @@ class Gem::Source::Git < Gem::Source
# The directory where the git gem will be installed.
def install_dir # :nodoc:
File.join base_dir, 'gems', "#{@name}-#{dir_shortref}"
end
@@ -177,6 +189,8 @@ class Gem::Source::Git < Gem::Source
def specs
checkout
Dir.chdir install_dir do
Dir['{,*,*/*}.gemspec'].map do |spec_file|
directory = File.dirname spec_file
@@ -115,6 +115,23 @@ class Gem::TestCase < MiniTest::Unit::TestCase
assert File.exist?(path), msg
end
# TODO: move to minitest
def refute_path_exists path, msg = nil
msg = message(msg) { "Expected path '#{path}' to not exist" }
@@ -1249,10 +1266,17 @@ Also, a list:
class StaticSet
##
# Creates a new StaticSet for the given +specs+
def initialize(specs)
@specs = specs
end
##
@@ -22,6 +22,11 @@
# 3. 1.0.a.2
# 4. 0.9
#
# == How Software Changes
#
# Users expect to be able to specify a version constraint that gives them