aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rubygems/request_set
diff options
context:
space:
mode:
authorhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-02-27 13:00:45 +0000
committerhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-02-27 13:00:45 +0000
commitd9c32d62a06edf6bcfaf357e44173cefd92778ee (patch)
treeba0a22afc2b02ca4c6eba226ff27c120595968a7 /lib/rubygems/request_set
parentb89e894399016def7979168d16eff9026012a710 (diff)
downloadruby-d9c32d62a06edf6bcfaf357e44173cefd92778ee.tar.gz
* lib/rubygems: Update to RubyGems 2.4.6 and HEAD(800f2e6).
Fixed #1159, #1171, #1173 on rubygems/rubygems * test/rubygems: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49774 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rubygems/request_set')
-rw-r--r--lib/rubygems/request_set/gem_dependency_api.rb8
-rw-r--r--lib/rubygems/request_set/lockfile.rb75
2 files changed, 37 insertions, 46 deletions
diff --git a/lib/rubygems/request_set/gem_dependency_api.rb b/lib/rubygems/request_set/gem_dependency_api.rb
index 9aad5ab5d3..6dd7892b4c 100644
--- a/lib/rubygems/request_set/gem_dependency_api.rb
+++ b/lib/rubygems/request_set/gem_dependency_api.rb
@@ -367,11 +367,11 @@ class Gem::RequestSet::GemDependencyAPI
@dependencies[name] =
if requirements.empty? and not source_set then
- nil
+ Gem::Requirement.default
elsif source_set then
- '!'
+ Gem::Requirement.source_set
else
- requirements
+ Gem::Requirement.create requirements
end
return unless gem_platforms options
@@ -601,7 +601,7 @@ Gem dependencies file #{@path} requires #{name} more than once.
add_dependencies groups, [self_dep]
add_dependencies groups, spec.runtime_dependencies
- @dependencies[spec.name] = '!'
+ @dependencies[spec.name] = Gem::Requirement.source_set
spec.dependencies.each do |dep|
@dependencies[dep.name] = dep.requirement
diff --git a/lib/rubygems/request_set/lockfile.rb b/lib/rubygems/request_set/lockfile.rb
index 2c788fb703..3c54785aad 100644
--- a/lib/rubygems/request_set/lockfile.rb
+++ b/lib/rubygems/request_set/lockfile.rb
@@ -37,15 +37,40 @@ class Gem::RequestSet::Lockfile
end
##
- # The platforms for this Lockfile
+ # Creates a new Lockfile for the given +request_set+ and +gem_deps_file+
+ # location.
- attr_reader :platforms
+ def self.build request_set, gem_deps_file, dependencies = nil
+ request_set.resolve
+ dependencies ||= requests_to_deps request_set.sorted_requests
+ new request_set, gem_deps_file, dependencies
+ end
+
+ def self.requests_to_deps requests # :nodoc:
+ deps = {}
+
+ requests.each do |request|
+ spec = request.spec
+ name = request.name
+ requirement = request.request.dependency.requirement
+
+ deps[name] = if [Gem::Resolver::VendorSpecification,
+ Gem::Resolver::GitSpecification].include? spec.class then
+ Gem::Requirement.source_set
+ else
+ requirement
+ end
+ end
+
+ deps
+ end
##
- # Creates a new Lockfile for the given +request_set+ and +gem_deps_file+
- # location.
+ # The platforms for this Lockfile
+
+ attr_reader :platforms
- def initialize request_set, gem_deps_file, dependencies = nil
+ def initialize request_set, gem_deps_file, dependencies
@set = request_set
@dependencies = dependencies
@gem_deps_file = File.expand_path(gem_deps_file)
@@ -59,41 +84,9 @@ class Gem::RequestSet::Lockfile
def add_DEPENDENCIES out # :nodoc:
out << "DEPENDENCIES"
- dependencies =
- if @dependencies then
- @dependencies.sort_by { |name,| name }.map do |name, requirement|
- requirement_string =
- if '!' == requirement then
- requirement
- else
- Gem::Requirement.new(requirement).for_lockfile
- end
-
- [name, requirement_string]
- end
- else
- requests.sort_by { |r| r.name }.map do |request|
- spec = request.spec
- name = request.name
- requirement = request.request.dependency.requirement
-
- requirement_string =
- if [Gem::Resolver::VendorSpecification,
- Gem::Resolver::GitSpecification].include? spec.class then
- "!"
- else
- requirement.for_lockfile
- end
-
- [name, requirement_string]
- end
- end
-
- dependencies = dependencies.map do |name, requirement_string|
- " #{name}#{requirement_string}"
- end
-
- out.concat dependencies
+ out.concat @dependencies.sort_by { |name,| name }.map { |name, requirement|
+ " #{name}#{requirement.for_lockfile}"
+ }
out << nil
end
@@ -207,8 +200,6 @@ class Gem::RequestSet::Lockfile
# The contents of the lock file.
def to_s
- @set.resolve
-
out = []
groups = spec_groups