summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDavid Rodríguez <deivid.rodriguez@riseup.net>2024-07-03 20:17:59 +0200
committergit <svn-admin@ruby-lang.org>2024-07-09 16:34:07 +0000
commit086cde1651902abb758184f1eadbbfb367b2fedf (patch)
tree68cc9f949a406061273f18328ca3d9c9f9d5fff1 /lib
parent5fdfdc30f155ac41f865d4a0ae9ee37f1371fd7f (diff)
[rubygems/rubygems] Instantiate `Resolver::SpecGroup` with explicit priority
https://github.com/rubygems/rubygems/commit/e2c1bc1b6c
Diffstat (limited to 'lib')
-rw-r--r--lib/bundler/resolver.rb8
-rw-r--r--lib/bundler/resolver/candidate.rb18
2 files changed, 7 insertions, 19 deletions
diff --git a/lib/bundler/resolver.rb b/lib/bundler/resolver.rb
index ba52712d15..c546eaa2b3 100644
--- a/lib/bundler/resolver.rb
+++ b/lib/bundler/resolver.rb
@@ -273,11 +273,11 @@ module Bundler
platform_specs.uniq!
ruby_specs = select_best_platform_match(specs, Gem::Platform::RUBY)
- groups << Resolver::Candidate.new(version, specs: ruby_specs) if ruby_specs.any?
+ groups << Resolver::Candidate.new(version, specs: ruby_specs, priority: -1) if ruby_specs.any?
next groups if platform_specs == ruby_specs || package.force_ruby_platform?
- groups << Resolver::Candidate.new(version, specs: platform_specs)
+ groups << Resolver::Candidate.new(version, specs: platform_specs, priority: 1)
groups
end
@@ -432,8 +432,8 @@ module Bundler
def requirement_to_range(requirement)
ranges = requirement.requirements.map do |(op, version)|
- ver = Resolver::Candidate.new(version).generic!
- platform_ver = Resolver::Candidate.new(version).platform_specific!
+ ver = Resolver::Candidate.new(version, priority: -1)
+ platform_ver = Resolver::Candidate.new(version, priority: 1)
case op
when "~>"
diff --git a/lib/bundler/resolver/candidate.rb b/lib/bundler/resolver/candidate.rb
index 9e8b913335..debf73584d 100644
--- a/lib/bundler/resolver/candidate.rb
+++ b/lib/bundler/resolver/candidate.rb
@@ -24,10 +24,10 @@ module Bundler
attr_reader :version
- def initialize(version, specs: [])
+ def initialize(version, specs: [], priority: -1)
@spec_group = Resolver::SpecGroup.new(specs)
@version = Gem::Version.new(version)
- @ruby_only = specs.map(&:platform).uniq == [Gem::Platform::RUBY]
+ @priority = priority
end
def dependencies
@@ -40,18 +40,6 @@ module Bundler
@spec_group.to_specs(package.force_ruby_platform?)
end
- def generic!
- @ruby_only = true
-
- self
- end
-
- def platform_specific!
- @ruby_only = false
-
- self
- end
-
def prerelease?
@version.prerelease?
end
@@ -61,7 +49,7 @@ module Bundler
end
def sort_obj
- [@version, @ruby_only ? -1 : 1]
+ [@version, @priority]
end
def <=>(other)