rubygems-update 3.3.21 → 3.3.23
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +32 -0
- data/Manifest.txt +8 -0
- data/POLICIES.md +38 -5
- data/bundler/CHANGELOG.md +40 -0
- data/bundler/bundler.gemspec +6 -8
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli/init.rb +5 -1
- data/bundler/lib/bundler/cli.rb +2 -1
- data/bundler/lib/bundler/current_ruby.rb +14 -5
- data/bundler/lib/bundler/definition.rb +7 -20
- data/bundler/lib/bundler/dependency.rb +18 -85
- data/bundler/lib/bundler/dsl.rb +0 -1
- data/bundler/lib/bundler/endpoint_specification.rb +1 -1
- data/bundler/lib/bundler/feature_flag.rb +0 -1
- data/bundler/lib/bundler/gem_version_promoter.rb +10 -25
- data/bundler/lib/bundler/index.rb +3 -26
- data/bundler/lib/bundler/injector.rb +2 -1
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- data/bundler/lib/bundler/man/bundle-add.1 +6 -2
- data/bundler/lib/bundler/man/bundle-add.1.ronn +4 -1
- data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/bundler/lib/bundler/man/bundle-cache.1 +1 -1
- data/bundler/lib/bundler/man/bundle-check.1 +1 -1
- data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +1 -1
- data/bundler/lib/bundler/man/bundle-console.1 +53 -0
- data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +1 -1
- data/bundler/lib/bundler/man/bundle-gem.1 +1 -1
- data/bundler/lib/bundler/man/bundle-help.1 +13 -0
- data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/bundler/lib/bundler/man/bundle-info.1 +1 -1
- data/bundler/lib/bundler/man/bundle-init.1 +1 -1
- data/bundler/lib/bundler/man/bundle-inject.1 +1 -1
- data/bundler/lib/bundler/man/bundle-install.1 +1 -1
- data/bundler/lib/bundler/man/bundle-list.1 +1 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
- data/bundler/lib/bundler/man/bundle-open.1 +1 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +1 -1
- data/bundler/lib/bundler/man/bundle-platform.1 +1 -1
- data/bundler/lib/bundler/man/bundle-plugin.1 +1 -1
- data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +1 -1
- data/bundler/lib/bundler/man/bundle-update.1 +1 -1
- data/bundler/lib/bundler/man/bundle-version.1 +35 -0
- data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/bundler/lib/bundler/man/bundle-viz.1 +1 -1
- data/bundler/lib/bundler/man/bundle.1 +6 -2
- data/bundler/lib/bundler/man/bundle.1.ronn +4 -1
- data/bundler/lib/bundler/man/gemfile.5 +8 -38
- data/bundler/lib/bundler/man/gemfile.5.ronn +9 -27
- data/bundler/lib/bundler/man/index.txt +3 -0
- data/bundler/lib/bundler/match_remote_metadata.rb +4 -1
- data/bundler/lib/bundler/resolver/base.rb +50 -0
- data/bundler/lib/bundler/resolver.rb +72 -93
- data/bundler/lib/bundler/rubygems_ext.rb +24 -3
- data/bundler/lib/bundler/settings.rb +0 -1
- data/bundler/lib/bundler/spec_set.rb +11 -1
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +5 -4
- data/bundler/lib/bundler/version.rb +1 -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/query_utils.rb +2 -2
- data/lib/rubygems/resolver.rb +1 -1
- data/lib/rubygems.rb +1 -1
- data/rubygems-update.gemspec +1 -1
- data/test/rubygems/helper.rb +23 -19
- data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
- data/test/rubygems/test_gem.rb +254 -212
- data/test/rubygems/test_gem_commands_info_command.rb +26 -0
- 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_gemcutter_utilities.rb +16 -12
- data/test/rubygems/test_gem_package.rb +15 -0
- data/test/rubygems/test_gem_platform.rb +67 -0
- data/test/rubygems/test_gem_resolver.rb +33 -0
- data/test/rubygems/test_require.rb +5 -5
- data/test/rubygems/utilities.rb +36 -14
- metadata +11 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f93f67c33abbbb5ea165e7d2682601f04071a38b9b513388d9a5e428dd683297
|
4
|
+
data.tar.gz: 15847dcefd91515ea3057a9d1b3ff6da9ae367ee714cbdb43c5537d6fa5e7ea9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 62659400aed8a1f03108d675fe35674430b1fa5bc2a990ef4bc78fa03072e853b077472a2af0ceace9f7972eb62d8d2c475f9a811f911402a068d28550c26b78
|
7
|
+
data.tar.gz: 1ba9446a59bd88a30558850cf20d3b4fabae944e98ef6995e6dcdb940444f41226e923d50f3fac9839f086fce076ad6a4810e1e035b3d0cabce021a4c92dde91
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,35 @@
|
|
1
|
+
# 3.3.23 / 2022-10-05
|
2
|
+
|
3
|
+
## Enhancements:
|
4
|
+
|
5
|
+
* Add better error handling for permanent redirect responses. Pull request
|
6
|
+
#5931 by jenshenny
|
7
|
+
* Installs bundler 2.3.23 as a default gem.
|
8
|
+
|
9
|
+
## Bug fixes:
|
10
|
+
|
11
|
+
* Fix generic arm platform matching against runtime arm platforms with
|
12
|
+
eabi modifiers. Pull request #5957 by deivid-rodriguez
|
13
|
+
* Fix `Gem::Platform.match` not handling String argument properly. Pull
|
14
|
+
request #5939 by flavorjones
|
15
|
+
* Fix resolution on non-musl platforms. Pull request #5915 by
|
16
|
+
deivid-rodriguez
|
17
|
+
* Mask the file mode when extracting files. Pull request #5906 by
|
18
|
+
kddnewton
|
19
|
+
|
20
|
+
# 3.3.22 / 2022-09-07
|
21
|
+
|
22
|
+
## Enhancements:
|
23
|
+
|
24
|
+
* Support non gnu libc arm-linux-eabi platforms. Pull request #5889 by
|
25
|
+
ntkme
|
26
|
+
* Installs bundler 2.3.22 as a default gem.
|
27
|
+
|
28
|
+
## Bug fixes:
|
29
|
+
|
30
|
+
* Fix `gem info` with explicit `--version`. Pull request #5884 by
|
31
|
+
tonyaraujop
|
32
|
+
|
1
33
|
# 3.3.21 / 2022-08-24
|
2
34
|
|
3
35
|
## Enhancements:
|
data/Manifest.txt
CHANGED
@@ -103,12 +103,16 @@ bundler/lib/bundler/man/bundle-clean.1
|
|
103
103
|
bundler/lib/bundler/man/bundle-clean.1.ronn
|
104
104
|
bundler/lib/bundler/man/bundle-config.1
|
105
105
|
bundler/lib/bundler/man/bundle-config.1.ronn
|
106
|
+
bundler/lib/bundler/man/bundle-console.1
|
107
|
+
bundler/lib/bundler/man/bundle-console.1.ronn
|
106
108
|
bundler/lib/bundler/man/bundle-doctor.1
|
107
109
|
bundler/lib/bundler/man/bundle-doctor.1.ronn
|
108
110
|
bundler/lib/bundler/man/bundle-exec.1
|
109
111
|
bundler/lib/bundler/man/bundle-exec.1.ronn
|
110
112
|
bundler/lib/bundler/man/bundle-gem.1
|
111
113
|
bundler/lib/bundler/man/bundle-gem.1.ronn
|
114
|
+
bundler/lib/bundler/man/bundle-help.1
|
115
|
+
bundler/lib/bundler/man/bundle-help.1.ronn
|
112
116
|
bundler/lib/bundler/man/bundle-info.1
|
113
117
|
bundler/lib/bundler/man/bundle-info.1.ronn
|
114
118
|
bundler/lib/bundler/man/bundle-init.1
|
@@ -137,6 +141,8 @@ bundler/lib/bundler/man/bundle-show.1
|
|
137
141
|
bundler/lib/bundler/man/bundle-show.1.ronn
|
138
142
|
bundler/lib/bundler/man/bundle-update.1
|
139
143
|
bundler/lib/bundler/man/bundle-update.1.ronn
|
144
|
+
bundler/lib/bundler/man/bundle-version.1
|
145
|
+
bundler/lib/bundler/man/bundle-version.1.ronn
|
140
146
|
bundler/lib/bundler/man/bundle-viz.1
|
141
147
|
bundler/lib/bundler/man/bundle-viz.1.ronn
|
142
148
|
bundler/lib/bundler/man/bundle.1
|
@@ -161,6 +167,7 @@ bundler/lib/bundler/plugin/source_list.rb
|
|
161
167
|
bundler/lib/bundler/process_lock.rb
|
162
168
|
bundler/lib/bundler/remote_specification.rb
|
163
169
|
bundler/lib/bundler/resolver.rb
|
170
|
+
bundler/lib/bundler/resolver/base.rb
|
164
171
|
bundler/lib/bundler/resolver/spec_group.rb
|
165
172
|
bundler/lib/bundler/retry.rb
|
166
173
|
bundler/lib/bundler/ruby_dsl.rb
|
@@ -570,6 +577,7 @@ test/rubygems/invalidchild_cert.pem
|
|
570
577
|
test/rubygems/invalidchild_cert_32.pem
|
571
578
|
test/rubygems/invalidchild_key.pem
|
572
579
|
test/rubygems/package/tar_test_case.rb
|
580
|
+
test/rubygems/packages/Bluebie-legs-0.6.2.gem
|
573
581
|
test/rubygems/packages/ascii_binder-0.1.10.1.gem
|
574
582
|
test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem
|
575
583
|
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,43 @@
|
|
1
|
+
# 2.3.23 (October 5, 2022)
|
2
|
+
|
3
|
+
## Enhancements:
|
4
|
+
|
5
|
+
- Update GitLab CI template with new one [#5944](https://github.com/rubygems/rubygems/pull/5944)
|
6
|
+
|
7
|
+
## Bug fixes:
|
8
|
+
|
9
|
+
- Fix `bundle init` not respecting umask in generated gem's Gemfile [#5947](https://github.com/rubygems/rubygems/pull/5947)
|
10
|
+
|
11
|
+
## Performance:
|
12
|
+
|
13
|
+
- Further speed up Bundler by not sorting specs unnecessarily [#5868](https://github.com/rubygems/rubygems/pull/5868)
|
14
|
+
|
15
|
+
## Documentation:
|
16
|
+
|
17
|
+
- Update Bundler new feature instructions [#5912](https://github.com/rubygems/rubygems/pull/5912)
|
18
|
+
|
19
|
+
# 2.3.22 (September 7, 2022)
|
20
|
+
|
21
|
+
## Enhancements:
|
22
|
+
|
23
|
+
- Use a more accurate source code uri in gemspec [#5896](https://github.com/rubygems/rubygems/pull/5896)
|
24
|
+
- Support `--path` option in `bundle add` [#5897](https://github.com/rubygems/rubygems/pull/5897)
|
25
|
+
- Improve lockfile dependency unlocking [#5881](https://github.com/rubygems/rubygems/pull/5881)
|
26
|
+
- Add platform alias `:windows` to Gemfile DSL [#5650](https://github.com/rubygems/rubygems/pull/5650)
|
27
|
+
- Make `#to_lock` consistent between `Gem::Dependency` and `Bundler::Dependency` [#5872](https://github.com/rubygems/rubygems/pull/5872)
|
28
|
+
- Support marshaled index specifications with `nil` required ruby version [#5824](https://github.com/rubygems/rubygems/pull/5824)
|
29
|
+
|
30
|
+
## Bug fixes:
|
31
|
+
|
32
|
+
- Fix resolution hanging on musl platforms [#5875](https://github.com/rubygems/rubygems/pull/5875)
|
33
|
+
- Fix another regression affecting the sorbet family of gems [#5874](https://github.com/rubygems/rubygems/pull/5874)
|
34
|
+
|
35
|
+
## Documentation:
|
36
|
+
|
37
|
+
- Introduce bundle-console(1) man [#5901](https://github.com/rubygems/rubygems/pull/5901)
|
38
|
+
- Introduce bundle-version(1) man [#5895](https://github.com/rubygems/rubygems/pull/5895)
|
39
|
+
- Introduce bundle-help(1) man [#5886](https://github.com/rubygems/rubygems/pull/5886)
|
40
|
+
|
1
41
|
# 2.3.21 (August 24, 2022)
|
2
42
|
|
3
43
|
## Enhancements:
|
data/bundler/bundler.gemspec
CHANGED
@@ -22,14 +22,12 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.summary = "The best way to manage your application's dependencies"
|
23
23
|
s.description = "Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably"
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
}
|
32
|
-
end
|
25
|
+
s.metadata = {
|
26
|
+
"bug_tracker_uri" => "https://github.com/rubygems/rubygems/issues?q=is%3Aopen+is%3Aissue+label%3ABundler",
|
27
|
+
"changelog_uri" => "https://github.com/rubygems/rubygems/blob/master/bundler/CHANGELOG.md",
|
28
|
+
"homepage_uri" => "https://bundler.io/",
|
29
|
+
"source_code_uri" => "https://github.com/rubygems/rubygems/tree/master/bundler",
|
30
|
+
}
|
33
31
|
|
34
32
|
s.required_ruby_version = ">= 2.3.0"
|
35
33
|
s.required_rubygems_version = ">= 2.5.2"
|
@@ -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-05".freeze
|
8
|
+
@git_commit_sha = "250d9d485d".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}"
|
data/bundler/lib/bundler/cli.rb
CHANGED
@@ -372,6 +372,7 @@ module Bundler
|
|
372
372
|
method_option "group", :aliases => "-g", :type => :string
|
373
373
|
method_option "source", :aliases => "-s", :type => :string
|
374
374
|
method_option "require", :aliases => "-r", :type => :string, :banner => "Adds require path to gem. Provide false, or a path as a string."
|
375
|
+
method_option "path", :type => :string
|
375
376
|
method_option "git", :type => :string
|
376
377
|
method_option "github", :type => :string
|
377
378
|
method_option "branch", :type => :string
|
@@ -516,7 +517,7 @@ module Bundler
|
|
516
517
|
end
|
517
518
|
end
|
518
519
|
|
519
|
-
desc "version", "Prints
|
520
|
+
desc "version", "Prints Bundler version information"
|
520
521
|
def version
|
521
522
|
cli_help = current_command.name == "cli_help"
|
522
523
|
if cli_help || ARGV.include?("version")
|
@@ -36,17 +36,18 @@ module Bundler
|
|
36
36
|
rbx
|
37
37
|
ruby
|
38
38
|
truffleruby
|
39
|
+
windows
|
39
40
|
x64_mingw
|
40
41
|
].freeze
|
41
42
|
|
42
43
|
def ruby?
|
43
44
|
return true if Bundler::GemHelpers.generic_local_platform == Gem::Platform::RUBY
|
44
45
|
|
45
|
-
!
|
46
|
+
!windows? && (RUBY_ENGINE == "ruby" || RUBY_ENGINE == "rbx" || RUBY_ENGINE == "maglev" || RUBY_ENGINE == "truffleruby")
|
46
47
|
end
|
47
48
|
|
48
49
|
def mri?
|
49
|
-
!
|
50
|
+
!windows? && RUBY_ENGINE == "ruby"
|
50
51
|
end
|
51
52
|
|
52
53
|
def rbx?
|
@@ -65,16 +66,24 @@ module Bundler
|
|
65
66
|
RUBY_ENGINE == "truffleruby"
|
66
67
|
end
|
67
68
|
|
68
|
-
def
|
69
|
+
def windows?
|
69
70
|
Gem.win_platform?
|
70
71
|
end
|
71
72
|
|
73
|
+
def mswin?
|
74
|
+
# For backwards compatibility
|
75
|
+
windows?
|
76
|
+
|
77
|
+
# TODO: This should correctly be:
|
78
|
+
# windows? && Bundler.local_platform != Gem::Platform::RUBY && Bundler.local_platform.os == "mswin32" && Bundler.local_platform.cpu == "x86"
|
79
|
+
end
|
80
|
+
|
72
81
|
def mswin64?
|
73
|
-
|
82
|
+
windows? && Bundler.local_platform != Gem::Platform::RUBY && Bundler.local_platform.os == "mswin64" && Bundler.local_platform.cpu == "x64"
|
74
83
|
end
|
75
84
|
|
76
85
|
def mingw?
|
77
|
-
|
86
|
+
windows? && Bundler.local_platform != Gem::Platform::RUBY && Bundler.local_platform.os == "mingw32" && Bundler.local_platform.cpu != "x64"
|
78
87
|
end
|
79
88
|
|
80
89
|
def x64_mingw?
|
@@ -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
|
@@ -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!
|
@@ -484,15 +474,13 @@ module Bundler
|
|
484
474
|
def resolver
|
485
475
|
@resolver ||= begin
|
486
476
|
last_resolve = converge_locked_specs
|
487
|
-
|
477
|
+
remove_ruby_from_platforms_if_necessary!(dependencies)
|
478
|
+
Resolver.new(source_requirements, last_resolve, gem_version_promoter, additional_base_requirements_for_resolve(last_resolve), platforms)
|
488
479
|
end
|
489
480
|
end
|
490
481
|
|
491
482
|
def expanded_dependencies
|
492
|
-
@expanded_dependencies ||=
|
493
|
-
remove_ruby_from_platforms_if_necessary!(dependencies)
|
494
|
-
expand_dependencies(dependencies + metadata_dependencies, true)
|
495
|
-
end
|
483
|
+
@expanded_dependencies ||= expand_dependencies(dependencies + metadata_dependencies, true)
|
496
484
|
end
|
497
485
|
|
498
486
|
def filter_specs(specs, deps)
|
@@ -880,9 +868,9 @@ module Bundler
|
|
880
868
|
end
|
881
869
|
end
|
882
870
|
|
883
|
-
def additional_base_requirements_for_resolve
|
871
|
+
def additional_base_requirements_for_resolve(last_resolve)
|
884
872
|
return [] unless @locked_gems && unlocking? && !sources.expired_sources?(@locked_gems.sources)
|
885
|
-
converge_specs(@originally_locked_specs).map do |locked_spec|
|
873
|
+
converge_specs(@originally_locked_specs - last_resolve).map do |locked_spec|
|
886
874
|
Dependency.new(locked_spec.name, ">= #{locked_spec.version}")
|
887
875
|
end.uniq
|
888
876
|
end
|
@@ -896,7 +884,6 @@ module Bundler
|
|
896
884
|
|
897
885
|
remove_platform(Gem::Platform::RUBY)
|
898
886
|
add_current_platform
|
899
|
-
resolver.platforms = @platforms
|
900
887
|
end
|
901
888
|
|
902
889
|
def source_map
|
@@ -7,92 +7,24 @@ require_relative "rubygems_ext"
|
|
7
7
|
module Bundler
|
8
8
|
class Dependency < Gem::Dependency
|
9
9
|
attr_reader :autorequire
|
10
|
-
attr_reader :groups, :platforms, :gemfile, :git, :github, :branch, :ref, :force_ruby_platform
|
10
|
+
attr_reader :groups, :platforms, :gemfile, :path, :git, :github, :branch, :ref, :force_ruby_platform
|
11
11
|
|
12
|
-
|
12
|
+
ALL_RUBY_VERSIONS = ((18..27).to_a + (30..31).to_a).freeze
|
13
13
|
PLATFORM_MAP = {
|
14
|
-
:ruby
|
15
|
-
:
|
16
|
-
:
|
17
|
-
:
|
18
|
-
:
|
19
|
-
:
|
20
|
-
:
|
21
|
-
:
|
22
|
-
:
|
23
|
-
:
|
24
|
-
|
25
|
-
|
26
|
-
:
|
27
|
-
|
28
|
-
:mri_18 => Gem::Platform::RUBY,
|
29
|
-
:mri_19 => Gem::Platform::RUBY,
|
30
|
-
:mri_20 => Gem::Platform::RUBY,
|
31
|
-
:mri_21 => Gem::Platform::RUBY,
|
32
|
-
:mri_22 => Gem::Platform::RUBY,
|
33
|
-
:mri_23 => Gem::Platform::RUBY,
|
34
|
-
:mri_24 => Gem::Platform::RUBY,
|
35
|
-
:mri_25 => Gem::Platform::RUBY,
|
36
|
-
:mri_26 => Gem::Platform::RUBY,
|
37
|
-
:mri_27 => Gem::Platform::RUBY,
|
38
|
-
:mri_30 => Gem::Platform::RUBY,
|
39
|
-
:mri_31 => Gem::Platform::RUBY,
|
40
|
-
:rbx => Gem::Platform::RUBY,
|
41
|
-
:truffleruby => Gem::Platform::RUBY,
|
42
|
-
:jruby => Gem::Platform::JAVA,
|
43
|
-
:jruby_18 => Gem::Platform::JAVA,
|
44
|
-
:jruby_19 => Gem::Platform::JAVA,
|
45
|
-
:mswin => Gem::Platform::MSWIN,
|
46
|
-
:mswin_18 => Gem::Platform::MSWIN,
|
47
|
-
:mswin_19 => Gem::Platform::MSWIN,
|
48
|
-
:mswin_20 => Gem::Platform::MSWIN,
|
49
|
-
:mswin_21 => Gem::Platform::MSWIN,
|
50
|
-
:mswin_22 => Gem::Platform::MSWIN,
|
51
|
-
:mswin_23 => Gem::Platform::MSWIN,
|
52
|
-
:mswin_24 => Gem::Platform::MSWIN,
|
53
|
-
:mswin_25 => Gem::Platform::MSWIN,
|
54
|
-
:mswin_26 => Gem::Platform::MSWIN,
|
55
|
-
:mswin_27 => Gem::Platform::MSWIN,
|
56
|
-
:mswin_30 => Gem::Platform::MSWIN,
|
57
|
-
:mswin_31 => Gem::Platform::MSWIN,
|
58
|
-
:mswin64 => Gem::Platform::MSWIN64,
|
59
|
-
:mswin64_19 => Gem::Platform::MSWIN64,
|
60
|
-
:mswin64_20 => Gem::Platform::MSWIN64,
|
61
|
-
:mswin64_21 => Gem::Platform::MSWIN64,
|
62
|
-
:mswin64_22 => Gem::Platform::MSWIN64,
|
63
|
-
:mswin64_23 => Gem::Platform::MSWIN64,
|
64
|
-
:mswin64_24 => Gem::Platform::MSWIN64,
|
65
|
-
:mswin64_25 => Gem::Platform::MSWIN64,
|
66
|
-
:mswin64_26 => Gem::Platform::MSWIN64,
|
67
|
-
:mswin64_27 => Gem::Platform::MSWIN64,
|
68
|
-
:mswin64_30 => Gem::Platform::MSWIN64,
|
69
|
-
:mswin64_31 => Gem::Platform::MSWIN64,
|
70
|
-
:mingw => Gem::Platform::MINGW,
|
71
|
-
:mingw_18 => Gem::Platform::MINGW,
|
72
|
-
:mingw_19 => Gem::Platform::MINGW,
|
73
|
-
:mingw_20 => Gem::Platform::MINGW,
|
74
|
-
:mingw_21 => Gem::Platform::MINGW,
|
75
|
-
:mingw_22 => Gem::Platform::MINGW,
|
76
|
-
:mingw_23 => Gem::Platform::MINGW,
|
77
|
-
:mingw_24 => Gem::Platform::MINGW,
|
78
|
-
:mingw_25 => Gem::Platform::MINGW,
|
79
|
-
:mingw_26 => Gem::Platform::MINGW,
|
80
|
-
:mingw_27 => Gem::Platform::MINGW,
|
81
|
-
:mingw_30 => Gem::Platform::MINGW,
|
82
|
-
:mingw_31 => Gem::Platform::MINGW,
|
83
|
-
:x64_mingw => Gem::Platform::X64_MINGW,
|
84
|
-
:x64_mingw_20 => Gem::Platform::X64_MINGW,
|
85
|
-
:x64_mingw_21 => Gem::Platform::X64_MINGW,
|
86
|
-
:x64_mingw_22 => Gem::Platform::X64_MINGW,
|
87
|
-
:x64_mingw_23 => Gem::Platform::X64_MINGW,
|
88
|
-
:x64_mingw_24 => Gem::Platform::X64_MINGW,
|
89
|
-
:x64_mingw_25 => Gem::Platform::X64_MINGW,
|
90
|
-
:x64_mingw_26 => Gem::Platform::X64_MINGW,
|
91
|
-
:x64_mingw_27 => Gem::Platform::X64_MINGW,
|
92
|
-
:x64_mingw_30 => Gem::Platform::X64_MINGW,
|
93
|
-
:x64_mingw_31 => Gem::Platform::X64_MINGW,
|
94
|
-
}.freeze
|
95
|
-
# rubocop:enable Naming/VariableNumber
|
14
|
+
:ruby => [Gem::Platform::RUBY, ALL_RUBY_VERSIONS],
|
15
|
+
:mri => [Gem::Platform::RUBY, ALL_RUBY_VERSIONS],
|
16
|
+
:rbx => [Gem::Platform::RUBY],
|
17
|
+
:truffleruby => [Gem::Platform::RUBY],
|
18
|
+
:jruby => [Gem::Platform::JAVA, [18, 19]],
|
19
|
+
:windows => [Gem::Platform::WINDOWS, ALL_RUBY_VERSIONS],
|
20
|
+
:mswin => [Gem::Platform::MSWIN, ALL_RUBY_VERSIONS],
|
21
|
+
:mswin64 => [Gem::Platform::MSWIN64, ALL_RUBY_VERSIONS - [18]],
|
22
|
+
:mingw => [Gem::Platform::MINGW, ALL_RUBY_VERSIONS],
|
23
|
+
:x64_mingw => [Gem::Platform::X64_MINGW, ALL_RUBY_VERSIONS - [18, 19]],
|
24
|
+
}.each_with_object({}) do |(platform, spec), hash|
|
25
|
+
hash[platform] = spec[0]
|
26
|
+
spec[1]&.each {|version| hash[:"#{platform}_#{version}"] = spec[0] }
|
27
|
+
end.freeze
|
96
28
|
|
97
29
|
def initialize(name, version, options = {}, &blk)
|
98
30
|
type = options["type"] || :runtime
|
@@ -101,6 +33,7 @@ module Bundler
|
|
101
33
|
@autorequire = nil
|
102
34
|
@groups = Array(options["group"] || :default).map(&:to_sym)
|
103
35
|
@source = options["source"]
|
36
|
+
@path = options["path"]
|
104
37
|
@git = options["git"]
|
105
38
|
@github = options["github"]
|
106
39
|
@branch = options["branch"]
|
@@ -151,7 +84,7 @@ module Bundler
|
|
151
84
|
def to_lock
|
152
85
|
out = super
|
153
86
|
out << "!" if source
|
154
|
-
out
|
87
|
+
out
|
155
88
|
end
|
156
89
|
|
157
90
|
def specific?
|
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
|
@@ -12,7 +12,7 @@ module Bundler
|
|
12
12
|
super()
|
13
13
|
@name = name
|
14
14
|
@version = Gem::Version.create version
|
15
|
-
@platform = platform
|
15
|
+
@platform = Gem::Platform.new(platform)
|
16
16
|
@spec_fetcher = spec_fetcher
|
17
17
|
@dependencies = dependencies.map {|dep, reqs| build_dependency(dep, reqs) }
|
18
18
|
|
@@ -39,7 +39,6 @@ module Bundler
|
|
39
39
|
settings_flag(:setup_makes_kernel_gem_public) { !bundler_3_mode? }
|
40
40
|
settings_flag(:suppress_install_using_messages) { bundler_3_mode? }
|
41
41
|
settings_flag(:update_requires_all_flag) { bundler_4_mode? }
|
42
|
-
settings_flag(:use_gem_version_promoter_for_major_updates) { bundler_3_mode? }
|
43
42
|
|
44
43
|
settings_option(:default_cli_command) { bundler_3_mode? ? :cli_help : :install }
|
45
44
|
|
@@ -55,19 +55,17 @@ module Bundler
|
|
55
55
|
@level = v
|
56
56
|
end
|
57
57
|
|
58
|
-
# Given a Dependency and an Array of
|
59
|
-
# gem, this method will return the Array of
|
58
|
+
# Given a Dependency and an Array of Specifications of available versions for a
|
59
|
+
# gem, this method will return the Array of Specifications sorted (and possibly
|
60
60
|
# truncated if strict is true) in an order to give preference to the current
|
61
61
|
# level (:major, :minor or :patch) when resolution is deciding what versions
|
62
62
|
# best resolve all dependencies in the bundle.
|
63
63
|
# @param dep [Dependency] The Dependency of the gem.
|
64
|
-
# @param spec_groups [
|
64
|
+
# @param spec_groups [Specification] An array of Specifications for the same gem
|
65
65
|
# named in the @dep param.
|
66
|
-
# @return [
|
66
|
+
# @return [Specification] A new instance of the Specification Array sorted and
|
67
67
|
# possibly filtered.
|
68
68
|
def sort_versions(dep, spec_groups)
|
69
|
-
before_result = "before sort_versions: #{debug_format_result(dep, spec_groups).inspect}" if DEBUG
|
70
|
-
|
71
69
|
@sort_versions[dep] ||= begin
|
72
70
|
gem_name = dep.name
|
73
71
|
|
@@ -79,11 +77,6 @@ module Bundler
|
|
79
77
|
filter_dep_specs(spec_groups, locked_spec)
|
80
78
|
else
|
81
79
|
sort_dep_specs(spec_groups, locked_spec)
|
82
|
-
end.tap do |specs|
|
83
|
-
if DEBUG
|
84
|
-
puts before_result
|
85
|
-
puts " after sort_versions: #{debug_format_result(dep, specs).inspect}"
|
86
|
-
end
|
87
80
|
end
|
88
81
|
end
|
89
82
|
end
|
@@ -123,15 +116,14 @@ module Bundler
|
|
123
116
|
end
|
124
117
|
|
125
118
|
def sort_dep_specs(spec_groups, locked_spec)
|
126
|
-
|
127
|
-
@gem_name = locked_spec
|
128
|
-
@locked_version = locked_spec.version
|
119
|
+
@locked_version = locked_spec&.version
|
120
|
+
@gem_name = locked_spec&.name
|
129
121
|
|
130
122
|
result = spec_groups.sort do |a, b|
|
131
123
|
@a_ver = a.version
|
132
124
|
@b_ver = b.version
|
133
125
|
|
134
|
-
unless @prerelease_specified[@gem_name]
|
126
|
+
unless @gem_name && @prerelease_specified[@gem_name]
|
135
127
|
a_pre = @a_ver.prerelease?
|
136
128
|
b_pre = @b_ver.prerelease?
|
137
129
|
|
@@ -155,7 +147,7 @@ module Bundler
|
|
155
147
|
end
|
156
148
|
|
157
149
|
def either_version_older_than_locked
|
158
|
-
@a_ver < @locked_version || @b_ver < @locked_version
|
150
|
+
@locked_version && (@a_ver < @locked_version || @b_ver < @locked_version)
|
159
151
|
end
|
160
152
|
|
161
153
|
def segments_do_not_match(level)
|
@@ -164,7 +156,7 @@ module Bundler
|
|
164
156
|
end
|
165
157
|
|
166
158
|
def unlocking_gem?
|
167
|
-
unlock_gems.empty? || unlock_gems.include?(@gem_name)
|
159
|
+
unlock_gems.empty? || (@gem_name && unlock_gems.include?(@gem_name))
|
168
160
|
end
|
169
161
|
|
170
162
|
# Specific version moves can't always reliably be done during sorting
|
@@ -172,7 +164,7 @@ module Bundler
|
|
172
164
|
def post_sort(result)
|
173
165
|
# default :major behavior in Bundler does not do this
|
174
166
|
return result if major?
|
175
|
-
if unlocking_gem?
|
167
|
+
if unlocking_gem? || @locked_version.nil?
|
176
168
|
result
|
177
169
|
else
|
178
170
|
move_version_to_end(result, @locked_version)
|
@@ -183,12 +175,5 @@ module Bundler
|
|
183
175
|
move, keep = result.partition {|s| s.version.to_s == version.to_s }
|
184
176
|
keep.concat(move)
|
185
177
|
end
|
186
|
-
|
187
|
-
def debug_format_result(dep, spec_groups)
|
188
|
-
a = [dep.to_s,
|
189
|
-
spec_groups.map {|sg| [sg.version, sg.dependencies_for_activated_platforms.map {|dp| [dp.name, dp.requirement.to_s] }] }]
|
190
|
-
last_map = a.last.map {|sg_data| [sg_data.first.version, sg_data.last.map {|aa| aa.join(" ") }] }
|
191
|
-
[a.first, last_map, level, strict ? :strict : :not_strict]
|
192
|
-
end
|
193
178
|
end
|
194
179
|
end
|