diff options
author | David RodrÃguez <deivid.rodriguez@riseup.net> | 2023-02-09 15:24:06 +0100 |
---|---|---|
committer | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2023-02-21 19:28:12 +0900 |
commit | 80389915838fe235b5691391ba00e2733e31d93b (patch) | |
tree | 030c8d7d54f8d61221367d225b6edffe55cf44ae /lib/bundler/vendor/pub_grub | |
parent | e7bf85961d43e5679946abd3cd0de59278582309 (diff) |
[rubygems/rubygems] Sync with pub_grub main branch
We became a bit out of sync lately.
https://github.com/rubygems/rubygems/commit/6161a2610a
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/7345
Diffstat (limited to 'lib/bundler/vendor/pub_grub')
3 files changed, 17 insertions, 6 deletions
diff --git a/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb b/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb index e895812bed..4bf61461b2 100644 --- a/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +++ b/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb @@ -19,7 +19,14 @@ module Bundler::PubGrub version = Gem::Version.new(version) @packages[name] ||= {} raise ArgumentError, "#{name} #{version} declared twice" if @packages[name].key?(version) - @packages[name][version] = deps + @packages[name][version] = clean_deps(name, version, deps) + end + + private + + # Exclude redundant self-referencing dependencies + def clean_deps(name, version, deps) + deps.reject {|dep_name, req| name == dep_name && Bundler::PubGrub::RubyGems.parse_range(req).include?(version) } end end diff --git a/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb b/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb index 9133332d01..b71f3eaf53 100644 --- a/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +++ b/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb @@ -15,15 +15,16 @@ module Bundler::PubGrub package.hash ^ range.hash end + def ==(other) + package == other.package && + range == other.range + end + def eql?(other) package.eql?(other.package) && range.eql?(other.range) end - def ==(other) - package == other.package && range == other.range - end - class << self def exact(package, version) range = VersionRange.new(min: version, max: version, include_min: true, include_max: true) diff --git a/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb b/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb index ea5e455968..2cb8412cf3 100644 --- a/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +++ b/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb @@ -125,6 +125,7 @@ module Bundler::PubGrub package = next_package_to_try unsatisfied_term = solution.unsatisfied.find { |t| t.package == package } version = source.versions_for(package, unsatisfied_term.constraint.range).first + logger.debug { "attempting #{package} #{version}" } if version.nil? add_incompatibility source.no_versions_incompatibility_for(package, unsatisfied_term) @@ -148,9 +149,11 @@ module Bundler::PubGrub end unless conflict - logger.info { "selecting #{package} #{version}" } + logger.info { "selected #{package} #{version}" } solution.decide(package, version) + else + logger.info { "conflict: #{conflict.inspect}" } end package |