rubygems-update 3.3.21 → 3.3.23
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 +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
|