From 086cde1651902abb758184f1eadbbfb367b2fedf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= Date: Wed, 3 Jul 2024 20:17:59 +0200 Subject: [rubygems/rubygems] Instantiate `Resolver::SpecGroup` with explicit priority https://github.com/rubygems/rubygems/commit/e2c1bc1b6c --- lib/bundler/resolver.rb | 8 ++++---- lib/bundler/resolver/candidate.rb | 18 +++--------------- 2 files changed, 7 insertions(+), 19 deletions(-) (limited to 'lib') 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) -- cgit v1.2.3