summaryrefslogtreecommitdiff
path: root/lib/bundler/resolver.rb
AgeCommit message (Collapse)Author
2025-05-22Merge RubyGems-3.6.9 and Bundler-2.6.9Hiroshi SHIBATA
2025-04-08Merge RubyGems-3.6.7 and Bundler-2.6.7Hiroshi SHIBATA
2025-02-20Merge RubyGems-3.6.5 and Bundler-2.6.5Hiroshi SHIBATA
2025-02-20Merge RubyGems-3.6.4 and Bundler-2.6.4Hiroshi SHIBATA
2025-02-20Merge RubyGems-3.6.3 and Bundler-2.6.3Hiroshi SHIBATA
2024-11-26[rubygems/rubygems] Remove no longer necessary codeDavid Rodríguez
https://github.com/rubygems/rubygems/commit/9ea1539b08
2024-11-26[rubygems/rubygems] Create LazySpecifications directly with ↵David Rodríguez
most_specific_locked_platform So there's no need to pass it around in so many places. https://github.com/rubygems/rubygems/commit/784ab7481b
2024-11-26[rubygems/rubygems] Enable `Performance/MapCompact` copDavid Rodríguez
https://github.com/rubygems/rubygems/commit/0c3a65871a
2024-11-26[rubygems/rubygems] More aggressive `Performance/FlatMap` cop configurationDavid Rodríguez
https://github.com/rubygems/rubygems/commit/d8d68cc00e
2024-08-22[rubygems/rubygems] Fix `--prefer-local` flagDavid Rodríguez
The original implementation of this flag was too naive and all it did was restricting gems to locally installed versions if there are any local versions installed. However, it should be much smarter. For example: * It should fallback to remote versions if locally installed version don't satisfy the requirements. * It should pick locally installed versions even for subdependencies not yet discovered. This commit fixes both issues by using a smarter approach similar to how we resolve prereleases: * First resolve optimistically using only locally installed gems. * If any conflicts are found, scan those conflicts, allow remote versions for the specific gems that run into conflicts, and re-resolve. https://github.com/rubygems/rubygems/commit/607a3bf479 Co-authored-by: Gourav Khunger <gouravkhunger18@gmail.com>
2024-08-22[rubygems/rubygems] Fix bad grammar in log messageDavid Rodríguez
https://github.com/rubygems/rubygems/commit/bea4c1ad79
2024-07-09[rubygems/rubygems] Fix generic platform gems getting incorrectly removed ↵David Rodríguez
when locked for a specific platform If they are already in the lockfile as the most specific variant for a platform, we shouldn't change that unless explicitly unlocking. https://github.com/rubygems/rubygems/commit/a901660498
2024-07-09[rubygems/rubygems] Resolve all platforms directlyDavid Rodríguez
Instead of having to do a complete pass after resolve. To do this, we add to the ruby group all the platform specs with the same dependencies as the ruby specs. https://github.com/rubygems/rubygems/commit/e50415f2a6
2024-07-09[rubygems/rubygems] Instantiate `Resolver::SpecGroup` with explicit priorityDavid Rodríguez
https://github.com/rubygems/rubygems/commit/e2c1bc1b6c
2024-07-09[rubygems/rubygems] Let resolver consider unique specs from the beginningDavid Rodríguez
It results in more consistent error messages. https://github.com/rubygems/rubygems/commit/a4b34361cc
2024-04-01[rubygems/rubygems] Improve error message when strict resolution filters out ↵David Rodriguez
everything https://github.com/rubygems/rubygems/commit/1ea44b3749
2024-04-01[rubygems/rubygems] Keep unfiltered versions separatelyDavid Rodriguez
https://github.com/rubygems/rubygems/commit/7b5cc51a96
2024-04-01[rubygems/rubygems] No need to check for root package every timeDavid Rodriguez
https://github.com/rubygems/rubygems/commit/6ca192649f
2024-04-01[rubygems/rubygems] No need for any version prioritization when building errorsDavid Rodriguez
We just need to filter versions belonging to the range, but don't need anything else. https://github.com/rubygems/rubygems/commit/8355a225d7
2024-04-01[rubygems/rubygems] Make it look more like BasicPackageSourceDavid Rodriguez
https://github.com/rubygems/rubygems/commit/bb5727934c
2024-04-01[rubygems/rubygems] Let GemVersionPromoter sort in preferred order directlyDavid Rodriguez
So that we don't need to reverse the Array. https://github.com/rubygems/rubygems/commit/aeea5e2e00
2024-04-01[rubygems/rubygems] No need to sort twice when filling versionsDavid Rodriguez
https://github.com/rubygems/rubygems/commit/13294528c4
2024-04-01[rubygems/rubygems] Rename method for clarityDavid Rodriguez
And also so that it matches the method used by main PubGrub sample resolver class. https://github.com/rubygems/rubygems/commit/0e612361b8
2023-12-07[rubygems/rubygems] Use modern hashes consistentlyDavid Rodríguez
https://github.com/rubygems/rubygems/commit/bb66253f2c
2023-10-16[rubygems/rubygems] Raise an error when top level dependency does not ↵David Rodríguez
resolve under all locked platforms https://github.com/rubygems/rubygems/commit/25304f3e8d
2023-10-16[rubygems/rubygems] Tweak platform mismatch resolution errorsDavid Rodríguez
https://github.com/rubygems/rubygems/commit/20460bc1ee
2023-10-03[rubygems/rubygems] Don't re-resolve with prereleases if unlocked gem has no ↵David Rodriguez
prereleases https://github.com/rubygems/rubygems/commit/d76dc70d90
2023-08-28[rubygems/rubygems] Don't check for circular deps on full index sourcesDavid Rodríguez
https://github.com/rubygems/rubygems/commit/d275cdccb1
2023-08-28[rubygems/rubygems] Refactor Fetcher#api_fetcher? and fetcher loading logicMartin Emde
https://github.com/rubygems/rubygems/commit/f664d60114
2023-06-20Merge rubygems/rubygems HEADHiroshi SHIBATA
Pick from https://github.com/rubygems/rubygems/commit/880dd95996c93adc1e032399816931b243c5fe17 Notes: Merged: https://github.com/ruby/ruby/pull/7961
2023-03-17Don´t consider platform specific candidates when `force_ruby_platform` setDavid Rodríguez
This was working fine for direct dependencies using `force_ruby_platform` explicitly through Gemfile, but not for indirect dependencies. In general, indirect dependencies do not have this property set, but in truffleruby this is different and the default value is to have it set.
2023-03-17Don't ignore pre-releases when there's only one candidateDavid Rodríguez
This should be a very rare edge case, however, it does happen when using a .dev version of Bundler because in that case, that's the only version that the resolver considers, and it should not be ignored. We could've special cased this specifically for Bundler, but I think it does make sense for every gem.
2023-02-21Merge rubygems/bundler masterHiroshi SHIBATA
Pick from https://github.com/rubygems/rubygems/commit/e9304aed7e43308b99e70c2f7b92028315fee8a5 Notes: Merged: https://github.com/ruby/ruby/pull/7345
2023-01-31Merge RubyGems/Bundler master.Hiroshi SHIBATA
Pick from https://github.com/rubygems/rubygems/commit/5ace20dbecfeaf09fba5f616193f3cfcff70ba00 Notes: Merged: https://github.com/ruby/ruby/pull/7203
2023-01-10Merge RubyGems and Bundler masterHiroshi SHIBATA
from https://github.com/rubygems/rubygems/commit/0635c1423db5d7c461d53bf0c3329bca75de7609 Notes: Merged: https://github.com/ruby/ruby/pull/7094
2023-01-10[rubygems/rubygems] Fix resolver edge caseDavid Rodríguez
Let it deal with legacy gems with equivalent version and different dependencies. https://github.com/rubygems/rubygems/commit/b430babe97
2022-12-25Update Bundler to 2.4.1 & and RubyGems to 3.4.1David Rodríguez
Notes: Merged: https://github.com/ruby/ruby/pull/7020
2022-12-24Merge RubyGems-3.4.0 and Bundler-2.4.0Hiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/6987
2022-12-20[rubygems/rubygems] Fix crash when building resolution errors with OR ↵David Rodríguez
requirements https://github.com/rubygems/rubygems/commit/8f287479bc Notes: Merged: https://github.com/ruby/ruby/pull/6966
2022-12-20[rubygems/rubygems] Slight tweak to error message buildingDavid Rodríguez
Let Pub Grub decide how the constraint should be displayed. https://github.com/rubygems/rubygems/commit/4f651b6429 Notes: Merged: https://github.com/ruby/ruby/pull/6966
2022-12-20[rubygems/rubygems] Detect circular dependency errorsDavid Rodríguez
https://github.com/rubygems/rubygems/commit/a8348d271d Notes: Merged: https://github.com/ruby/ruby/pull/6966
2022-12-20[rubygems/rubygems] Remove dead logicDavid Rodríguez
https://github.com/rubygems/rubygems/commit/950615405e Notes: Merged: https://github.com/ruby/ruby/pull/6966
2022-12-20[rubygems/rubygems] Extract a variable for consistencyDavid Rodríguez
https://github.com/rubygems/rubygems/commit/3f4b1c7a01 Notes: Merged: https://github.com/ruby/ruby/pull/6966
2022-12-09Merge RubyGems/Bundler masterHiroshi SHIBATA
Pick from https://github.com/rubygems/rubygems/commit/823c776d951f3c35094611473ec77f94e8bf6610 Notes: Merged: https://github.com/ruby/ruby/pull/6890
2022-11-12Migrate our resolver engine to PubGrubHiroshi SHIBATA
https://github.com/rubygems/rubygems/pull/5960 Co-authored-by: David Rodríguez <deivid.rodriguez@riseup.net>
2022-10-18Merge RubyGems/Bundler masterHiroshi SHIBATA
https://github.com/rubygems/rubygems/commit/6214d00b2315ed37c76b1fbc1c72f61f92ba5a65 Notes: Merged: https://github.com/ruby/ruby/pull/6578
2022-10-18[rubygems/rubygems] Simplify SpecGroup creationDavid Rodríguez
https://github.com/rubygems/rubygems/commit/788e46e152 Notes: Merged: https://github.com/ruby/ruby/pull/6578
2022-10-18[rubygems/rubygems] Remove dead codeDavid Rodríguez
https://github.com/rubygems/rubygems/commit/999b644708 Notes: Merged: https://github.com/ruby/ruby/pull/6578
2022-09-12[rubygems/rubygems] Use a single hash to keep track of prereleasesDavid Rodríguez
https://github.com/rubygems/rubygems/commit/9d7bd177b0
2022-09-12[rubygems/rubygems] Remove unnecessary sortingDavid Rodríguez
Already done by the gem version promoter. https://github.com/rubygems/rubygems/commit/aae2cc9fe0