rubygems-update 3.4.20 → 3.4.21
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 +22 -0
- data/Manifest.txt +1 -0
- data/bundler/CHANGELOG.md +34 -3
- data/bundler/lib/bundler/build_metadata.rb +3 -3
- data/bundler/lib/bundler/cli/check.rb +1 -1
- data/bundler/lib/bundler/cli/gem.rb +1 -3
- data/bundler/lib/bundler/cli/install.rb +2 -2
- data/bundler/lib/bundler/cli/lock.rb +26 -23
- data/bundler/lib/bundler/cli/open.rb +5 -7
- data/bundler/lib/bundler/definition.rb +42 -25
- data/bundler/lib/bundler/env.rb +2 -2
- data/bundler/lib/bundler/gem_version_promoter.rb +2 -2
- data/bundler/lib/bundler/injector.rb +1 -1
- data/bundler/lib/bundler/installer/parallel_installer.rb +0 -26
- data/bundler/lib/bundler/installer/standalone.rb +13 -6
- data/bundler/lib/bundler/lockfile_parser.rb +29 -24
- data/bundler/lib/bundler/man/bundle-add.1 +1 -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 +1 -1
- data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +2 -2
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +2 -3
- data/bundler/lib/bundler/man/bundle-gem.1 +1 -1
- data/bundler/lib/bundler/man/bundle-help.1 +1 -1
- 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 +17 -17
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +5 -5
- 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 +1 -1
- data/bundler/lib/bundler/man/bundle-viz.1 +1 -1
- data/bundler/lib/bundler/man/bundle.1 +1 -1
- data/bundler/lib/bundler/man/gemfile.5 +1 -1
- data/bundler/lib/bundler/resolver/package.rb +5 -0
- data/bundler/lib/bundler/resolver.rb +27 -7
- data/bundler/lib/bundler/ruby_version.rb +8 -1
- data/bundler/lib/bundler/settings.rb +53 -16
- data/bundler/lib/bundler/shared_helpers.rb +16 -1
- data/bundler/lib/bundler/source/git/git_proxy.rb +13 -4
- data/bundler/lib/bundler/spec_set.rb +2 -2
- data/bundler/lib/bundler/stub_specification.rb +4 -2
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +6 -2
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler/yaml_serializer.rb +6 -7
- data/lib/rubygems/basic_specification.rb +1 -1
- data/lib/rubygems/command.rb +2 -2
- data/lib/rubygems/command_manager.rb +1 -1
- data/lib/rubygems/commands/cert_command.rb +2 -2
- data/lib/rubygems/commands/check_command.rb +5 -1
- data/lib/rubygems/commands/cleanup_command.rb +1 -1
- data/lib/rubygems/commands/contents_command.rb +1 -1
- data/lib/rubygems/commands/help_command.rb +2 -2
- data/lib/rubygems/commands/open_command.rb +1 -3
- data/lib/rubygems/commands/owner_command.rb +1 -1
- data/lib/rubygems/commands/setup_command.rb +8 -8
- data/lib/rubygems/commands/specification_command.rb +5 -1
- data/lib/rubygems/commands/stale_command.rb +1 -1
- data/lib/rubygems/commands/update_command.rb +3 -3
- data/lib/rubygems/commands/yank_command.rb +1 -1
- data/lib/rubygems/config_file.rb +60 -13
- data/lib/rubygems/core_ext/kernel_gem.rb +1 -1
- data/lib/rubygems/core_ext/kernel_require.rb +1 -1
- data/lib/rubygems/defaults.rb +6 -2
- data/lib/rubygems/deprecate.rb +2 -1
- data/lib/rubygems/doctor.rb +1 -1
- data/lib/rubygems/errors.rb +1 -1
- data/lib/rubygems/exceptions.rb +1 -1
- data/lib/rubygems/ext/builder.rb +5 -4
- data/lib/rubygems/ext/cargo_builder.rb +2 -2
- data/lib/rubygems/gem_runner.rb +5 -1
- data/lib/rubygems/gemcutter_utilities.rb +2 -2
- data/lib/rubygems/indexer.rb +1 -1
- data/lib/rubygems/install_update_options.rb +1 -1
- data/lib/rubygems/installer.rb +8 -8
- data/lib/rubygems/package/old.rb +1 -1
- data/lib/rubygems/package/tar_writer.rb +1 -1
- data/lib/rubygems/package.rb +8 -8
- data/lib/rubygems/platform.rb +6 -2
- data/lib/rubygems/query_utils.rb +4 -4
- data/lib/rubygems/remote_fetcher.rb +10 -2
- data/lib/rubygems/request_set.rb +2 -1
- data/lib/rubygems/requirement.rb +1 -1
- data/lib/rubygems/resolver/api_set.rb +2 -1
- data/lib/rubygems/resolver/api_specification.rb +1 -1
- data/lib/rubygems/security/signer.rb +10 -2
- data/lib/rubygems/security/trust_dir.rb +4 -4
- data/lib/rubygems/security.rb +1 -1
- data/lib/rubygems/security_option.rb +1 -1
- data/lib/rubygems/source.rb +5 -1
- data/lib/rubygems/specification.rb +9 -10
- data/lib/rubygems/specification_policy.rb +5 -5
- data/lib/rubygems/uninstaller.rb +1 -1
- data/lib/rubygems/update_suggestion.rb +1 -1
- data/lib/rubygems/util.rb +5 -1
- data/lib/rubygems/version.rb +3 -2
- data/lib/rubygems/yaml_serializer.rb +88 -0
- data/lib/rubygems.rb +4 -4
- data/rubygems-update.gemspec +1 -1
- data/setup.rb +2 -0
- data/test/rubygems/bundler_test_gem.rb +6 -3
- data/test/rubygems/helper.rb +23 -15
- data/test/rubygems/package/tar_test_case.rb +2 -2
- data/test/rubygems/test_gem.rb +51 -26
- data/test/rubygems/test_gem_command.rb +3 -1
- data/test/rubygems/test_gem_commands_cert_command.rb +22 -22
- data/test/rubygems/test_gem_commands_cleanup_command.rb +2 -2
- data/test/rubygems/test_gem_commands_environment_command.rb +2 -1
- data/test/rubygems/test_gem_commands_exec_command.rb +5 -1
- data/test/rubygems/test_gem_commands_install_command.rb +3 -3
- data/test/rubygems/test_gem_commands_open_command.rb +5 -2
- data/test/rubygems/test_gem_commands_pristine_command.rb +2 -2
- data/test/rubygems/test_gem_commands_push_command.rb +7 -6
- data/test/rubygems/test_gem_commands_signin_command.rb +8 -8
- data/test/rubygems/test_gem_commands_uninstall_command.rb +1 -1
- data/test/rubygems/test_gem_commands_unpack_command.rb +2 -2
- data/test/rubygems/test_gem_config_file.rb +46 -12
- data/test/rubygems/test_gem_ext_cargo_builder.rb +2 -2
- data/test/rubygems/test_gem_gemcutter_utilities.rb +8 -5
- data/test/rubygems/test_gem_install_update_options.rb +3 -3
- data/test/rubygems/test_gem_installer.rb +15 -15
- data/test/rubygems/test_gem_package.rb +35 -34
- data/test/rubygems/test_gem_package_old.rb +1 -1
- data/test/rubygems/test_gem_package_tar_header.rb +3 -3
- data/test/rubygems/test_gem_package_tar_reader.rb +4 -4
- data/test/rubygems/test_gem_package_tar_writer.rb +28 -28
- data/test/rubygems/test_gem_rdoc.rb +2 -2
- data/test/rubygems/test_gem_remote_fetcher.rb +13 -9
- data/test/rubygems/test_gem_request.rb +5 -5
- data/test/rubygems/test_gem_request_connection_pools.rb +2 -1
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +14 -7
- data/test/rubygems/test_gem_security.rb +2 -2
- data/test/rubygems/test_gem_security_signer.rb +2 -2
- data/test/rubygems/test_gem_security_trust_dir.rb +6 -6
- data/test/rubygems/test_gem_spec_fetcher.rb +2 -2
- data/test/rubygems/test_gem_specification.rb +29 -29
- data/test/rubygems/test_gem_update_suggestion.rb +12 -6
- data/test/rubygems/test_gem_util.rb +2 -2
- data/test/rubygems/test_gem_version.rb +4 -2
- data/test/rubygems/utilities.rb +2 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1f05a0cda4ceecb0e1a71c9956e3e8597fcf627c352f6ee567790df40fddccac
|
4
|
+
data.tar.gz: fa139ca2d60133ee401e1b10a4ec477bd38264c49507b55b319299e26b77ab8d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69e38f7e11e4c39a32bfa5fc0f921c004128a2c283affa2dfe52b3fc12c326d4d32af6310aa9b364e4c6d0568f9c3cb71cf9162c5923738447250ff40dd6ad17
|
7
|
+
data.tar.gz: 1a4bf79c31e726474c4066e9b166562c81a84a02560f70f647e03f1bb41c988147837d65fac7238737493521643a75e9c75494932446faa16325ca923fb1b646
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,25 @@
|
|
1
|
+
# 3.4.21 / 2023-10-17
|
2
|
+
|
3
|
+
## Enhancements:
|
4
|
+
|
5
|
+
* Abort `setup.rb` if Ruby is too old. Pull request
|
6
|
+
[#7011](https://github.com/rubygems/rubygems/pull/7011) by
|
7
|
+
deivid-rodriguez
|
8
|
+
* Remove usage of Dir.chdir that only execute a subprocess. Pull request
|
9
|
+
[#6930](https://github.com/rubygems/rubygems/pull/6930) by segiddins
|
10
|
+
* Freeze more strings in generated gemspecs. Pull request
|
11
|
+
[#6974](https://github.com/rubygems/rubygems/pull/6974) by segiddins
|
12
|
+
* Use pure-ruby YAML parser for loading configuration at RubyGems. Pull
|
13
|
+
request [#6615](https://github.com/rubygems/rubygems/pull/6615) by hsbt
|
14
|
+
* Installs bundler 2.4.21 as a default gem.
|
15
|
+
|
16
|
+
## Documentation:
|
17
|
+
|
18
|
+
* Update suggested variable for bindir. Pull request
|
19
|
+
[#7028](https://github.com/rubygems/rubygems/pull/7028) by hsbt
|
20
|
+
* Fix invalid links in documentation. Pull request
|
21
|
+
[#7008](https://github.com/rubygems/rubygems/pull/7008) by simi
|
22
|
+
|
1
23
|
# 3.4.20 / 2023-09-27
|
2
24
|
|
3
25
|
## Enhancements:
|
data/Manifest.txt
CHANGED
data/bundler/CHANGELOG.md
CHANGED
@@ -1,3 +1,35 @@
|
|
1
|
+
# 2.4.21 (October 17, 2023)
|
2
|
+
|
3
|
+
## Enhancements:
|
4
|
+
|
5
|
+
- Avoid duplicates -rbundler/setup in RUBYOPT with Ruby preview [#7002](https://github.com/rubygems/rubygems/pull/7002)
|
6
|
+
- Prevent gem activation in standalone mode [#6925](https://github.com/rubygems/rubygems/pull/6925)
|
7
|
+
- Support Ruby's preview version format (Ex: 3.3.0-preview2) in Gemfile [#7016](https://github.com/rubygems/rubygems/pull/7016)
|
8
|
+
- Fix `bundle install` when older revisions of git source [#6980](https://github.com/rubygems/rubygems/pull/6980)
|
9
|
+
- Remove usage of Dir.chdir that only execute a subprocess [#6930](https://github.com/rubygems/rubygems/pull/6930)
|
10
|
+
|
11
|
+
## Bug fixes:
|
12
|
+
|
13
|
+
- Don't delete the release version from pre-release string more than once [#7054](https://github.com/rubygems/rubygems/pull/7054)
|
14
|
+
- Make the `lock` command not be affected by the `frozen` setting [#7034](https://github.com/rubygems/rubygems/pull/7034)
|
15
|
+
- Raise an error when adding a gem incompatible with some locked platform [#7035](https://github.com/rubygems/rubygems/pull/7035)
|
16
|
+
- Re-resolve when lockfile is invalid [#7020](https://github.com/rubygems/rubygems/pull/7020)
|
17
|
+
- Don't re-resolve with prereleases if unlocked gem has no prereleases [#7021](https://github.com/rubygems/rubygems/pull/7021)
|
18
|
+
- Include gemspec in ExtensionTask for native gem tasks [#7015](https://github.com/rubygems/rubygems/pull/7015)
|
19
|
+
- Avoid error reporting relative path when validating frozen [#5128](https://github.com/rubygems/rubygems/pull/5128)
|
20
|
+
- Fix `bundle lock --minor --update <dep>` edge case [#6992](https://github.com/rubygems/rubygems/pull/6992)
|
21
|
+
- Stop bundler eagerly loading all specs with exts [#6945](https://github.com/rubygems/rubygems/pull/6945)
|
22
|
+
|
23
|
+
## Performance:
|
24
|
+
|
25
|
+
- Reduce allocations when parsing lockfile [#6976](https://github.com/rubygems/rubygems/pull/6976)
|
26
|
+
- Stop allocating the same settings keys repeatedly [#6963](https://github.com/rubygems/rubygems/pull/6963)
|
27
|
+
|
28
|
+
## Documentation:
|
29
|
+
|
30
|
+
- Improve formatting and global source information in `bundle plugin` man page [#7045](https://github.com/rubygems/rubygems/pull/7045)
|
31
|
+
- Update man page of `bundle exec` to reflect default true of flag `--keep-file-descriptors` [#7033](https://github.com/rubygems/rubygems/pull/7033)
|
32
|
+
|
1
33
|
# 2.4.20 (September 27, 2023)
|
2
34
|
|
3
35
|
## Enhancements:
|
@@ -21,7 +53,6 @@
|
|
21
53
|
|
22
54
|
- Lazily construct fetcher debug messages [#6973](https://github.com/rubygems/rubygems/pull/6973)
|
23
55
|
- Avoid allocating empty hashes in Index [#6962](https://github.com/rubygems/rubygems/pull/6962)
|
24
|
-
- Stop allocating the same settings keys repeatedly [#6963](https://github.com/rubygems/rubygems/pull/6963)
|
25
56
|
- Improve `Bundler::Index` efficiency by removing unnecessary creation and dups [#6931](https://github.com/rubygems/rubygems/pull/6931)
|
26
57
|
- (Further) Improve Bundler::Settings#[] performance and memory usage [#6923](https://github.com/rubygems/rubygems/pull/6923)
|
27
58
|
- Don't use full indexes unnecessarily on legacy Gemfiles [#6916](https://github.com/rubygems/rubygems/pull/6916)
|
@@ -2182,7 +2213,7 @@ Changes
|
|
2182
2213
|
|
2183
2214
|
- retry gem downloads ([#4846](https://github.com/rubygems/bundler/issues/4846), @jkeiser)
|
2184
2215
|
- improve the CompactIndex to handle capitalized legacy gems ([#4867](https://github.com/rubygems/bundler/issues/4867), @segiddins)
|
2185
|
-
-
|
2216
|
+
- reuse persistent HTTP connections for CompactIndex (@NickLaMuro)
|
2186
2217
|
- respect `required_ruby_version` when Gemfile contains `ruby` version (@indirect)
|
2187
2218
|
- allow `rake release` to sign git tags ([#4743](https://github.com/rubygems/bundler/issues/4743), @eagletmt)
|
2188
2219
|
- set process titles when using `#load` during `exec` (@yob)
|
@@ -3378,7 +3409,7 @@ Changes
|
|
3378
3409
|
- `gem` option --test can generate rspec stubs (@MafcoCinco)
|
3379
3410
|
- `gem` option --test can generate minitest stubs (@kcurtin)
|
3380
3411
|
- `gem` command generates MIT license (@BrentWheeldon)
|
3381
|
-
- gem rake task 'release'
|
3412
|
+
- gem rake task 'release' reuses existing tags (@shtirlic)
|
3382
3413
|
|
3383
3414
|
## Bug fixes:
|
3384
3415
|
|
@@ -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 = "2023-
|
8
|
-
@git_commit_sha = "
|
7
|
+
@built_at = "2023-10-17".freeze
|
8
|
+
@git_commit_sha = "d10b46bd15".freeze
|
9
9
|
@release = true
|
10
10
|
# end ivars
|
11
11
|
|
@@ -31,7 +31,7 @@ module Bundler
|
|
31
31
|
# commit instance variable then we can't determine its commits SHA.
|
32
32
|
git_dir = File.expand_path("../../../.git", __dir__)
|
33
33
|
if File.directory?(git_dir)
|
34
|
-
return @git_commit_sha =
|
34
|
+
return @git_commit_sha = IO.popen(%w[git rev-parse --short HEAD], { :chdir => git_dir }, &:read).strip.freeze
|
35
35
|
end
|
36
36
|
|
37
37
|
@git_commit_sha ||= "unknown"
|
@@ -29,7 +29,7 @@ module Bundler
|
|
29
29
|
Bundler.ui.warn "Install missing gems with `bundle install`"
|
30
30
|
exit 1
|
31
31
|
elsif !Bundler.default_lockfile.file? && Bundler.frozen_bundle?
|
32
|
-
Bundler.ui.error "This bundle has been frozen, but there is no #{
|
32
|
+
Bundler.ui.error "This bundle has been frozen, but there is no #{SharedHelpers.relative_lockfile_path} present"
|
33
33
|
exit 1
|
34
34
|
else
|
35
35
|
Bundler.load.lock(:preserve_unknown_sections => true) unless options[:"dry-run"]
|
@@ -28,8 +28,8 @@ module Bundler
|
|
28
28
|
flag = "--deployment flag" if options[:deployment]
|
29
29
|
flag ||= "--frozen flag" if options[:frozen]
|
30
30
|
flag ||= "deployment setting"
|
31
|
-
raise ProductionError, "The #{flag} requires a
|
32
|
-
"sure you have checked your #{
|
31
|
+
raise ProductionError, "The #{flag} requires a lockfile. Please make " \
|
32
|
+
"sure you have checked your #{SharedHelpers.relative_lockfile_path} into version control " \
|
33
33
|
"before deploying."
|
34
34
|
end
|
35
35
|
|
@@ -32,36 +32,39 @@ module Bundler
|
|
32
32
|
elsif update && bundler
|
33
33
|
update = { :bundler => bundler }
|
34
34
|
end
|
35
|
-
definition = Bundler.definition(update)
|
36
35
|
|
37
|
-
Bundler
|
36
|
+
Bundler.settings.temporary(:frozen => false) do
|
37
|
+
definition = Bundler.definition(update)
|
38
38
|
|
39
|
-
|
40
|
-
definition.remove_platform(platform)
|
41
|
-
end
|
39
|
+
Bundler::CLI::Common.configure_gem_version_promoter(definition, options) if options[:update]
|
42
40
|
|
43
|
-
|
44
|
-
|
45
|
-
if platform.to_s == "unknown"
|
46
|
-
Bundler.ui.warn "The platform `#{platform_string}` is unknown to RubyGems " \
|
47
|
-
"and adding it will likely lead to resolution errors"
|
41
|
+
options["remove-platform"].each do |platform|
|
42
|
+
definition.remove_platform(platform)
|
48
43
|
end
|
49
|
-
definition.add_platform(platform)
|
50
|
-
end
|
51
44
|
|
52
|
-
|
53
|
-
|
54
|
-
|
45
|
+
options["add-platform"].each do |platform_string|
|
46
|
+
platform = Gem::Platform.new(platform_string)
|
47
|
+
if platform.to_s == "unknown"
|
48
|
+
Bundler.ui.warn "The platform `#{platform_string}` is unknown to RubyGems " \
|
49
|
+
"and adding it will likely lead to resolution errors"
|
50
|
+
end
|
51
|
+
definition.add_platform(platform)
|
52
|
+
end
|
55
53
|
|
56
|
-
|
54
|
+
if definition.platforms.empty?
|
55
|
+
raise InvalidOption, "Removing all platforms from the bundle is not allowed"
|
56
|
+
end
|
57
|
+
|
58
|
+
definition.resolve_remotely! unless options[:local]
|
57
59
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
60
|
+
if print
|
61
|
+
puts definition.to_lock
|
62
|
+
else
|
63
|
+
file = options[:lockfile]
|
64
|
+
file = file ? File.expand_path(file) : Bundler.default_lockfile
|
65
|
+
puts "Writing lockfile to #{file}"
|
66
|
+
definition.lock(file)
|
67
|
+
end
|
65
68
|
end
|
66
69
|
|
67
70
|
Bundler.ui.level = previous_ui_level
|
@@ -18,13 +18,11 @@ module Bundler
|
|
18
18
|
Bundler.ui.info "Unable to open #{name} because it's a default gem, so the directory it would normally be installed to does not exist."
|
19
19
|
else
|
20
20
|
root_path = spec.full_gem_path
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
end || Bundler.ui.info("Could not run '#{command.join(" ")}'")
|
27
|
-
end
|
21
|
+
require "shellwords"
|
22
|
+
command = Shellwords.split(editor) << File.join([root_path, path].compact)
|
23
|
+
Bundler.with_original_env do
|
24
|
+
system(*command, { :chdir => root_path })
|
25
|
+
end || Bundler.ui.info("Could not run '#{command.join(" ")}'")
|
28
26
|
end
|
29
27
|
end
|
30
28
|
end
|
@@ -149,7 +149,7 @@ module Bundler
|
|
149
149
|
@dependency_changes = converge_dependencies
|
150
150
|
@local_changes = converge_locals
|
151
151
|
|
152
|
-
|
152
|
+
check_lockfile
|
153
153
|
end
|
154
154
|
|
155
155
|
def gem_version_promoter
|
@@ -405,13 +405,13 @@ module Bundler
|
|
405
405
|
msg << "\n\nYou have added to the Gemfile:\n" << added.join("\n") if added.any?
|
406
406
|
msg << "\n\nYou have deleted from the Gemfile:\n" << deleted.join("\n") if deleted.any?
|
407
407
|
msg << "\n\nYou have changed in the Gemfile:\n" << changed.join("\n") if changed.any?
|
408
|
-
msg << "\n\nRun `bundle install` elsewhere and add the updated #{
|
408
|
+
msg << "\n\nRun `bundle install` elsewhere and add the updated #{SharedHelpers.relative_gemfile_path} to version control.\n"
|
409
409
|
|
410
410
|
unless explicit_flag
|
411
411
|
suggested_command = unless Bundler.settings.locations("frozen").keys.include?(:env)
|
412
412
|
"bundle config set frozen false"
|
413
413
|
end
|
414
|
-
msg << "If this is a development machine, remove the #{
|
414
|
+
msg << "If this is a development machine, remove the #{SharedHelpers.relative_lockfile_path} " \
|
415
415
|
"freeze by running `#{suggested_command}`." if suggested_command
|
416
416
|
end
|
417
417
|
|
@@ -452,8 +452,8 @@ module Bundler
|
|
452
452
|
return if current_platform_locked?
|
453
453
|
|
454
454
|
raise ProductionError, "Your bundle only supports platforms #{@platforms.map(&:to_s)} " \
|
455
|
-
"but your local platform is #{
|
456
|
-
"Add the current platform to the lockfile with\n`bundle lock --add-platform #{
|
455
|
+
"but your local platform is #{local_platform}. " \
|
456
|
+
"Add the current platform to the lockfile with\n`bundle lock --add-platform #{local_platform}` and try again."
|
457
457
|
end
|
458
458
|
|
459
459
|
def add_platform(platform)
|
@@ -478,7 +478,7 @@ module Bundler
|
|
478
478
|
private :sources
|
479
479
|
|
480
480
|
def nothing_changed?
|
481
|
-
!@source_changes && !@dependency_changes && !@new_platform && !@path_changes && !@local_changes && !@missing_lockfile_dep && !@unlocking_bundler
|
481
|
+
!@source_changes && !@dependency_changes && !@new_platform && !@path_changes && !@local_changes && !@missing_lockfile_dep && !@unlocking_bundler && !@invalid_lockfile_dep
|
482
482
|
end
|
483
483
|
|
484
484
|
def no_resolve_needed?
|
@@ -509,7 +509,7 @@ module Bundler
|
|
509
509
|
def resolution_packages
|
510
510
|
@resolution_packages ||= begin
|
511
511
|
last_resolve = converge_locked_specs
|
512
|
-
|
512
|
+
remove_invalid_platforms!(current_dependencies)
|
513
513
|
packages = Resolver::Base.new(source_requirements, expanded_dependencies, last_resolve, @platforms, :locked_specs => @originally_locked_specs, :unlock => @unlock[:gems], :prerelease => gem_version_promoter.pre?)
|
514
514
|
additional_base_requirements_for_resolve(packages, last_resolve)
|
515
515
|
end
|
@@ -600,7 +600,7 @@ module Bundler
|
|
600
600
|
|
601
601
|
def current_platform_locked?
|
602
602
|
@platforms.any? do |bundle_platform|
|
603
|
-
MatchPlatform.platforms_match?(bundle_platform,
|
603
|
+
MatchPlatform.platforms_match?(bundle_platform, local_platform)
|
604
604
|
end
|
605
605
|
end
|
606
606
|
|
@@ -630,6 +630,7 @@ module Bundler
|
|
630
630
|
[@local_changes, "the gemspecs for git local gems changed"],
|
631
631
|
[@missing_lockfile_dep, "your lock file is missing \"#{@missing_lockfile_dep}\""],
|
632
632
|
[@unlocking_bundler, "an update to the version of Bundler itself was requested"],
|
633
|
+
[@invalid_lockfile_dep, "your lock file has an invalid dependency \"#{@invalid_lockfile_dep}\""],
|
633
634
|
].select(&:first).map(&:last).join(", ")
|
634
635
|
end
|
635
636
|
|
@@ -684,24 +685,38 @@ module Bundler
|
|
684
685
|
!sources_with_changes.each {|source| @unlock[:sources] << source.name }.empty?
|
685
686
|
end
|
686
687
|
|
687
|
-
def
|
688
|
-
|
688
|
+
def check_lockfile
|
689
|
+
@invalid_lockfile_dep = nil
|
690
|
+
@missing_lockfile_dep = nil
|
689
691
|
|
690
|
-
|
691
|
-
|
692
|
+
locked_names = @locked_specs.map(&:name)
|
693
|
+
missing = []
|
694
|
+
invalid = []
|
695
|
+
|
696
|
+
@locked_specs.each do |s|
|
697
|
+
s.dependencies.each do |dep|
|
698
|
+
next if dep.name == "bundler"
|
699
|
+
|
700
|
+
missing << s unless locked_names.include?(dep.name)
|
701
|
+
invalid << s if @locked_specs.none? {|spec| dep.matches_spec?(spec) }
|
702
|
+
end
|
692
703
|
end
|
693
704
|
|
694
705
|
if missing.any?
|
695
706
|
@locked_specs.delete(missing)
|
696
707
|
|
697
|
-
|
708
|
+
@missing_lockfile_dep = missing.first.name
|
709
|
+
elsif !@dependency_changes
|
710
|
+
@missing_lockfile_dep = current_dependencies.find do |d|
|
711
|
+
@locked_specs[d.name].empty? && d.name != "bundler"
|
712
|
+
end&.name
|
698
713
|
end
|
699
714
|
|
700
|
-
|
715
|
+
if invalid.any?
|
716
|
+
@locked_specs.delete(invalid)
|
701
717
|
|
702
|
-
|
703
|
-
|
704
|
-
end&.name
|
718
|
+
@invalid_lockfile_dep = invalid.first.name
|
719
|
+
end
|
705
720
|
end
|
706
721
|
|
707
722
|
def converge_paths
|
@@ -941,17 +956,19 @@ module Bundler
|
|
941
956
|
resolution_packages
|
942
957
|
end
|
943
958
|
|
944
|
-
def
|
945
|
-
return if Bundler.frozen_bundle?
|
946
|
-
|
947
|
-
|
948
|
-
|
959
|
+
def remove_invalid_platforms!(dependencies)
|
960
|
+
return if Bundler.frozen_bundle?
|
961
|
+
|
962
|
+
platforms.each do |platform|
|
963
|
+
next if local_platform == platform ||
|
964
|
+
(@new_platform && platforms.last == platform) ||
|
949
965
|
@path_changes ||
|
950
966
|
@dependency_changes ||
|
951
|
-
!@originally_locked_specs.
|
967
|
+
!@originally_locked_specs.incomplete_for_platform?(dependencies, platform)
|
952
968
|
|
953
|
-
|
954
|
-
|
969
|
+
remove_platform(platform)
|
970
|
+
add_current_platform if platform == Gem::Platform::RUBY
|
971
|
+
end
|
955
972
|
end
|
956
973
|
|
957
974
|
def source_map
|
data/bundler/lib/bundler/env.rb
CHANGED
@@ -40,11 +40,11 @@ module Bundler
|
|
40
40
|
|
41
41
|
out << "\n## Gemfile\n"
|
42
42
|
gemfiles.each do |gemfile|
|
43
|
-
out << "\n### #{
|
43
|
+
out << "\n### #{SharedHelpers.relative_path_to(gemfile)}\n\n"
|
44
44
|
out << "```ruby\n" << read_file(gemfile).chomp << "\n```\n"
|
45
45
|
end
|
46
46
|
|
47
|
-
out << "\n### #{Bundler.default_lockfile
|
47
|
+
out << "\n### #{SharedHelpers.relative_path_to(Bundler.default_lockfile)}\n\n"
|
48
48
|
out << "```\n" << read_file(Bundler.default_lockfile).chomp << "\n```\n"
|
49
49
|
end
|
50
50
|
|
@@ -101,7 +101,7 @@ module Bundler
|
|
101
101
|
next 1 if b_pre && !a_pre
|
102
102
|
end
|
103
103
|
|
104
|
-
if major?
|
104
|
+
if major? || locked_version.nil?
|
105
105
|
a <=> b
|
106
106
|
elsif either_version_older_than_locked?(a, b, locked_version)
|
107
107
|
a <=> b
|
@@ -117,7 +117,7 @@ module Bundler
|
|
117
117
|
end
|
118
118
|
|
119
119
|
def either_version_older_than_locked?(a, b, locked_version)
|
120
|
-
|
120
|
+
a.version < locked_version || b.version < locked_version
|
121
121
|
end
|
122
122
|
|
123
123
|
def segments_do_not_match?(a, b, level)
|
@@ -86,7 +86,7 @@ module Bundler
|
|
86
86
|
segments = version.segments
|
87
87
|
seg_end_index = version >= Gem::Version.new("1.0") ? 1 : 2
|
88
88
|
|
89
|
-
prerelease_suffix = version.to_s.
|
89
|
+
prerelease_suffix = version.to_s.delete_prefix(version.release.to_s) if version.prerelease?
|
90
90
|
"#{version_prefix}#{segments[0..seg_end_index].join(".")}#{prerelease_suffix}"
|
91
91
|
end
|
92
92
|
|
@@ -91,38 +91,12 @@ module Bundler
|
|
91
91
|
install_serially
|
92
92
|
end
|
93
93
|
|
94
|
-
check_for_unmet_dependencies
|
95
|
-
|
96
94
|
handle_error if failed_specs.any?
|
97
95
|
@specs
|
98
96
|
ensure
|
99
97
|
worker_pool&.stop
|
100
98
|
end
|
101
99
|
|
102
|
-
def check_for_unmet_dependencies
|
103
|
-
unmet_dependencies = @specs.map do |s|
|
104
|
-
[
|
105
|
-
s,
|
106
|
-
s.dependencies.reject {|dep| @specs.any? {|spec| dep.matches_spec?(spec.spec) } },
|
107
|
-
]
|
108
|
-
end.reject {|a| a.last.empty? }
|
109
|
-
return if unmet_dependencies.empty?
|
110
|
-
|
111
|
-
warning = []
|
112
|
-
warning << "Your lockfile doesn't include a valid resolution."
|
113
|
-
warning << "You can fix this by regenerating your lockfile or manually editing the bad locked gems to a version that satisfies all dependencies."
|
114
|
-
warning << "The unmet dependencies are:"
|
115
|
-
|
116
|
-
unmet_dependencies.each do |spec, unmet_spec_dependencies|
|
117
|
-
unmet_spec_dependencies.each do |unmet_spec_dependency|
|
118
|
-
found = @specs.find {|s| s.name == unmet_spec_dependency.name && !unmet_spec_dependency.matches_spec?(s.spec) }
|
119
|
-
warning << "* #{unmet_spec_dependency}, dependency of #{spec.full_name}, unsatisfied by #{found.full_name}"
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
|
-
Bundler.ui.warn(warning.join("\n"))
|
124
|
-
end
|
125
|
-
|
126
100
|
private
|
127
101
|
|
128
102
|
def failed_specs
|
@@ -12,6 +12,7 @@ module Bundler
|
|
12
12
|
end
|
13
13
|
File.open File.join(bundler_path, "setup.rb"), "w" do |file|
|
14
14
|
file.puts "require 'rbconfig'"
|
15
|
+
file.puts prevent_gem_activation
|
15
16
|
file.puts define_path_helpers
|
16
17
|
file.puts reverse_rubygems_kernel_mixin
|
17
18
|
paths.each do |path|
|
@@ -55,18 +56,24 @@ module Bundler
|
|
55
56
|
if spec.source.instance_of?(Source::Path) && spec.source.path.absolute?
|
56
57
|
full_path
|
57
58
|
else
|
58
|
-
|
59
|
+
SharedHelpers.relative_path_to(full_path, :from => Bundler.root.join(bundler_path))
|
59
60
|
end
|
60
61
|
rescue TypeError
|
61
62
|
error_message = "#{spec.name} #{spec.version} has an invalid gemspec"
|
62
63
|
raise Gem::InvalidSpecificationException.new(error_message)
|
63
64
|
end
|
64
65
|
|
65
|
-
def
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
66
|
+
def prevent_gem_activation
|
67
|
+
<<~'END'
|
68
|
+
module Kernel
|
69
|
+
remove_method(:gem) if private_method_defined?(:gem)
|
70
|
+
|
71
|
+
def gem(*)
|
72
|
+
end
|
73
|
+
|
74
|
+
private :gem
|
75
|
+
end
|
76
|
+
END
|
70
77
|
end
|
71
78
|
|
72
79
|
def define_path_helpers
|
@@ -23,13 +23,15 @@ module Bundler
|
|
23
23
|
Gem::Version.create("1.13") => [PLUGIN].freeze,
|
24
24
|
}.freeze
|
25
25
|
|
26
|
-
KNOWN_SECTIONS = SECTIONS_BY_VERSION_INTRODUCED.values.flatten
|
26
|
+
KNOWN_SECTIONS = SECTIONS_BY_VERSION_INTRODUCED.values.flatten!.freeze
|
27
27
|
|
28
28
|
ENVIRONMENT_VERSION_SECTIONS = [BUNDLED, RUBY].freeze
|
29
29
|
deprecate_constant(:ENVIRONMENT_VERSION_SECTIONS)
|
30
30
|
|
31
31
|
def self.sections_in_lockfile(lockfile_contents)
|
32
|
-
lockfile_contents.scan(/^\w[\w ]*$/)
|
32
|
+
sections = lockfile_contents.scan(/^\w[\w ]*$/)
|
33
|
+
sections.uniq!
|
34
|
+
sections
|
33
35
|
end
|
34
36
|
|
35
37
|
def self.unknown_sections_in_lockfile(lockfile_contents)
|
@@ -38,7 +40,7 @@ module Bundler
|
|
38
40
|
|
39
41
|
def self.sections_to_ignore(base_version = nil)
|
40
42
|
base_version &&= base_version.release
|
41
|
-
base_version ||= Gem::Version.create("1.0"
|
43
|
+
base_version ||= Gem::Version.create("1.0")
|
42
44
|
attributes = []
|
43
45
|
SECTIONS_BY_VERSION_INTRODUCED.each do |version, introduced|
|
44
46
|
next if version <= base_version
|
@@ -61,36 +63,36 @@ module Bundler
|
|
61
63
|
@platforms = []
|
62
64
|
@sources = []
|
63
65
|
@dependencies = {}
|
64
|
-
@
|
66
|
+
@parse_method = nil
|
65
67
|
@specs = {}
|
66
68
|
|
67
69
|
if lockfile.match?(/<<<<<<<|=======|>>>>>>>|\|\|\|\|\|\|\|/)
|
68
|
-
raise LockfileError, "Your
|
69
|
-
"Run `git checkout HEAD -- #{
|
70
|
+
raise LockfileError, "Your lockfile contains merge conflicts.\n" \
|
71
|
+
"Run `git checkout HEAD -- #{SharedHelpers.relative_lockfile_path}` first to get a clean lock."
|
70
72
|
end
|
71
73
|
|
72
|
-
lockfile.split(/(?:\r?\n)+/)
|
74
|
+
lockfile.split(/(?:\r?\n)+/) do |line|
|
73
75
|
if SOURCE.include?(line)
|
74
|
-
@
|
76
|
+
@parse_method = :parse_source
|
75
77
|
parse_source(line)
|
76
78
|
elsif line == DEPENDENCIES
|
77
|
-
@
|
79
|
+
@parse_method = :parse_dependency
|
78
80
|
elsif line == PLATFORMS
|
79
|
-
@
|
81
|
+
@parse_method = :parse_platform
|
80
82
|
elsif line == RUBY
|
81
|
-
@
|
83
|
+
@parse_method = :parse_ruby
|
82
84
|
elsif line == BUNDLED
|
83
|
-
@
|
85
|
+
@parse_method = :parse_bundled_with
|
84
86
|
elsif /^[^\s]/.match?(line)
|
85
|
-
@
|
86
|
-
elsif @
|
87
|
-
send(
|
87
|
+
@parse_method = nil
|
88
|
+
elsif @parse_method
|
89
|
+
send(@parse_method, line)
|
88
90
|
end
|
89
91
|
end
|
90
|
-
@specs = @specs.values.sort_by(&:full_name)
|
92
|
+
@specs = @specs.values.sort_by!(&:full_name)
|
91
93
|
rescue ArgumentError => e
|
92
94
|
Bundler.ui.debug(e)
|
93
|
-
raise LockfileError, "Your lockfile is unreadable. Run `rm #{
|
95
|
+
raise LockfileError, "Your lockfile is unreadable. Run `rm #{SharedHelpers.relative_lockfile_path}` " \
|
94
96
|
"and then `bundle install` to generate a new lockfile."
|
95
97
|
end
|
96
98
|
|
@@ -149,11 +151,11 @@ module Bundler
|
|
149
151
|
return unless line =~ NAME_VERSION
|
150
152
|
spaces = $1
|
151
153
|
return unless spaces.size == 2
|
152
|
-
name =
|
154
|
+
name = -$2
|
153
155
|
version = $3
|
154
156
|
pinned = $5
|
155
157
|
|
156
|
-
version = version.split(",").
|
158
|
+
version = version.split(",").each(&:strip!) if version
|
157
159
|
|
158
160
|
dep = Bundler::Dependency.new(name, version)
|
159
161
|
|
@@ -177,11 +179,13 @@ module Bundler
|
|
177
179
|
def parse_spec(line)
|
178
180
|
return unless line =~ NAME_VERSION
|
179
181
|
spaces = $1
|
180
|
-
name =
|
182
|
+
name = -$2
|
181
183
|
version = $3
|
182
|
-
platform = $4
|
183
184
|
|
184
185
|
if spaces.size == 4
|
186
|
+
# only load platform for non-dependency (spec) line
|
187
|
+
platform = $4
|
188
|
+
|
185
189
|
version = Gem::Version.new(version)
|
186
190
|
platform = platform ? Gem::Platform.new(platform) : Gem::Platform::RUBY
|
187
191
|
@current_spec = LazySpecification.new(name, version, platform)
|
@@ -190,7 +194,7 @@ module Bundler
|
|
190
194
|
|
191
195
|
@specs[@current_spec.full_name] = @current_spec
|
192
196
|
elsif spaces.size == 6
|
193
|
-
version = version.split(",").
|
197
|
+
version = version.split(",").each(&:strip!) if version
|
194
198
|
dep = Gem::Dependency.new(name, version)
|
195
199
|
@current_spec.dependencies << dep
|
196
200
|
end
|
@@ -201,13 +205,14 @@ module Bundler
|
|
201
205
|
end
|
202
206
|
|
203
207
|
def parse_bundled_with(line)
|
204
|
-
line
|
208
|
+
line.strip!
|
205
209
|
return unless Gem::Version.correct?(line)
|
206
210
|
@bundler_version = Gem::Version.create(line)
|
207
211
|
end
|
208
212
|
|
209
213
|
def parse_ruby(line)
|
210
|
-
|
214
|
+
line.strip!
|
215
|
+
@ruby_version = line
|
211
216
|
end
|
212
217
|
end
|
213
218
|
end
|