summaryrefslogtreecommitdiff
path: root/lib/bundler/lazy_specification.rb
AgeCommit message (Collapse)Author
2025-12-23Merge RubyGems 4.0.3 and Bundler 4.0.3Hiroshi SHIBATA
2025-06-11[rubygems/rubygems] Validate dependencies when doing bundle installRandy Stauner
https://github.com/rubygems/rubygems/commit/b0983f392f
2025-06-06Move most of Bundler::GemHelpers to Gem::PlatformSamuel Giddins
This will help centralize wheel platform selection logic eventually Signed-off-by: Samuel Giddins <segiddins@segiddins.me>
2025-04-15[rubygems/rubygems] Extract some logic to a method and expand commentDavid Rodríguez
https://github.com/rubygems/rubygems/commit/ed31e888fd
2025-04-15[rubygems/rubygems] Clarify commentDavid Rodríguez
https://github.com/rubygems/rubygems/commit/42534e746b
2025-04-15[rubygems/rubygems] Comparing platforms is only needed for dependency validationDavid Rodríguez
If we materialized to a different platform, then the dependencies may actually be different so the validation does not really make sense. https://github.com/rubygems/rubygems/commit/68fad98e6f
2025-04-15[rubygems/rubygems] Only platforms are relevant hereDavid Rodríguez
https://github.com/rubygems/rubygems/commit/4b6f07f634
2025-04-15[rubygems/rubygems] Fix false positive warning about insecurely materialized gemDavid Rodríguez
In frozen mode, the previous logic would not set the platform locked originally in the materialized specification, and that would trigger the warning about insecure materialization incorrectly. https://github.com/rubygems/rubygems/commit/a18001e10c
2025-03-24[rubygems/rubygems] Refactor replacing locked specification path sourcesDavid Rodríguez
Instead of doing an explicit pass, let sources be replaced while checking if specifications are up to date. https://github.com/rubygems/rubygems/commit/676271e804 Notes: Merged: https://github.com/ruby/ruby/pull/12968
2025-03-24[rubygems/rubygems] Consistently use "lockfile" over "lock file"David Rodríguez
https://github.com/rubygems/rubygems/commit/e891be9197 Notes: Merged: https://github.com/ruby/ruby/pull/12968
2025-02-13[rubygems/rubygems] Materializing specs for vendor/cache should not be strictDavid Rodríguez
Platforms specific gems not compatible with the current Ruby should not make `bundle cache` fail and should not get removed from the cache since they still may be useful in other rubies. https://github.com/rubygems/rubygems/commit/717b43f565
2025-02-13[rubygems/rubygems] Move logic to materialize gems for cache to a new methodDavid Rodríguez
And make the current `materialize_strictly` private. https://github.com/rubygems/rubygems/commit/3fc2129147
2025-02-13[rubygems/rubygems] Remove unnecessary source changeDavid Rodríguez
We materializing for installation, we already do this, and we materializing for cache, it does not seem necessary. https://github.com/rubygems/rubygems/commit/1a983c6cbc
2025-02-13[rubygems/rubygems] Extract some common materialization logic to a methodDavid Rodríguez
https://github.com/rubygems/rubygems/commit/32982fcd33
2025-02-13[rubygems/rubygems] Make LazySpecification#__materialize__ privateDavid Rodríguez
And rename it to something better. https://github.com/rubygems/rubygems/commit/321174d1ad
2024-11-26[rubygems/rubygems] Keep track of materializations in the original resolveDavid Rodríguez
This gives more flexibility to allow further improvements. https://github.com/rubygems/rubygems/commit/f11a890f5e
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] Fix development dependencies considered unnecessarily ↵David Rodríguez
sometimes When used with `LazySpecification` objects, `SpecSet#for` was incorrectly considering development dependencies. This did not cause any issues because all usages of this method with `LazySpecification`'s are not strict, meaning the pass `check = false` and ignore incomplete specifications. But it was still doing more work than necessary because development dependencies were still added to the `deps` array for processing and then ignored because of not being found in the spec set. Same when converging path specifications and replacing their dependencies. https://github.com/rubygems/rubygems/commit/6afca8a95f
2024-11-19[rubygems/rubygems] Define a few `inspect` methods to help debuggingDavid Rodríguez
https://github.com/rubygems/rubygems/commit/ad26ccde38
2024-11-08[rubygems/rubygems] Warn on insecure materializationDavid Rodríguez
https://github.com/rubygems/rubygems/commit/bc2537de71
2024-11-08[rubygems/rubygems] Small tweakDavid Rodríguez
https://github.com/rubygems/rubygems/commit/98641d21a2
2024-11-08[rubygems/rubygems] Reduce global stateDavid Rodríguez
https://github.com/rubygems/rubygems/commit/43c0c41c6b
2024-11-06[rubygems/rubygems] Note about why we don't fix lockfile dependencies backed ↵David Rodríguez
by installed specs https://github.com/rubygems/rubygems/commit/6fa94b5d72
2024-11-06[rubygems/rubygems] Automatically fix lockfile when the API reveals missing depsDavid Rodríguez
https://github.com/rubygems/rubygems/commit/92196ccfdb
2024-11-06[rubygems/rubygems] Check for `EndpointSpecification` exactlyDavid Rodríguez
https://github.com/rubygems/rubygems/commit/8fac200ded
2024-11-06[rubygems/rubygems] Simplify code structureDavid Rodríguez
https://github.com/rubygems/rubygems/commit/a4dd06f095
2024-10-16[rubygems/rubygems] Delay and refactor verification of changed sourcesDavid Rodríguez
https://github.com/rubygems/rubygems/commit/d5dce93167
2024-01-11[rubygems/rubygems] include MatchMetadata in Bundler::LazySpecificationCody Cutrer
I'm running into a case in my plugin where matches_current_metadata? is getting called on a lazy specification, and adding this fixes it https://github.com/rubygems/rubygems/commit/24f962cb42
2023-12-22Merge RubyGems-3.5.2 and Bundler-2.5.2Hiroshi SHIBATA
2023-12-07[rubygems/rubygems] Use modern hashes consistentlyDavid Rodríguez
https://github.com/rubygems/rubygems/commit/bb66253f2c
2023-11-22[rubygems/rubygems] Fix universal lockfiles regressionDavid Rodriguez
If a platform specific variant would not match the current Ruby, we would still be considering it compatible with the initial resolution and adding its platform to the lockfile, but we would later fail to materialize it for installation due to not really being compatible. Fix is to only add platforms for variants that are also compatible with current Ruby and RubyGems versions. https://github.com/rubygems/rubygems/commit/75d1290843
2023-11-13[rubygems/rubygems] Extract builder to create a `LazySpecification` from ↵David Rodríguez
full spec https://github.com/rubygems/rubygems/commit/957d3d9a7f
2023-11-13[rubygems/rubygems] Allow setting metadata on LazySpecificationDavid Rodríguez
This is a step forward towards eventually including metadata in the lockfile. https://github.com/rubygems/rubygems/commit/56fc02b251
2023-11-13[rubygems/rubygems] Set LazySpecification dependencies directlyDavid Rodríguez
https://github.com/rubygems/rubygems/commit/2462c8e04d
2023-11-08[rubygems/rubygems] Simplify selecting specs with `force_ruby_platform` setDavid Rodríguez
https://github.com/rubygems/rubygems/commit/5f90a43635 Co-authored-by: Martin Emde <martin.emde@gmail.com>
2023-10-23[rubygems/rubygems] Improve errors and register checksums reliablyMartin Emde
Improve error reporting for checksums, raises a new error class. Solve for multi-source checksum errors. Add CHECKSUMS to tool/bundler/(dev|standard|rubocop)26_gems.rb https://github.com/rubygems/rubygems/commit/26ceee0e76 Co-authored-by: Samuel Giddins <segiddins@segiddins.me>
2023-10-23[rubygems/rubygems] Refactor to checksums stored via sourceSamuel Giddins
This gets the specs passing, and handles the fact that we expect checkums to be pinned only to a particular source This also avoids reading in .gem files during lockfile generation, instead allowing us to query the source for each resolved gem to grab the checksum Finally, this opens up a route to having user-stored checksum databases, similar to how other package managers do this! Add checksums to dev lockfiles Handle full name conflicts from different original_platforms when adding checksums to store from compact index Specs passing on Bundler 3 https://github.com/rubygems/rubygems/commit/86c7084e1c
2023-10-23[rubygems/rubygems] Use the server checksum, then calculate from gem on disk ↵Mercedes Bernard
if possible 1. Use the checksum provided by the server if provided: provides security knowing if the gem you downloaded matches the gem on the server 2. Calculate the checksum from the gem on disk: provides security knowing if the gem has changed between installs 3. In some cases, neither is possible in which case we don't put anything in the checksum and we maintain functionality as it is today Add the checksums to specs in the index if we already have them Prior to checksums, we didn't lose any information when overwriting specs in the index with stubs. But now when we overwrite EndpointSpecifications or RemoteSpecifications with more generic specs, we could lose checksum info. This manually sets checksum info so we keep it in the index. https://github.com/rubygems/rubygems/commit/de00a4f153
2023-10-23[rubygems/rubygems] Add CHECKSUMS for each gem in lockfileThong Kuah
We lock the checksum for each resolved spec under a new CHECKSUMS section in the lockfile. If the locked spec does not resolve for the local platform, we preserve the locked checksum, similar to how we preserve specs. Checksum locking only makes sense on install. The compact index information is only available then. https://github.com/rubygems/rubygems/commit/bde37ca6bf
2023-03-28[rubygems/rubygems] Onboard Rubocop Naming/MemoizedInstanceVariableName rule ↵Josef Šimánek
to Bundler. https://github.com/rubygems/rubygems/commit/d768be0c65
2023-03-23Fix flaky when making materialized specs uniqDavid Rodríguez
Sometimes we'll have an heterogenous array of specs which include `Gem::Specification` objects, which don't define `#identifier`. Let's use `#full_name` consistently. Notes: Merged: https://github.com/ruby/ruby/pull/7582
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
2022-12-24Merge RubyGems-3.4.0 and Bundler-2.4.0Hiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/6987
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-11-11Merge RubyGems/Bundler master from ee2f8398324af4bc1b95f7565ce2fda98126e026v3_2_0_preview3Hiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/6715
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] Materialize platforms strictly on Windows tooDavid Rodríguez
https://github.com/rubygems/rubygems/commit/ab11545f80 Notes: Merged: https://github.com/ruby/ruby/pull/6578
2022-10-18[rubygems/rubygems] Remove unnecessary receiverDavid Rodríguez
https://github.com/rubygems/rubygems/commit/ba9d9b1890 Notes: Merged: https://github.com/ruby/ruby/pull/6578
2022-08-23Merge rubygems/bundler HEADHiroshi SHIBATA
Pick from https://github.com/rubygems/rubygems/commit/6b3a5a9ab0453463381a8164efb6298ea9eb776f Notes: Merged: https://github.com/ruby/ruby/pull/6268