jhawthorn / pub_grub

🍔 A ruby implementation of the PubGrub CDCL-based version solver
MIT License
151 stars 11 forks source link

VersionRange#eql? incorrectly defined #26

Closed cfis closed 1 year ago

cfis commented 1 year ago

The definition of the VersionRange#eql? method is incorrect:

def eql?
  other.empty?
end

It should be:

def eql?(other)
  other.empty?
end

This caused bundle update to fail. I see this when running bundle update on composite_primary_keys gem:

ArgumentError: wrong number of arguments (given 1, expected 0)
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb:22:in `eql?'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb:20:in `eql?'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/vendor/pub_grub/lib/pub_grub/term.rb:25:in `eql?'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb:23:in `relation'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb:28:in `satisfies?'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb:146:in `block (2 levels) in choose_package_version'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb:145:in `all?'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb:145:in `block in choose_package_version'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb:136:in `each'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb:136:in `choose_package_version'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb:41:in `work'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb:58:in `solve'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/resolver.rb:71:in `solve_versions'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/resolver.rb:32:in `start'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/definition.rb:554:in `start_resolution'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/definition.rb:289:in `resolve'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/definition.rb:507:in `materialize'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/definition.rb:197:in `specs'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/installer.rb:231:in `ensure_specs_are_compatible!'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/installer.rb:83:in `block in run'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/process_lock.rb:12:in `block in lock'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/process_lock.rb:9:in `open'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/process_lock.rb:9:in `lock'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/installer.rb:71:in `run'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/installer.rb:23:in `install'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/cli/update.rb:78:in `run'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/cli.rb:310:in `block in update'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/settings.rb:131:in `temporary'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/cli.rb:309:in `update'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/cli.rb:34:in `dispatch'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/cli.rb:28:in `start'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/gems/3.2.0/gems/bundler-2.4.6/exe/bundle:45:in `block in <top (required)>'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/bundler/friendly_errors.rb:117:in `with_friendly_errors'
  C:/msys64/usr/local/ruby-3.2.0/lib/ruby/gems/3.2.0/gems/bundler-2.4.6/exe/bundle:33:in `<top (required)>'
  C:/msys64/usr/local/ruby/bin/bundle:32:in `load'
  C:/msys64/usr/local/ruby/bin/bundle:32:in `<main>'
cfis commented 1 year ago

See bundler ticket at https://github.com/rubygems/rubygems/issues/6326

jhawthorn commented 1 year ago

Thanks for the report! Fixed by df86ca819f638682349a883e206a266c3ec8d754