bundler 2.5.17 → 2.5.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +18 -0
- data/lib/bundler/build_metadata.rb +2 -2
- data/lib/bundler/cli/install.rb +4 -3
- data/lib/bundler/definition.rb +11 -18
- data/lib/bundler/lockfile_parser.rb +1 -1
- data/lib/bundler/resolver/base.rb +6 -0
- data/lib/bundler/resolver/package.rb +10 -1
- data/lib/bundler/resolver.rb +31 -9
- data/lib/bundler/source/git/git_proxy.rb +4 -2
- data/lib/bundler/source/git.rb +7 -1
- data/lib/bundler/templates/newgem/README.md.tt +6 -2
- data/lib/bundler/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5385db419c628f24a112828aaa2154b615e4654418efcd0ca7429b15bf3849e5
|
4
|
+
data.tar.gz: f8854df0d8ba8b5b93b0f2984d0f640a8582cae6aca768fbd1a71d9652ac4b78
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0aea6d055bd4fab23aa27f322af55f1b021155d80a0352e40d7025e99006ee88843db327ed7bab1e2210d3c065bf201e11cc31a9fa46075e6abf2b67f85b6821
|
7
|
+
data.tar.gz: 041fcf5abd1f69f26fdf3f11eb4fced176c30ac3f0dbfb47df1c40d5308dacc9179ae32438737db6a5d9300a20b0f6bc4122c0fb762ee83b442144f969c328e4
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
# 2.5.18 (August 26, 2024)
|
2
|
+
|
3
|
+
## Enhancements:
|
4
|
+
|
5
|
+
- Don't remove existing platform gems when PLATFORMS section is badly indented [#7916](https://github.com/rubygems/rubygems/pull/7916)
|
6
|
+
|
7
|
+
## Bug fixes:
|
8
|
+
|
9
|
+
- Fix error message when Bundler refuses to install due to frozen being set without a lockfile [#7955](https://github.com/rubygems/rubygems/pull/7955)
|
10
|
+
- Fix several issues with the `--prefer-local` flag [#7951](https://github.com/rubygems/rubygems/pull/7951)
|
11
|
+
- Restore support for passing relative paths to `git:` sources [#7950](https://github.com/rubygems/rubygems/pull/7950)
|
12
|
+
- Regenerate previous git application caches that didn't include bare repos [#7926](https://github.com/rubygems/rubygems/pull/7926)
|
13
|
+
- Fix `bundle update <indirect_dep>` failing to upgrade when versions present in two different sources [#7915](https://github.com/rubygems/rubygems/pull/7915)
|
14
|
+
|
15
|
+
## Documentation:
|
16
|
+
|
17
|
+
- Change new gem README template to have copyable code blocks [#7935](https://github.com/rubygems/rubygems/pull/7935)
|
18
|
+
|
1
19
|
# 2.5.17 (August 1, 2024)
|
2
20
|
|
3
21
|
## Enhancements:
|
@@ -4,8 +4,8 @@ module Bundler
|
|
4
4
|
# Represents metadata from when the Bundler gem was built.
|
5
5
|
module BuildMetadata
|
6
6
|
# begin ivars
|
7
|
-
@built_at = "2024-08-
|
8
|
-
@git_commit_sha = "
|
7
|
+
@built_at = "2024-08-26".freeze
|
8
|
+
@git_commit_sha = "c218aab519".freeze
|
9
9
|
@release = true
|
10
10
|
# end ivars
|
11
11
|
|
data/lib/bundler/cli/install.rb
CHANGED
@@ -25,9 +25,10 @@ module Bundler
|
|
25
25
|
|
26
26
|
if options[:deployment] || options[:frozen] || Bundler.frozen_bundle?
|
27
27
|
unless Bundler.default_lockfile.exist?
|
28
|
-
flag
|
29
|
-
flag ||= "--frozen flag"
|
30
|
-
flag ||= "deployment setting"
|
28
|
+
flag = "--deployment flag" if options[:deployment]
|
29
|
+
flag ||= "--frozen flag" if options[:frozen]
|
30
|
+
flag ||= "deployment setting" if Bundler.settings[:deployment]
|
31
|
+
flag ||= "frozen setting" if Bundler.settings[:frozen]
|
31
32
|
raise ProductionError, "The #{flag} requires a lockfile. Please make " \
|
32
33
|
"sure you have checked your #{SharedHelpers.relative_lockfile_path} into version control " \
|
33
34
|
"before deploying."
|
data/lib/bundler/definition.rb
CHANGED
@@ -214,6 +214,7 @@ module Bundler
|
|
214
214
|
@resolve = nil
|
215
215
|
@resolver = nil
|
216
216
|
@resolution_packages = nil
|
217
|
+
@source_requirements = nil
|
217
218
|
@specs = nil
|
218
219
|
|
219
220
|
Bundler.ui.debug "The definition is missing dependencies, failed to resolve & materialize locally (#{e})"
|
@@ -476,9 +477,6 @@ module Bundler
|
|
476
477
|
end
|
477
478
|
end
|
478
479
|
|
479
|
-
attr_reader :sources
|
480
|
-
private :sources
|
481
|
-
|
482
480
|
def nothing_changed?
|
483
481
|
return false unless lockfile_exists?
|
484
482
|
|
@@ -502,8 +500,12 @@ module Bundler
|
|
502
500
|
@unlocking
|
503
501
|
end
|
504
502
|
|
503
|
+
attr_writer :source_requirements
|
504
|
+
|
505
505
|
private
|
506
506
|
|
507
|
+
attr_reader :sources
|
508
|
+
|
507
509
|
def should_add_extra_platforms?
|
508
510
|
!lockfile_exists? && generic_local_platform_is_ruby? && !Bundler.settings[:force_ruby_platform]
|
509
511
|
end
|
@@ -569,7 +571,7 @@ module Bundler
|
|
569
571
|
@resolution_packages ||= begin
|
570
572
|
last_resolve = converge_locked_specs
|
571
573
|
remove_invalid_platforms!
|
572
|
-
packages = Resolver::Base.new(source_requirements, expanded_dependencies, last_resolve, @platforms, locked_specs: @originally_locked_specs, unlock: @gems_to_unlock, prerelease: gem_version_promoter.pre
|
574
|
+
packages = Resolver::Base.new(source_requirements, expanded_dependencies, last_resolve, @platforms, locked_specs: @originally_locked_specs, unlock: @gems_to_unlock, prerelease: gem_version_promoter.pre?, prefer_local: @prefer_local)
|
573
575
|
packages = additional_base_requirements_to_prevent_downgrades(packages, last_resolve)
|
574
576
|
packages = additional_base_requirements_to_force_updates(packages)
|
575
577
|
packages
|
@@ -653,19 +655,6 @@ module Bundler
|
|
653
655
|
sources.non_global_rubygems_sources.all?(&:dependency_api_available?) && !sources.aggregate_global_source?
|
654
656
|
end
|
655
657
|
|
656
|
-
def pin_locally_available_names(source_requirements)
|
657
|
-
source_requirements.each_with_object({}) do |(name, original_source), new_source_requirements|
|
658
|
-
local_source = original_source.dup
|
659
|
-
local_source.local_only!
|
660
|
-
|
661
|
-
new_source_requirements[name] = if local_source.specs.search(name).any?
|
662
|
-
local_source
|
663
|
-
else
|
664
|
-
original_source
|
665
|
-
end
|
666
|
-
end
|
667
|
-
end
|
668
|
-
|
669
658
|
def current_platform_locked?
|
670
659
|
@platforms.any? do |bundle_platform|
|
671
660
|
MatchPlatform.platforms_match?(bundle_platform, local_platform)
|
@@ -972,12 +961,15 @@ module Bundler
|
|
972
961
|
end
|
973
962
|
|
974
963
|
def source_requirements
|
964
|
+
@source_requirements ||= find_source_requirements
|
965
|
+
end
|
966
|
+
|
967
|
+
def find_source_requirements
|
975
968
|
# Record the specs available in each gem's source, so that those
|
976
969
|
# specs will be available later when the resolver knows where to
|
977
970
|
# look for that gemspec (or its dependencies)
|
978
971
|
source_requirements = if precompute_source_requirements_for_indirect_dependencies?
|
979
972
|
all_requirements = source_map.all_requirements
|
980
|
-
all_requirements = pin_locally_available_names(all_requirements) if @prefer_local
|
981
973
|
{ default: default_source }.merge(all_requirements)
|
982
974
|
else
|
983
975
|
{ default: Source::RubygemsAggregate.new(sources, source_map) }.merge(source_map.direct_requirements)
|
@@ -1053,6 +1045,7 @@ module Bundler
|
|
1053
1045
|
|
1054
1046
|
def dup_for_full_unlock
|
1055
1047
|
unlocked_definition = self.class.new(@lockfile, @dependencies, @sources, true, @ruby_version, @optional_groups, @gemfiles)
|
1048
|
+
unlocked_definition.source_requirements = source_requirements
|
1056
1049
|
unlocked_definition.gem_version_promoter.tap do |gvp|
|
1057
1050
|
gvp.level = gem_version_promoter.level
|
1058
1051
|
gvp.strict = gem_version_promoter.strict
|
@@ -15,7 +15,7 @@ module Bundler
|
|
15
15
|
class Package
|
16
16
|
attr_reader :name, :platforms, :dependency, :locked_version
|
17
17
|
|
18
|
-
def initialize(name, platforms, locked_specs:, unlock:, prerelease: false, dependency: nil)
|
18
|
+
def initialize(name, platforms, locked_specs:, unlock:, prerelease: false, prefer_local: false, dependency: nil)
|
19
19
|
@name = name
|
20
20
|
@platforms = platforms
|
21
21
|
@locked_version = locked_specs[name].first&.version
|
@@ -23,6 +23,7 @@ module Bundler
|
|
23
23
|
@dependency = dependency || Dependency.new(name, @locked_version)
|
24
24
|
@top_level = !dependency.nil?
|
25
25
|
@prerelease = @dependency.prerelease? || @locked_version&.prerelease? || prerelease ? :consider_first : :ignore
|
26
|
+
@prefer_local = prefer_local
|
26
27
|
end
|
27
28
|
|
28
29
|
def platform_specs(specs)
|
@@ -69,6 +70,14 @@ module Bundler
|
|
69
70
|
@prerelease = :consider_last
|
70
71
|
end
|
71
72
|
|
73
|
+
def prefer_local?
|
74
|
+
@prefer_local
|
75
|
+
end
|
76
|
+
|
77
|
+
def consider_remote_versions!
|
78
|
+
@prefer_local = false
|
79
|
+
end
|
80
|
+
|
72
81
|
def force_ruby_platform?
|
73
82
|
@dependency.force_ruby_platform
|
74
83
|
end
|
data/lib/bundler/resolver.rb
CHANGED
@@ -84,9 +84,9 @@ module Bundler
|
|
84
84
|
rescue PubGrub::SolveFailure => e
|
85
85
|
incompatibility = e.incompatibility
|
86
86
|
|
87
|
-
names_to_unlock, names_to_allow_prereleases_for, extended_explanation = find_names_to_relax(incompatibility)
|
87
|
+
names_to_unlock, names_to_allow_prereleases_for, names_to_allow_remote_specs_for, extended_explanation = find_names_to_relax(incompatibility)
|
88
88
|
|
89
|
-
names_to_relax = names_to_unlock + names_to_allow_prereleases_for
|
89
|
+
names_to_relax = names_to_unlock + names_to_allow_prereleases_for + names_to_allow_remote_specs_for
|
90
90
|
|
91
91
|
if names_to_relax.any?
|
92
92
|
if names_to_unlock.any?
|
@@ -96,11 +96,17 @@ module Bundler
|
|
96
96
|
end
|
97
97
|
|
98
98
|
if names_to_allow_prereleases_for.any?
|
99
|
-
Bundler.ui.debug "Found conflicts with dependencies with prereleases. Will
|
99
|
+
Bundler.ui.debug "Found conflicts with dependencies with prereleases. Will retry considering prereleases for #{names_to_allow_prereleases_for.join(", ")}...", true
|
100
100
|
|
101
101
|
@base.include_prereleases(names_to_allow_prereleases_for)
|
102
102
|
end
|
103
103
|
|
104
|
+
if names_to_allow_remote_specs_for.any?
|
105
|
+
Bundler.ui.debug "Found conflicts with local versions of #{names_to_allow_remote_specs_for.join(", ")}. Will retry considering remote versions...", true
|
106
|
+
|
107
|
+
@base.include_remote_specs(names_to_allow_remote_specs_for)
|
108
|
+
end
|
109
|
+
|
104
110
|
root, logger = setup_solver
|
105
111
|
|
106
112
|
Bundler.ui.debug "Retrying resolution...", true
|
@@ -120,6 +126,7 @@ module Bundler
|
|
120
126
|
def find_names_to_relax(incompatibility)
|
121
127
|
names_to_unlock = []
|
122
128
|
names_to_allow_prereleases_for = []
|
129
|
+
names_to_allow_remote_specs_for = []
|
123
130
|
extended_explanation = nil
|
124
131
|
|
125
132
|
while incompatibility.conflict?
|
@@ -134,6 +141,8 @@ module Bundler
|
|
134
141
|
names_to_unlock << name
|
135
142
|
elsif package.ignores_prereleases? && @all_specs[name].any? {|s| s.version.prerelease? }
|
136
143
|
names_to_allow_prereleases_for << name
|
144
|
+
elsif package.prefer_local? && @all_specs[name].any? {|s| !s.is_a?(StubSpecification) }
|
145
|
+
names_to_allow_remote_specs_for << name
|
137
146
|
end
|
138
147
|
|
139
148
|
no_versions_incompat = [cause.incompatibility, cause.satisfier].find {|incompat| incompat.cause.is_a?(PubGrub::Incompatibility::NoVersions) }
|
@@ -143,7 +152,7 @@ module Bundler
|
|
143
152
|
end
|
144
153
|
end
|
145
154
|
|
146
|
-
[names_to_unlock.uniq, names_to_allow_prereleases_for.uniq, extended_explanation]
|
155
|
+
[names_to_unlock.uniq, names_to_allow_prereleases_for.uniq, names_to_allow_remote_specs_for.uniq, extended_explanation]
|
147
156
|
end
|
148
157
|
|
149
158
|
def parse_dependency(package, dependency)
|
@@ -244,7 +253,7 @@ module Bundler
|
|
244
253
|
|
245
254
|
def all_versions_for(package)
|
246
255
|
name = package.name
|
247
|
-
results = (@base[name] +
|
256
|
+
results = (@base[name] + filter_specs(@all_specs[name], package)).uniq {|spec| [spec.version.hash, spec.platform] }
|
248
257
|
|
249
258
|
if name == "bundler" && !bundler_pinned_to_current_version?
|
250
259
|
bundler_spec = Gem.loaded_specs["bundler"]
|
@@ -368,12 +377,22 @@ module Bundler
|
|
368
377
|
end
|
369
378
|
end
|
370
379
|
|
380
|
+
def filter_specs(specs, package)
|
381
|
+
filter_remote_specs(filter_prereleases(specs, package), package)
|
382
|
+
end
|
383
|
+
|
371
384
|
def filter_prereleases(specs, package)
|
372
385
|
return specs unless package.ignores_prereleases? && specs.size > 1
|
373
386
|
|
374
387
|
specs.reject {|s| s.version.prerelease? }
|
375
388
|
end
|
376
389
|
|
390
|
+
def filter_remote_specs(specs, package)
|
391
|
+
return specs unless package.prefer_local?
|
392
|
+
|
393
|
+
specs.select {|s| s.is_a?(StubSpecification) }
|
394
|
+
end
|
395
|
+
|
377
396
|
# Ignore versions that depend on themselves incorrectly
|
378
397
|
def filter_invalid_self_dependencies(specs, name)
|
379
398
|
specs.reject do |s|
|
@@ -405,10 +424,13 @@ module Bundler
|
|
405
424
|
|
406
425
|
dep_range = dep_constraint.range
|
407
426
|
versions = select_sorted_versions(dep_package, dep_range)
|
408
|
-
if versions.empty?
|
409
|
-
|
410
|
-
|
411
|
-
|
427
|
+
if versions.empty?
|
428
|
+
if dep_package.ignores_prereleases? || dep_package.prefer_local?
|
429
|
+
@all_versions.delete(dep_package)
|
430
|
+
@sorted_versions.delete(dep_package)
|
431
|
+
end
|
432
|
+
dep_package.consider_prereleases! if dep_package.ignores_prereleases?
|
433
|
+
dep_package.consider_remote_versions! if dep_package.prefer_local?
|
412
434
|
versions = select_sorted_versions(dep_package, dep_range)
|
413
435
|
end
|
414
436
|
|
@@ -84,6 +84,10 @@ module Bundler
|
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
87
|
+
def not_a_bare_repository?
|
88
|
+
git_local("rev-parse", "--is-bare-repository", dir: path).strip == "false"
|
89
|
+
end
|
90
|
+
|
87
91
|
def contains?(commit)
|
88
92
|
allowed_with_path do
|
89
93
|
result, status = git_null("branch", "--contains", commit, dir: path)
|
@@ -332,8 +336,6 @@ module Bundler
|
|
332
336
|
config_auth = Bundler.settings[remote.to_s] || Bundler.settings[remote.host]
|
333
337
|
remote.userinfo ||= config_auth
|
334
338
|
remote.to_s
|
335
|
-
elsif File.exist?(uri)
|
336
|
-
"file://#{uri}"
|
337
339
|
else
|
338
340
|
uri.to_s
|
339
341
|
end
|
data/lib/bundler/source/git.rb
CHANGED
@@ -188,9 +188,11 @@ module Bundler
|
|
188
188
|
end
|
189
189
|
|
190
190
|
def specs(*)
|
191
|
-
set_cache_path!(app_cache_path) if
|
191
|
+
set_cache_path!(app_cache_path) if use_app_cache?
|
192
192
|
|
193
193
|
if requires_checkout? && !@copied
|
194
|
+
FileUtils.rm_rf(app_cache_path) if use_app_cache? && git_proxy.not_a_bare_repository?
|
195
|
+
|
194
196
|
fetch
|
195
197
|
checkout
|
196
198
|
end
|
@@ -321,6 +323,10 @@ module Bundler
|
|
321
323
|
cached_revision && super
|
322
324
|
end
|
323
325
|
|
326
|
+
def use_app_cache?
|
327
|
+
has_app_cache? && !local?
|
328
|
+
end
|
329
|
+
|
324
330
|
def requires_checkout?
|
325
331
|
allow_git_ops? && !local? && !cached_revision_checked_out?
|
326
332
|
end
|
@@ -10,11 +10,15 @@ TODO: Replace `UPDATE_WITH_YOUR_GEM_NAME_IMMEDIATELY_AFTER_RELEASE_TO_RUBYGEMS_O
|
|
10
10
|
|
11
11
|
Install the gem and add to the application's Gemfile by executing:
|
12
12
|
|
13
|
-
|
13
|
+
```bash
|
14
|
+
bundle add UPDATE_WITH_YOUR_GEM_NAME_IMMEDIATELY_AFTER_RELEASE_TO_RUBYGEMS_ORG
|
15
|
+
```
|
14
16
|
|
15
17
|
If bundler is not being used to manage dependencies, install the gem by executing:
|
16
18
|
|
17
|
-
|
19
|
+
```bash
|
20
|
+
gem install UPDATE_WITH_YOUR_GEM_NAME_IMMEDIATELY_AFTER_RELEASE_TO_RUBYGEMS_ORG
|
21
|
+
```
|
18
22
|
|
19
23
|
## Usage
|
20
24
|
|
data/lib/bundler/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bundler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.5.
|
4
|
+
version: 2.5.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- André Arko
|
@@ -22,7 +22,7 @@ authors:
|
|
22
22
|
autorequire:
|
23
23
|
bindir: exe
|
24
24
|
cert_chain: []
|
25
|
-
date: 2024-08-
|
25
|
+
date: 2024-08-26 00:00:00.000000000 Z
|
26
26
|
dependencies: []
|
27
27
|
description: Bundler manages an application's dependencies through its entire life,
|
28
28
|
across many machines, systematically and repeatably
|
@@ -400,7 +400,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
400
400
|
- !ruby/object:Gem::Version
|
401
401
|
version: 3.2.3
|
402
402
|
requirements: []
|
403
|
-
rubygems_version: 3.5.
|
403
|
+
rubygems_version: 3.5.18
|
404
404
|
signing_key:
|
405
405
|
specification_version: 4
|
406
406
|
summary: The best way to manage your application's dependencies
|