rubygems-update 3.3.22 → 3.3.24
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 +25 -0
- data/Manifest.txt +1 -1
- data/POLICIES.md +38 -5
- data/bundler/CHANGELOG.md +29 -0
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli/init.rb +5 -1
- data/bundler/lib/bundler/definition.rb +12 -40
- data/bundler/lib/bundler/dsl.rb +0 -1
- data/bundler/lib/bundler/endpoint_specification.rb +4 -0
- data/bundler/lib/bundler/gem_helpers.rb +0 -1
- data/bundler/lib/bundler/gem_version_promoter.rb +6 -7
- data/bundler/lib/bundler/index.rb +3 -27
- data/bundler/lib/bundler/injector.rb +1 -1
- data/bundler/lib/bundler/lazy_specification.rb +7 -11
- data/bundler/lib/bundler/remote_specification.rb +6 -2
- data/bundler/lib/bundler/resolver/base.rb +1 -1
- data/bundler/lib/bundler/resolver/spec_group.rb +22 -44
- data/bundler/lib/bundler/resolver.rb +31 -76
- data/bundler/lib/bundler/rubygems_ext.rb +12 -1
- data/bundler/lib/bundler/shared_helpers.rb +1 -2
- data/bundler/lib/bundler/spec_set.rb +1 -1
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +5 -4
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler.rb +0 -1
- data/lib/rubygems/gemcutter_utilities.rb +8 -1
- data/lib/rubygems/package.rb +9 -4
- data/lib/rubygems/platform.rb +17 -1
- data/lib/rubygems/resolver.rb +1 -1
- data/lib/rubygems.rb +1 -1
- data/rubygems-update.gemspec +1 -1
- data/test/rubygems/alternate_cert.pem +14 -14
- data/test/rubygems/alternate_cert_32.pem +15 -15
- data/test/rubygems/alternate_key.pem +25 -25
- data/test/rubygems/child_cert.pem +15 -16
- data/test/rubygems/child_cert_32.pem +15 -16
- data/test/rubygems/child_key.pem +25 -25
- data/test/rubygems/encrypted_private_key.pem +26 -26
- data/test/rubygems/expired_cert.pem +15 -15
- data/test/rubygems/future_cert.pem +15 -15
- data/test/rubygems/future_cert_32.pem +15 -15
- data/test/rubygems/grandchild_cert.pem +15 -16
- data/test/rubygems/grandchild_cert_32.pem +15 -16
- data/test/rubygems/grandchild_key.pem +25 -25
- data/test/rubygems/helper.rb +23 -17
- data/test/rubygems/invalid_issuer_cert.pem +16 -16
- data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
- data/test/rubygems/invalid_key.pem +25 -25
- data/test/rubygems/invalid_signer_cert.pem +15 -15
- data/test/rubygems/invalid_signer_cert_32.pem +15 -15
- data/test/rubygems/invalidchild_cert.pem +15 -16
- data/test/rubygems/invalidchild_cert_32.pem +15 -16
- data/test/rubygems/invalidchild_key.pem +25 -25
- data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
- data/test/rubygems/private_key.pem +25 -25
- data/test/rubygems/public_cert.pem +16 -16
- data/test/rubygems/public_cert_32.pem +15 -15
- data/test/rubygems/public_key.pem +7 -7
- data/test/rubygems/test_gem.rb +254 -212
- data/test/rubygems/test_gem_commands_owner_command.rb +105 -24
- data/test/rubygems/test_gem_commands_push_command.rb +44 -23
- data/test/rubygems/test_gem_commands_signin_command.rb +28 -3
- data/test/rubygems/test_gem_commands_yank_command.rb +9 -9
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.lock +4 -4
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.toml +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +4 -4
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
- data/test/rubygems/test_gem_gemcutter_utilities.rb +16 -12
- data/test/rubygems/test_gem_package.rb +15 -0
- data/test/rubygems/test_gem_platform.rb +35 -0
- data/test/rubygems/test_gem_resolver.rb +33 -0
- data/test/rubygems/test_gem_security.rb +5 -5
- data/test/rubygems/test_gem_security_signer.rb +6 -6
- data/test/rubygems/test_require.rb +5 -5
- data/test/rubygems/utilities.rb +36 -14
- data/test/rubygems/wrong_key_cert.pem +15 -15
- data/test/rubygems/wrong_key_cert_32.pem +15 -15
- metadata +4 -4
- data/bundler/lib/bundler/dep_proxy.rb +0 -55
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 65c7d26883d0730029624be1ed4fd91012021d0db47680ee7624b49befff19fa
|
|
4
|
+
data.tar.gz: c6e162899091bcd0151d65e798d94291f6355c01b89f240e38ec93533a70287a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 409a780fb1964ad6f14355c9c1df5e87d0d0dc9a4e54edc54dbf16ef3425bd8bb237c0eae9fea20d05d9e31f4983d7a34c31ef1c651ba514c22c6cddadfcc461
|
|
7
|
+
data.tar.gz: 723c63a66cf6288ddaa7bfc921195501a7b54c860a81444114553008ab1faadbd26bfae19cbd24cc15fe476923a3791fa04876501dfae9838de8d39b64140a8d
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,28 @@
|
|
|
1
|
+
# 3.3.24 / 2022-10-17
|
|
2
|
+
|
|
3
|
+
## Enhancements:
|
|
4
|
+
|
|
5
|
+
* Installs bundler 2.3.24 as a default gem.
|
|
6
|
+
|
|
7
|
+
# 3.3.23 / 2022-10-05
|
|
8
|
+
|
|
9
|
+
## Enhancements:
|
|
10
|
+
|
|
11
|
+
* Add better error handling for permanent redirect responses. Pull request
|
|
12
|
+
#5931 by jenshenny
|
|
13
|
+
* Installs bundler 2.3.23 as a default gem.
|
|
14
|
+
|
|
15
|
+
## Bug fixes:
|
|
16
|
+
|
|
17
|
+
* Fix generic arm platform matching against runtime arm platforms with
|
|
18
|
+
eabi modifiers. Pull request #5957 by deivid-rodriguez
|
|
19
|
+
* Fix `Gem::Platform.match` not handling String argument properly. Pull
|
|
20
|
+
request #5939 by flavorjones
|
|
21
|
+
* Fix resolution on non-musl platforms. Pull request #5915 by
|
|
22
|
+
deivid-rodriguez
|
|
23
|
+
* Mask the file mode when extracting files. Pull request #5906 by
|
|
24
|
+
kddnewton
|
|
25
|
+
|
|
1
26
|
# 3.3.22 / 2022-09-07
|
|
2
27
|
|
|
3
28
|
## Enhancements:
|
data/Manifest.txt
CHANGED
|
@@ -57,7 +57,6 @@ bundler/lib/bundler/compact_index_client/updater.rb
|
|
|
57
57
|
bundler/lib/bundler/constants.rb
|
|
58
58
|
bundler/lib/bundler/current_ruby.rb
|
|
59
59
|
bundler/lib/bundler/definition.rb
|
|
60
|
-
bundler/lib/bundler/dep_proxy.rb
|
|
61
60
|
bundler/lib/bundler/dependency.rb
|
|
62
61
|
bundler/lib/bundler/deployment.rb
|
|
63
62
|
bundler/lib/bundler/deprecate.rb
|
|
@@ -577,6 +576,7 @@ test/rubygems/invalidchild_cert.pem
|
|
|
577
576
|
test/rubygems/invalidchild_cert_32.pem
|
|
578
577
|
test/rubygems/invalidchild_key.pem
|
|
579
578
|
test/rubygems/package/tar_test_case.rb
|
|
579
|
+
test/rubygems/packages/Bluebie-legs-0.6.2.gem
|
|
580
580
|
test/rubygems/packages/ascii_binder-0.1.10.1.gem
|
|
581
581
|
test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem
|
|
582
582
|
test/rubygems/plugin/exception/rubygems_plugin.rb
|
data/POLICIES.md
CHANGED
|
@@ -42,8 +42,19 @@ at version 2.7, so when RubyGems 2.8 is released, it will only support Ruby
|
|
|
42
42
|
|
|
43
43
|
## Release Process
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
### Permissions
|
|
46
|
+
|
|
47
|
+
You'll need the following environment variables set to release RubyGems &
|
|
48
|
+
Bundler:
|
|
49
|
+
|
|
50
|
+
* AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY: to be able to push RubyGems zip
|
|
51
|
+
files to s3 so that they appear at RubyGems [download page].
|
|
52
|
+
|
|
53
|
+
* GITHUB_RELEASE_PAT: A [GitHub PAT] with repo permissions, in order to push
|
|
54
|
+
GitHub releases and to use the GitHub API for changelog generation.
|
|
55
|
+
|
|
56
|
+
[download page]: https://rubygems.org/pages/download
|
|
57
|
+
[GitHub PAT]: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token
|
|
47
58
|
|
|
48
59
|
### Recommendations for security releases
|
|
49
60
|
|
|
@@ -54,14 +65,36 @@ smooth and no needed steps are missed.
|
|
|
54
65
|
have to work on weekends.
|
|
55
66
|
* Continue with the regular release process below.
|
|
56
67
|
|
|
68
|
+
### Automatic changelog and backport generation
|
|
69
|
+
|
|
70
|
+
PR labels and titles are used to automatically generate changelogs for patch and
|
|
71
|
+
minor releases.
|
|
72
|
+
|
|
73
|
+
When releasing, a changelog generation script goes through all PRs that have
|
|
74
|
+
never made it into a release, and selects only the ones with specific labels as
|
|
75
|
+
detailed in the `.changelog.yml` and `bundler/.changelog.yml` files. Those
|
|
76
|
+
particular PRs get backported to the stable branch and included in the release
|
|
77
|
+
changelog.
|
|
78
|
+
|
|
79
|
+
If PRs don't have a proper label, they won't be backported to patch releases.
|
|
80
|
+
|
|
81
|
+
If you want a PR to be backported to a patch level release, but don't want to
|
|
82
|
+
include it in the changelog, you can use the special `rubygems: backport` and
|
|
83
|
+
`bundler: backport` labels. For example, this is useful when backporting a PR
|
|
84
|
+
generates conflicts that are solved by backporting another PR with no user
|
|
85
|
+
visible changes. You can use these special labels to also backport the other PR
|
|
86
|
+
and not get any conflicts.
|
|
57
87
|
|
|
58
88
|
### Steps for patch releases
|
|
59
89
|
|
|
60
90
|
* Confirm all PRs that you want backported are properly tagged with `rubygems:
|
|
61
91
|
<type>` or `bundler: <type>` labels at GitHub.
|
|
62
|
-
* Run `rake prepare_release[<target_version>]
|
|
63
|
-
|
|
64
|
-
|
|
92
|
+
* Run `rake prepare_release[<target_version>]`. This will create a PR to the
|
|
93
|
+
stable branch with the backports included in the release, and proper
|
|
94
|
+
changelogs and version bumps. It will also create a PR to merge release
|
|
95
|
+
changelogs into master.
|
|
96
|
+
* Once CI passes, merge the release PR, switch to the stable branch and pull
|
|
97
|
+
the PR just merged.
|
|
65
98
|
* Release `bundler` with `(cd bundler && bin/rake release)`.
|
|
66
99
|
* Release `rubygems` with `rake release`.
|
|
67
100
|
|
data/bundler/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,32 @@
|
|
|
1
|
+
# 2.3.24 (October 17, 2022)
|
|
2
|
+
|
|
3
|
+
## Enhancements:
|
|
4
|
+
|
|
5
|
+
- Only add extra resolver spec group for Ruby platform when needed [#5698](https://github.com/rubygems/rubygems/pull/5698)
|
|
6
|
+
- Fix little UI issue when bundler shows duplicated gems in a list [#5965](https://github.com/rubygems/rubygems/pull/5965)
|
|
7
|
+
|
|
8
|
+
## Bug fixes:
|
|
9
|
+
|
|
10
|
+
- Fix incorrect materialization on Windows [#5975](https://github.com/rubygems/rubygems/pull/5975)
|
|
11
|
+
|
|
12
|
+
# 2.3.23 (October 5, 2022)
|
|
13
|
+
|
|
14
|
+
## Enhancements:
|
|
15
|
+
|
|
16
|
+
- Update GitLab CI template with new one [#5944](https://github.com/rubygems/rubygems/pull/5944)
|
|
17
|
+
|
|
18
|
+
## Bug fixes:
|
|
19
|
+
|
|
20
|
+
- Fix `bundle init` not respecting umask in generated gem's Gemfile [#5947](https://github.com/rubygems/rubygems/pull/5947)
|
|
21
|
+
|
|
22
|
+
## Performance:
|
|
23
|
+
|
|
24
|
+
- Further speed up Bundler by not sorting specs unnecessarily [#5868](https://github.com/rubygems/rubygems/pull/5868)
|
|
25
|
+
|
|
26
|
+
## Documentation:
|
|
27
|
+
|
|
28
|
+
- Update Bundler new feature instructions [#5912](https://github.com/rubygems/rubygems/pull/5912)
|
|
29
|
+
|
|
1
30
|
# 2.3.22 (September 7, 2022)
|
|
2
31
|
|
|
3
32
|
## 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 = "2022-
|
|
8
|
-
@git_commit_sha = "
|
|
7
|
+
@built_at = "2022-10-17".freeze
|
|
8
|
+
@git_commit_sha = "b835c7ea15".freeze
|
|
9
9
|
@release = true
|
|
10
10
|
# end ivars
|
|
11
11
|
|
|
@@ -32,7 +32,11 @@ module Bundler
|
|
|
32
32
|
file << spec.to_gemfile
|
|
33
33
|
end
|
|
34
34
|
else
|
|
35
|
-
|
|
35
|
+
File.open(File.expand_path("../templates/#{gemfile}", __dir__), "r") do |template|
|
|
36
|
+
File.open(gemfile, "wb") do |destination|
|
|
37
|
+
IO.copy_stream(template, destination)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
36
40
|
end
|
|
37
41
|
|
|
38
42
|
puts "Writing new #{gemfile} to #{SharedHelpers.pwd}/#{gemfile}"
|
|
@@ -106,6 +106,7 @@ module Bundler
|
|
|
106
106
|
@locked_gems = nil
|
|
107
107
|
@locked_deps = {}
|
|
108
108
|
@locked_specs = SpecSet.new([])
|
|
109
|
+
@originally_locked_specs = @locked_specs
|
|
109
110
|
@locked_sources = []
|
|
110
111
|
@locked_platforms = []
|
|
111
112
|
end
|
|
@@ -138,8 +139,8 @@ module Bundler
|
|
|
138
139
|
if @unlock[:conservative]
|
|
139
140
|
@unlock[:gems] ||= @dependencies.map(&:name)
|
|
140
141
|
else
|
|
141
|
-
eager_unlock =
|
|
142
|
-
@unlock[:gems] = @locked_specs.for(eager_unlock, false, platforms).map(&:name)
|
|
142
|
+
eager_unlock = (@unlock[:gems] || []).map {|name| Dependency.new(name, ">= 0") }
|
|
143
|
+
@unlock[:gems] = @locked_specs.for(eager_unlock, false, platforms).map(&:name).uniq
|
|
143
144
|
end
|
|
144
145
|
|
|
145
146
|
@dependency_changes = converge_dependencies
|
|
@@ -149,18 +150,7 @@ module Bundler
|
|
|
149
150
|
end
|
|
150
151
|
|
|
151
152
|
def gem_version_promoter
|
|
152
|
-
@gem_version_promoter ||=
|
|
153
|
-
locked_specs =
|
|
154
|
-
if unlocking? && @locked_specs.empty? && !@lockfile_contents.empty?
|
|
155
|
-
# Definition uses an empty set of locked_specs to indicate all gems
|
|
156
|
-
# are unlocked, but GemVersionPromoter needs the locked_specs
|
|
157
|
-
# for conservative comparison.
|
|
158
|
-
Bundler::SpecSet.new(@locked_gems.specs)
|
|
159
|
-
else
|
|
160
|
-
@locked_specs
|
|
161
|
-
end
|
|
162
|
-
GemVersionPromoter.new(locked_specs, @unlock[:gems])
|
|
163
|
-
end
|
|
153
|
+
@gem_version_promoter ||= GemVersionPromoter.new(@originally_locked_specs, @unlock[:gems])
|
|
164
154
|
end
|
|
165
155
|
|
|
166
156
|
def resolve_only_locally!
|
|
@@ -234,7 +224,7 @@ module Bundler
|
|
|
234
224
|
|
|
235
225
|
def current_dependencies
|
|
236
226
|
dependencies.select do |d|
|
|
237
|
-
d.should_include? && !d.gem_platforms(
|
|
227
|
+
d.should_include? && !d.gem_platforms([generic_local_platform]).empty?
|
|
238
228
|
end
|
|
239
229
|
end
|
|
240
230
|
|
|
@@ -258,10 +248,9 @@ module Bundler
|
|
|
258
248
|
|
|
259
249
|
def dependencies_for(groups)
|
|
260
250
|
groups.map!(&:to_sym)
|
|
261
|
-
|
|
251
|
+
current_dependencies.reject do |d|
|
|
262
252
|
(d.groups & groups).empty?
|
|
263
253
|
end
|
|
264
|
-
expand_dependencies(deps)
|
|
265
254
|
end
|
|
266
255
|
|
|
267
256
|
# Resolve all the dependencies specified in Gemfile. It ensures that
|
|
@@ -484,17 +473,17 @@ module Bundler
|
|
|
484
473
|
def resolver
|
|
485
474
|
@resolver ||= begin
|
|
486
475
|
last_resolve = converge_locked_specs
|
|
487
|
-
remove_ruby_from_platforms_if_necessary!(
|
|
476
|
+
remove_ruby_from_platforms_if_necessary!(current_dependencies)
|
|
488
477
|
Resolver.new(source_requirements, last_resolve, gem_version_promoter, additional_base_requirements_for_resolve(last_resolve), platforms)
|
|
489
478
|
end
|
|
490
479
|
end
|
|
491
480
|
|
|
492
481
|
def expanded_dependencies
|
|
493
|
-
@expanded_dependencies ||=
|
|
482
|
+
@expanded_dependencies ||= dependencies + metadata_dependencies
|
|
494
483
|
end
|
|
495
484
|
|
|
496
485
|
def filter_specs(specs, deps)
|
|
497
|
-
SpecSet.new(specs).for(
|
|
486
|
+
SpecSet.new(specs).for(deps, false, platforms)
|
|
498
487
|
end
|
|
499
488
|
|
|
500
489
|
def materialize(dependencies)
|
|
@@ -588,8 +577,8 @@ module Bundler
|
|
|
588
577
|
].select(&:first).map(&:last).join(", ")
|
|
589
578
|
end
|
|
590
579
|
|
|
591
|
-
def pretty_dep(dep
|
|
592
|
-
SharedHelpers.pretty_dependency(dep
|
|
580
|
+
def pretty_dep(dep)
|
|
581
|
+
SharedHelpers.pretty_dependency(dep)
|
|
593
582
|
end
|
|
594
583
|
|
|
595
584
|
# Check if the specs of the given source changed
|
|
@@ -802,23 +791,6 @@ module Bundler
|
|
|
802
791
|
]
|
|
803
792
|
end
|
|
804
793
|
|
|
805
|
-
def expand_dependencies(dependencies, remote = false)
|
|
806
|
-
deps = []
|
|
807
|
-
dependencies.each do |dep|
|
|
808
|
-
dep = Dependency.new(dep, ">= 0") unless dep.respond_to?(:name)
|
|
809
|
-
next unless remote || dep.current_platform?
|
|
810
|
-
target_platforms = dep.gem_platforms(remote ? @platforms : [generic_local_platform])
|
|
811
|
-
deps += expand_dependency_with_platforms(dep, target_platforms)
|
|
812
|
-
end
|
|
813
|
-
deps
|
|
814
|
-
end
|
|
815
|
-
|
|
816
|
-
def expand_dependency_with_platforms(dep, platforms)
|
|
817
|
-
platforms.map do |p|
|
|
818
|
-
DepProxy.get_proxy(dep, p)
|
|
819
|
-
end
|
|
820
|
-
end
|
|
821
|
-
|
|
822
794
|
def source_requirements
|
|
823
795
|
# Record the specs available in each gem's source, so that those
|
|
824
796
|
# specs will be available later when the resolver knows where to
|
|
@@ -890,7 +862,7 @@ module Bundler
|
|
|
890
862
|
Bundler.local_platform == Gem::Platform::RUBY ||
|
|
891
863
|
!platforms.include?(Gem::Platform::RUBY) ||
|
|
892
864
|
(@new_platform && platforms.last == Gem::Platform::RUBY) ||
|
|
893
|
-
!@originally_locked_specs.incomplete_ruby_specs?(
|
|
865
|
+
!@originally_locked_specs.incomplete_ruby_specs?(dependencies)
|
|
894
866
|
|
|
895
867
|
remove_platform(Gem::Platform::RUBY)
|
|
896
868
|
add_current_platform
|
data/bundler/lib/bundler/dsl.rb
CHANGED
|
@@ -67,7 +67,6 @@ module Bundler
|
|
|
67
67
|
|
|
68
68
|
gemspecs = Gem::Util.glob_files_in_dir("{,*}.gemspec", expanded_path).map {|g| Bundler.load_gemspec(g) }.compact
|
|
69
69
|
gemspecs.reject! {|s| s.name != name } if name
|
|
70
|
-
Index.sort_specs(gemspecs)
|
|
71
70
|
specs_by_name_and_version = gemspecs.group_by {|s| [s.name, s.version] }
|
|
72
71
|
|
|
73
72
|
case specs_by_name_and_version.size
|
|
@@ -5,7 +5,6 @@ module Bundler
|
|
|
5
5
|
GENERIC_CACHE = { Gem::Platform::RUBY => Gem::Platform::RUBY } # rubocop:disable Style/MutableConstant
|
|
6
6
|
GENERICS = [
|
|
7
7
|
[Gem::Platform.new("java"), Gem::Platform.new("java")],
|
|
8
|
-
[Gem::Platform.new("universal-java"), Gem::Platform.new("java")],
|
|
9
8
|
[Gem::Platform.new("mswin32"), Gem::Platform.new("mswin32")],
|
|
10
9
|
[Gem::Platform.new("mswin64"), Gem::Platform.new("mswin64")],
|
|
11
10
|
[Gem::Platform.new("universal-mingw32"), Gem::Platform.new("universal-mingw32")],
|
|
@@ -116,15 +116,14 @@ module Bundler
|
|
|
116
116
|
end
|
|
117
117
|
|
|
118
118
|
def sort_dep_specs(spec_groups, locked_spec)
|
|
119
|
-
|
|
120
|
-
@gem_name = locked_spec
|
|
121
|
-
@locked_version = locked_spec.version
|
|
119
|
+
@locked_version = locked_spec&.version
|
|
120
|
+
@gem_name = locked_spec&.name
|
|
122
121
|
|
|
123
122
|
result = spec_groups.sort do |a, b|
|
|
124
123
|
@a_ver = a.version
|
|
125
124
|
@b_ver = b.version
|
|
126
125
|
|
|
127
|
-
unless @prerelease_specified[@gem_name]
|
|
126
|
+
unless @gem_name && @prerelease_specified[@gem_name]
|
|
128
127
|
a_pre = @a_ver.prerelease?
|
|
129
128
|
b_pre = @b_ver.prerelease?
|
|
130
129
|
|
|
@@ -148,7 +147,7 @@ module Bundler
|
|
|
148
147
|
end
|
|
149
148
|
|
|
150
149
|
def either_version_older_than_locked
|
|
151
|
-
@a_ver < @locked_version || @b_ver < @locked_version
|
|
150
|
+
@locked_version && (@a_ver < @locked_version || @b_ver < @locked_version)
|
|
152
151
|
end
|
|
153
152
|
|
|
154
153
|
def segments_do_not_match(level)
|
|
@@ -157,7 +156,7 @@ module Bundler
|
|
|
157
156
|
end
|
|
158
157
|
|
|
159
158
|
def unlocking_gem?
|
|
160
|
-
unlock_gems.empty? || unlock_gems.include?(@gem_name)
|
|
159
|
+
unlock_gems.empty? || (@gem_name && unlock_gems.include?(@gem_name))
|
|
161
160
|
end
|
|
162
161
|
|
|
163
162
|
# Specific version moves can't always reliably be done during sorting
|
|
@@ -165,7 +164,7 @@ module Bundler
|
|
|
165
164
|
def post_sort(result)
|
|
166
165
|
# default :major behavior in Bundler does not do this
|
|
167
166
|
return result if major?
|
|
168
|
-
if unlocking_gem?
|
|
167
|
+
if unlocking_gem? || @locked_version.nil?
|
|
169
168
|
result
|
|
170
169
|
else
|
|
171
170
|
move_version_to_end(result, @locked_version)
|
|
@@ -57,36 +57,13 @@ module Bundler
|
|
|
57
57
|
# Search this index's specs, and any source indexes that this index knows
|
|
58
58
|
# about, returning all of the results.
|
|
59
59
|
def search(query)
|
|
60
|
-
sort_specs(unsorted_search(query))
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def unsorted_search(query)
|
|
64
60
|
results = local_search(query)
|
|
65
|
-
|
|
66
|
-
seen = results.map(&:full_name).uniq unless @sources.empty?
|
|
61
|
+
return results unless @sources.any?
|
|
67
62
|
|
|
68
63
|
@sources.each do |source|
|
|
69
|
-
source.
|
|
70
|
-
next if seen.include?(spec.full_name)
|
|
71
|
-
|
|
72
|
-
seen << spec.full_name
|
|
73
|
-
results << spec
|
|
74
|
-
end
|
|
64
|
+
results.concat(source.search(query))
|
|
75
65
|
end
|
|
76
|
-
|
|
77
|
-
results
|
|
78
|
-
end
|
|
79
|
-
protected :unsorted_search
|
|
80
|
-
|
|
81
|
-
def self.sort_specs(specs)
|
|
82
|
-
specs.sort_by do |s|
|
|
83
|
-
platform_string = s.platform.to_s
|
|
84
|
-
[s.version, platform_string == RUBY ? NULL : platform_string]
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
def sort_specs(specs)
|
|
89
|
-
self.class.sort_specs(specs)
|
|
66
|
+
results.uniq(&:full_name)
|
|
90
67
|
end
|
|
91
68
|
|
|
92
69
|
def local_search(query)
|
|
@@ -94,7 +71,6 @@ module Bundler
|
|
|
94
71
|
when Gem::Specification, RemoteSpecification, LazySpecification, EndpointSpecification then search_by_spec(query)
|
|
95
72
|
when String then specs_by_name(query)
|
|
96
73
|
when Gem::Dependency then search_by_dependency(query)
|
|
97
|
-
when DepProxy then search_by_dependency(query.dep)
|
|
98
74
|
else
|
|
99
75
|
raise "You can't search for a #{query.inspect}."
|
|
100
76
|
end
|
|
@@ -70,7 +70,7 @@ module Bundler
|
|
|
70
70
|
|
|
71
71
|
show_warning("No gems were removed from the gemfile.") if deps.empty?
|
|
72
72
|
|
|
73
|
-
deps.each {|dep| Bundler.ui.confirm "#{SharedHelpers.pretty_dependency(dep
|
|
73
|
+
deps.each {|dep| Bundler.ui.confirm "#{SharedHelpers.pretty_dependency(dep)} was removed." }
|
|
74
74
|
end
|
|
75
75
|
|
|
76
76
|
# Invalidate the cached Bundler.definition.
|
|
@@ -77,7 +77,7 @@ module Bundler
|
|
|
77
77
|
source.local!
|
|
78
78
|
|
|
79
79
|
candidates = if source.is_a?(Source::Path) || !ruby_platform_materializes_to_ruby_platform?
|
|
80
|
-
target_platform = ruby_platform_materializes_to_ruby_platform? ? platform :
|
|
80
|
+
target_platform = ruby_platform_materializes_to_ruby_platform? ? platform : local_platform
|
|
81
81
|
|
|
82
82
|
source.specs.search(Dependency.new(name, version)).select do |spec|
|
|
83
83
|
MatchPlatform.platforms_match?(spec.platform, target_platform)
|
|
@@ -120,7 +120,7 @@ module Bundler
|
|
|
120
120
|
end
|
|
121
121
|
|
|
122
122
|
def identifier
|
|
123
|
-
@__identifier ||= [name, version,
|
|
123
|
+
@__identifier ||= [name, version, platform.to_s]
|
|
124
124
|
end
|
|
125
125
|
|
|
126
126
|
def git_version
|
|
@@ -128,13 +128,6 @@ module Bundler
|
|
|
128
128
|
" #{source.revision[0..6]}"
|
|
129
129
|
end
|
|
130
130
|
|
|
131
|
-
protected
|
|
132
|
-
|
|
133
|
-
def platform_string
|
|
134
|
-
platform_string = platform.to_s
|
|
135
|
-
platform_string == Index::RUBY ? Index::NULL : platform_string
|
|
136
|
-
end
|
|
137
|
-
|
|
138
131
|
private
|
|
139
132
|
|
|
140
133
|
def to_ary
|
|
@@ -151,7 +144,8 @@ module Bundler
|
|
|
151
144
|
|
|
152
145
|
#
|
|
153
146
|
# For backwards compatibility with existing lockfiles, if the most specific
|
|
154
|
-
# locked platform is
|
|
147
|
+
# locked platform is not a specific platform like x86_64-linux or
|
|
148
|
+
# universal-java-11, then we keep the previous behaviour of resolving the
|
|
155
149
|
# best platform variant at materiliazation time. For previous bundler
|
|
156
150
|
# versions (before 2.2.0) this was always the case (except when the lockfile
|
|
157
151
|
# only included non-ruby platforms), but we're also keeping this behaviour
|
|
@@ -159,7 +153,9 @@ module Bundler
|
|
|
159
153
|
# explicitly add a more specific platform.
|
|
160
154
|
#
|
|
161
155
|
def ruby_platform_materializes_to_ruby_platform?
|
|
162
|
-
|
|
156
|
+
generic_platform = generic_local_platform == Gem::Platform::JAVA ? Gem::Platform::JAVA : Gem::Platform::RUBY
|
|
157
|
+
|
|
158
|
+
!Bundler.most_specific_locked_platform?(generic_platform) || force_ruby_platform || Bundler.settings[:force_ruby_platform]
|
|
163
159
|
end
|
|
164
160
|
end
|
|
165
161
|
end
|
|
@@ -29,11 +29,15 @@ module Bundler
|
|
|
29
29
|
@platform = _remote_specification.platform
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
+
def identifier
|
|
33
|
+
@__identifier ||= [name, version, @platform.to_s]
|
|
34
|
+
end
|
|
35
|
+
|
|
32
36
|
def full_name
|
|
33
|
-
if @
|
|
37
|
+
if @platform == Gem::Platform::RUBY
|
|
34
38
|
"#{@name}-#{@version}"
|
|
35
39
|
else
|
|
36
|
-
"#{@name}-#{@version}-#{@
|
|
40
|
+
"#{@name}-#{@version}-#{@platform}"
|
|
37
41
|
end
|
|
38
42
|
end
|
|
39
43
|
|
|
@@ -40,7 +40,7 @@ module Bundler
|
|
|
40
40
|
base_requirements = {}
|
|
41
41
|
@base.each do |ls|
|
|
42
42
|
dep = Dependency.new(ls.name, ls.version)
|
|
43
|
-
base_requirements[ls.name] =
|
|
43
|
+
base_requirements[ls.name] = dep
|
|
44
44
|
end
|
|
45
45
|
@additional_base_requirements.each {|d| base_requirements[d.name] = d }
|
|
46
46
|
base_requirements
|
|
@@ -6,40 +6,23 @@ module Bundler
|
|
|
6
6
|
attr_accessor :name, :version, :source
|
|
7
7
|
attr_accessor :activated_platforms, :force_ruby_platform
|
|
8
8
|
|
|
9
|
-
def
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
new(specific_platform_specs.first, specs, platforms)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def initialize(exemplary_spec, specs, relevant_platforms)
|
|
19
|
-
@exemplary_spec = exemplary_spec
|
|
20
|
-
@name = exemplary_spec.name
|
|
21
|
-
@version = exemplary_spec.version
|
|
22
|
-
@source = exemplary_spec.source
|
|
9
|
+
def initialize(specs, relevant_platforms)
|
|
10
|
+
@exemplary_spec = specs.first
|
|
11
|
+
@name = @exemplary_spec.name
|
|
12
|
+
@version = @exemplary_spec.version
|
|
13
|
+
@source = @exemplary_spec.source
|
|
23
14
|
|
|
24
15
|
@activated_platforms = relevant_platforms
|
|
25
|
-
@dependencies = Hash.new do |dependencies, platforms|
|
|
26
|
-
dependencies[platforms] = dependencies_for(platforms)
|
|
27
|
-
end
|
|
28
16
|
@specs = specs
|
|
29
17
|
end
|
|
30
18
|
|
|
31
19
|
def to_specs
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
lazy_spec.force_ruby_platform = force_ruby_platform
|
|
39
|
-
lazy_spec.dependencies.replace s.dependencies
|
|
40
|
-
lazy_spec
|
|
41
|
-
end
|
|
42
|
-
end.flatten.compact.uniq
|
|
20
|
+
@specs.map do |s|
|
|
21
|
+
lazy_spec = LazySpecification.new(name, version, s.platform, source)
|
|
22
|
+
lazy_spec.force_ruby_platform = force_ruby_platform
|
|
23
|
+
lazy_spec.dependencies.replace s.dependencies
|
|
24
|
+
lazy_spec
|
|
25
|
+
end
|
|
43
26
|
end
|
|
44
27
|
|
|
45
28
|
def to_s
|
|
@@ -48,7 +31,9 @@ module Bundler
|
|
|
48
31
|
end
|
|
49
32
|
|
|
50
33
|
def dependencies_for_activated_platforms
|
|
51
|
-
@
|
|
34
|
+
@dependencies_for_activated_platforms ||= @specs.map do |spec|
|
|
35
|
+
__dependencies(spec) + metadata_dependencies(spec)
|
|
36
|
+
end.flatten.uniq
|
|
52
37
|
end
|
|
53
38
|
|
|
54
39
|
def ==(other)
|
|
@@ -79,35 +64,28 @@ module Bundler
|
|
|
79
64
|
|
|
80
65
|
private
|
|
81
66
|
|
|
82
|
-
def
|
|
83
|
-
platforms.map do |platform|
|
|
84
|
-
__dependencies(platform) + metadata_dependencies(platform)
|
|
85
|
-
end.flatten
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
def __dependencies(platform)
|
|
67
|
+
def __dependencies(spec)
|
|
89
68
|
dependencies = []
|
|
90
|
-
|
|
69
|
+
spec.dependencies.each do |dep|
|
|
91
70
|
next if dep.type == :development
|
|
92
|
-
dependencies <<
|
|
71
|
+
dependencies << Dependency.new(dep.name, dep.requirement)
|
|
93
72
|
end
|
|
94
73
|
dependencies
|
|
95
74
|
end
|
|
96
75
|
|
|
97
|
-
def metadata_dependencies(
|
|
98
|
-
spec = @specs[platform].first
|
|
76
|
+
def metadata_dependencies(spec)
|
|
99
77
|
return [] if spec.is_a?(LazySpecification)
|
|
100
78
|
|
|
101
79
|
[
|
|
102
|
-
metadata_dependency("Ruby", spec.required_ruby_version
|
|
103
|
-
metadata_dependency("RubyGems", spec.required_rubygems_version
|
|
80
|
+
metadata_dependency("Ruby", spec.required_ruby_version),
|
|
81
|
+
metadata_dependency("RubyGems", spec.required_rubygems_version),
|
|
104
82
|
].compact
|
|
105
83
|
end
|
|
106
84
|
|
|
107
|
-
def metadata_dependency(name, requirement
|
|
85
|
+
def metadata_dependency(name, requirement)
|
|
108
86
|
return if requirement.nil? || requirement.none?
|
|
109
87
|
|
|
110
|
-
|
|
88
|
+
Dependency.new("#{name}\0", requirement)
|
|
111
89
|
end
|
|
112
90
|
end
|
|
113
91
|
end
|