bundler 2.3.10 → 2.3.16
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 +71 -0
- data/exe/bundler +1 -1
- data/lib/bundler/build_metadata.rb +3 -3
- data/lib/bundler/cli/cache.rb +1 -1
- data/lib/bundler/cli/common.rb +1 -1
- data/lib/bundler/cli/info.rb +1 -1
- data/lib/bundler/cli/init.rb +1 -1
- data/lib/bundler/cli/install.rb +0 -2
- data/lib/bundler/cli/show.rb +1 -1
- data/lib/bundler/cli.rb +3 -7
- data/lib/bundler/current_ruby.rb +1 -0
- data/lib/bundler/definition.rb +29 -46
- data/lib/bundler/dependency.rb +20 -0
- data/lib/bundler/dsl.rb +7 -11
- data/lib/bundler/endpoint_specification.rb +4 -1
- data/lib/bundler/errors.rb +14 -4
- data/lib/bundler/fetcher/base.rb +6 -8
- data/lib/bundler/fetcher.rb +4 -0
- data/lib/bundler/friendly_errors.rb +16 -2
- data/lib/bundler/gem_helpers.rb +1 -1
- data/lib/bundler/injector.rb +4 -0
- data/lib/bundler/inline.rb +1 -11
- data/lib/bundler/installer/gem_installer.rb +14 -1
- data/lib/bundler/installer.rb +4 -13
- data/lib/bundler/lazy_specification.rb +1 -1
- data/lib/bundler/man/bundle-add.1 +7 -3
- data/lib/bundler/man/bundle-add.1.ronn +5 -2
- data/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/lib/bundler/man/bundle-cache.1 +1 -1
- data/lib/bundler/man/bundle-check.1 +1 -1
- data/lib/bundler/man/bundle-clean.1 +1 -1
- data/lib/bundler/man/bundle-config.1 +4 -4
- data/lib/bundler/man/bundle-config.1.ronn +8 -6
- data/lib/bundler/man/bundle-doctor.1 +1 -1
- data/lib/bundler/man/bundle-exec.1 +1 -1
- data/lib/bundler/man/bundle-gem.1 +1 -1
- data/lib/bundler/man/bundle-info.1 +1 -1
- data/lib/bundler/man/bundle-init.1 +1 -1
- data/lib/bundler/man/bundle-inject.1 +1 -1
- data/lib/bundler/man/bundle-install.1 +1 -1
- data/lib/bundler/man/bundle-list.1 +1 -1
- data/lib/bundler/man/bundle-lock.1 +1 -1
- data/lib/bundler/man/bundle-open.1 +1 -1
- data/lib/bundler/man/bundle-outdated.1 +1 -1
- data/lib/bundler/man/bundle-platform.1 +1 -1
- data/lib/bundler/man/bundle-pristine.1 +1 -1
- data/lib/bundler/man/bundle-remove.1 +1 -1
- data/lib/bundler/man/bundle-show.1 +1 -1
- data/lib/bundler/man/bundle-update.1 +1 -1
- data/lib/bundler/man/bundle-viz.1 +1 -1
- data/lib/bundler/man/bundle.1 +1 -1
- data/lib/bundler/man/gemfile.5 +1 -1
- data/lib/bundler/plugin/api/source.rb +3 -3
- data/lib/bundler/plugin/installer/git.rb +0 -4
- data/lib/bundler/plugin/installer/rubygems.rb +0 -4
- data/lib/bundler/process_lock.rb +1 -1
- data/lib/bundler/resolver/spec_group.rb +2 -2
- data/lib/bundler/resolver.rb +73 -43
- data/lib/bundler/ruby_version.rb +0 -13
- data/lib/bundler/rubygems_ext.rb +18 -1
- data/lib/bundler/rubygems_gem_installer.rb +11 -8
- data/lib/bundler/rubygems_integration.rb +3 -21
- data/lib/bundler/settings.rb +1 -1
- data/lib/bundler/shared_helpers.rb +9 -9
- data/lib/bundler/source/git.rb +7 -9
- data/lib/bundler/source/metadata.rb +2 -2
- data/lib/bundler/source/path.rb +1 -1
- data/lib/bundler/source/rubygems.rb +90 -86
- data/lib/bundler/source.rb +3 -4
- data/lib/bundler/spec_set.rb +5 -3
- data/lib/bundler/stub_specification.rb +5 -3
- data/lib/bundler/templates/Executable +2 -4
- data/lib/bundler/templates/Executable.bundler +1 -1
- data/lib/bundler/templates/Executable.standalone +2 -4
- data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +1 -1
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +32 -26
- data/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/lib/bundler/vendor/tsort/lib/tsort.rb +318 -319
- data/lib/bundler/version.rb +1 -1
- data/lib/bundler.rb +13 -2
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: '0194bb060d38ce7786c704aca693890461b4866ee647d6931a8e3e8f738f4ad6'
|
|
4
|
+
data.tar.gz: d6e46c6028248ad29a24bfccd9df89facbcd57186e84be8499ec903f4989b88e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9bbc74e0583c0117895f09cc1da2ae5dc9592b09b52f70f70c8efba2743bec7449230b9fc8d7210725c804bb761f98bd9a0ec8a8e417bfc2b0573154ffaacab7
|
|
7
|
+
data.tar.gz: a27eea8f0ebceb3d0e9e8b413d2c50da519c36e565e08c26f0d22f6298f75515f0d11094da6c510b74805ceae2e18e25cd61eacd40e328b565878f4ad2c66a41
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,74 @@
|
|
|
1
|
+
# 2.3.16 (June 15, 2022)
|
|
2
|
+
|
|
3
|
+
## Performance:
|
|
4
|
+
|
|
5
|
+
- Improve performance of installing gems from gem server sources [#5614](https://github.com/rubygems/rubygems/pull/5614)
|
|
6
|
+
|
|
7
|
+
# 2.3.15 (June 1, 2022)
|
|
8
|
+
|
|
9
|
+
## Enhancements:
|
|
10
|
+
|
|
11
|
+
- Show better error when previous installation fails to be removed [#5564](https://github.com/rubygems/rubygems/pull/5564)
|
|
12
|
+
- Show exception cause in bug report template [#5563](https://github.com/rubygems/rubygems/pull/5563)
|
|
13
|
+
|
|
14
|
+
## Bug fixes:
|
|
15
|
+
|
|
16
|
+
- Fix `bundle remove` by invalidating cached `Bundle.definition` [#5443](https://github.com/rubygems/rubygems/pull/5443)
|
|
17
|
+
- Fix generated standalone script when it includes default gems [#5586](https://github.com/rubygems/rubygems/pull/5586)
|
|
18
|
+
- Skip duplicated dependency warning for gemspec dev deps [#5587](https://github.com/rubygems/rubygems/pull/5587)
|
|
19
|
+
- Give better conflict resolution advice [#5581](https://github.com/rubygems/rubygems/pull/5581)
|
|
20
|
+
- Fix crash when commenting out a mirror in configuration [#5576](https://github.com/rubygems/rubygems/pull/5576)
|
|
21
|
+
- Fix crash when installing gems with symlinks [#5570](https://github.com/rubygems/rubygems/pull/5570)
|
|
22
|
+
- Ignore `Errno::EROFS` errors when creating `bundler.lock` [#5580](https://github.com/rubygems/rubygems/pull/5580)
|
|
23
|
+
- Ignore `Errno::EPERM` errors when creating `bundler.lock` [#5579](https://github.com/rubygems/rubygems/pull/5579)
|
|
24
|
+
- Fix crash when printing resolution conflicts on metadata requirements [#5562](https://github.com/rubygems/rubygems/pull/5562)
|
|
25
|
+
|
|
26
|
+
# 2.3.14 (May 18, 2022)
|
|
27
|
+
|
|
28
|
+
## Bug fixes:
|
|
29
|
+
|
|
30
|
+
- Fix confusing inline mode install output [#5530](https://github.com/rubygems/rubygems/pull/5530)
|
|
31
|
+
- Fix error message when locked version of a gem does not support running Ruby [#5525](https://github.com/rubygems/rubygems/pull/5525)
|
|
32
|
+
|
|
33
|
+
## Performance:
|
|
34
|
+
|
|
35
|
+
- Improve `bundler/setup` performance again by not deduplicating intermediate results [#5533](https://github.com/rubygems/rubygems/pull/5533)
|
|
36
|
+
|
|
37
|
+
## Documentation:
|
|
38
|
+
|
|
39
|
+
- Fix typo in documentation [#5514](https://github.com/rubygems/rubygems/pull/5514)
|
|
40
|
+
- Update man page for `require` option in `bundle add` command [#5513](https://github.com/rubygems/rubygems/pull/5513)
|
|
41
|
+
|
|
42
|
+
# 2.3.13 (May 4, 2022)
|
|
43
|
+
|
|
44
|
+
## Bug fixes:
|
|
45
|
+
|
|
46
|
+
- Fix missing required rubygems version when using old APIs [#5496](https://github.com/rubygems/rubygems/pull/5496)
|
|
47
|
+
- Fix crash when gem used twice in Gemfile under different platforms [#5187](https://github.com/rubygems/rubygems/pull/5187)
|
|
48
|
+
|
|
49
|
+
## Performance:
|
|
50
|
+
|
|
51
|
+
- Speed up `bundler/setup` time [#5503](https://github.com/rubygems/rubygems/pull/5503)
|
|
52
|
+
|
|
53
|
+
# 2.3.12 (April 20, 2022)
|
|
54
|
+
|
|
55
|
+
## Enhancements:
|
|
56
|
+
|
|
57
|
+
- Improve Ruby version resolution conflicts [#5474](https://github.com/rubygems/rubygems/pull/5474)
|
|
58
|
+
- Stop considering `RUBY_PATCHLEVEL` for resolution [#5472](https://github.com/rubygems/rubygems/pull/5472)
|
|
59
|
+
- Add modern rubies as valid platform values in Gemfile DSL [#5469](https://github.com/rubygems/rubygems/pull/5469)
|
|
60
|
+
|
|
61
|
+
# 2.3.11 (April 7, 2022)
|
|
62
|
+
|
|
63
|
+
## Enhancements:
|
|
64
|
+
|
|
65
|
+
- Bump actions/checkout to 3 in bundler gem template [#5445](https://github.com/rubygems/rubygems/pull/5445)
|
|
66
|
+
- Prefer `__dir__` to `__FILE__` [#5444](https://github.com/rubygems/rubygems/pull/5444)
|
|
67
|
+
|
|
68
|
+
## Documentation:
|
|
69
|
+
|
|
70
|
+
- Update bundler documentation to reflect bundle config scope changes [#5441](https://github.com/rubygems/rubygems/pull/5441)
|
|
71
|
+
|
|
1
72
|
# 2.3.10 (March 23, 2022)
|
|
2
73
|
|
|
3
74
|
## Enhancements:
|
data/exe/bundler
CHANGED
|
@@ -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-06-15".freeze
|
|
8
|
+
@git_commit_sha = "324ee6e542".freeze
|
|
9
9
|
@release = true
|
|
10
10
|
# end ivars
|
|
11
11
|
|
|
@@ -29,7 +29,7 @@ module Bundler
|
|
|
29
29
|
|
|
30
30
|
# If Bundler has been installed without its .git directory and without a
|
|
31
31
|
# commit instance variable then we can't determine its commits SHA.
|
|
32
|
-
git_dir = File.
|
|
32
|
+
git_dir = File.expand_path("../../../.git", __dir__)
|
|
33
33
|
if File.directory?(git_dir)
|
|
34
34
|
return @git_commit_sha = Dir.chdir(git_dir) { `git rev-parse --short HEAD`.strip.freeze }
|
|
35
35
|
end
|
data/lib/bundler/cli/cache.rb
CHANGED
|
@@ -14,7 +14,7 @@ module Bundler
|
|
|
14
14
|
Bundler.settings.set_command_option_if_given :cache_path, options["cache-path"]
|
|
15
15
|
|
|
16
16
|
setup_cache_all
|
|
17
|
-
install
|
|
17
|
+
install unless Bundler.settings[:no_install]
|
|
18
18
|
|
|
19
19
|
# TODO: move cache contents here now that all bundles are locked
|
|
20
20
|
custom_path = Bundler.settings[:path] if options[:path]
|
data/lib/bundler/cli/common.rb
CHANGED
|
@@ -40,7 +40,7 @@ module Bundler
|
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
def self.verbalize_groups(groups)
|
|
43
|
-
groups.map!{|g| "'#{g}'" }
|
|
43
|
+
groups.map! {|g| "'#{g}'" }
|
|
44
44
|
group_list = [groups[0...-1].join(", "), groups[-1..-1]].
|
|
45
45
|
reject {|s| s.to_s.empty? }.join(" and ")
|
|
46
46
|
group_str = groups.size == 1 ? "group" : "groups"
|
data/lib/bundler/cli/info.rb
CHANGED
data/lib/bundler/cli/init.rb
CHANGED
|
@@ -32,7 +32,7 @@ module Bundler
|
|
|
32
32
|
file << spec.to_gemfile
|
|
33
33
|
end
|
|
34
34
|
else
|
|
35
|
-
FileUtils.cp(File.expand_path("
|
|
35
|
+
FileUtils.cp(File.expand_path("../templates/#{gemfile}", __dir__), gemfile)
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
puts "Writing new #{gemfile} to #{SharedHelpers.pwd}/#{gemfile}"
|
data/lib/bundler/cli/install.rb
CHANGED
|
@@ -161,8 +161,6 @@ module Bundler
|
|
|
161
161
|
|
|
162
162
|
Bundler.settings.set_command_option_if_given :no_prune, options["no-prune"]
|
|
163
163
|
|
|
164
|
-
Bundler.settings.set_command_option_if_given :no_install, options["no-install"]
|
|
165
|
-
|
|
166
164
|
Bundler.settings.set_command_option_if_given :clean, options["clean"]
|
|
167
165
|
|
|
168
166
|
normalize_groups if options[:without] || options[:with]
|
data/lib/bundler/cli/show.rb
CHANGED
data/lib/bundler/cli.rb
CHANGED
|
@@ -251,9 +251,7 @@ module Bundler
|
|
|
251
251
|
remembered_negative_flag_deprecation("no-deployment")
|
|
252
252
|
|
|
253
253
|
require_relative "cli/install"
|
|
254
|
-
|
|
255
|
-
Install.new(options.dup).run
|
|
256
|
-
end
|
|
254
|
+
Install.new(options.dup).run
|
|
257
255
|
end
|
|
258
256
|
|
|
259
257
|
map aliases_for("install")
|
|
@@ -299,9 +297,7 @@ module Bundler
|
|
|
299
297
|
def update(*gems)
|
|
300
298
|
SharedHelpers.major_deprecation(2, "The `--force` option has been renamed to `--redownload`") if ARGV.include?("--force")
|
|
301
299
|
require_relative "cli/update"
|
|
302
|
-
|
|
303
|
-
Update.new(options, gems).run
|
|
304
|
-
end
|
|
300
|
+
Update.new(options, gems).run
|
|
305
301
|
end
|
|
306
302
|
|
|
307
303
|
desc "show GEM [OPTIONS]", "Shows all gems that are part of the bundle, or the path to a given gem"
|
|
@@ -610,7 +606,7 @@ module Bundler
|
|
|
610
606
|
private :gem
|
|
611
607
|
|
|
612
608
|
def self.source_root
|
|
613
|
-
File.expand_path(
|
|
609
|
+
File.expand_path("templates", __dir__)
|
|
614
610
|
end
|
|
615
611
|
|
|
616
612
|
desc "clean [OPTIONS]", "Cleans up unused gems in your bundler directory", :hide => true
|
data/lib/bundler/current_ruby.rb
CHANGED
data/lib/bundler/definition.rb
CHANGED
|
@@ -87,10 +87,11 @@ module Bundler
|
|
|
87
87
|
@platforms = @locked_platforms.dup
|
|
88
88
|
@locked_bundler_version = @locked_gems.bundler_version
|
|
89
89
|
@locked_ruby_version = @locked_gems.ruby_version
|
|
90
|
+
@originally_locked_specs = SpecSet.new(@locked_gems.specs)
|
|
90
91
|
|
|
91
92
|
if unlock != true
|
|
92
93
|
@locked_deps = @locked_gems.dependencies
|
|
93
|
-
@locked_specs =
|
|
94
|
+
@locked_specs = @originally_locked_specs
|
|
94
95
|
@locked_sources = @locked_gems.sources
|
|
95
96
|
else
|
|
96
97
|
@unlock = {}
|
|
@@ -254,20 +255,18 @@ module Bundler
|
|
|
254
255
|
#
|
|
255
256
|
# @return [SpecSet] resolved dependencies
|
|
256
257
|
def resolve
|
|
257
|
-
@resolve ||=
|
|
258
|
+
@resolve ||= if Bundler.frozen_bundle?
|
|
259
|
+
Bundler.ui.debug "Frozen, using resolution from the lockfile"
|
|
260
|
+
@locked_specs
|
|
261
|
+
elsif !unlocking? && nothing_changed?
|
|
262
|
+
Bundler.ui.debug("Found no changes, using resolution from the lockfile")
|
|
263
|
+
SpecSet.new(filter_specs(@locked_specs, @dependencies.select {|dep| @locked_specs[dep].any? }))
|
|
264
|
+
else
|
|
258
265
|
last_resolve = converge_locked_specs
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
Bundler.ui.debug("Found no changes, using resolution from the lockfile")
|
|
264
|
-
last_resolve
|
|
265
|
-
else
|
|
266
|
-
# Run a resolve against the locally available gems
|
|
267
|
-
Bundler.ui.debug("Found changes from the lockfile, re-resolving dependencies because #{change_reason}")
|
|
268
|
-
expanded_dependencies = expand_dependencies(dependencies + metadata_dependencies, true)
|
|
269
|
-
Resolver.resolve(expanded_dependencies, source_requirements, last_resolve, gem_version_promoter, additional_base_requirements_for_resolve, platforms)
|
|
270
|
-
end
|
|
266
|
+
# Run a resolve against the locally available gems
|
|
267
|
+
Bundler.ui.debug("Found changes from the lockfile, re-resolving dependencies because #{change_reason}")
|
|
268
|
+
expanded_dependencies = expand_dependencies(dependencies + metadata_dependencies, true)
|
|
269
|
+
Resolver.resolve(expanded_dependencies, source_requirements, last_resolve, gem_version_promoter, additional_base_requirements_for_resolve, platforms)
|
|
271
270
|
end
|
|
272
271
|
end
|
|
273
272
|
|
|
@@ -464,6 +463,10 @@ module Bundler
|
|
|
464
463
|
|
|
465
464
|
private
|
|
466
465
|
|
|
466
|
+
def filter_specs(specs, deps)
|
|
467
|
+
SpecSet.new(specs).for(expand_dependencies(deps, true), false, false)
|
|
468
|
+
end
|
|
469
|
+
|
|
467
470
|
def materialize(dependencies)
|
|
468
471
|
specs = resolve.materialize(dependencies)
|
|
469
472
|
missing_specs = specs.missing_specs
|
|
@@ -679,17 +682,17 @@ module Bundler
|
|
|
679
682
|
end
|
|
680
683
|
|
|
681
684
|
def converge_specs(specs)
|
|
682
|
-
deps = []
|
|
683
685
|
converged = []
|
|
686
|
+
|
|
687
|
+
deps = @dependencies.select do |dep|
|
|
688
|
+
specs[dep].any? {|s| s.satisfies?(dep) && (!dep.source || s.source.include?(dep.source)) }
|
|
689
|
+
end
|
|
690
|
+
|
|
684
691
|
specs.each do |s|
|
|
685
692
|
# Replace the locked dependency's source with the equivalent source from the Gemfile
|
|
686
693
|
dep = @dependencies.find {|d| s.satisfies?(d) }
|
|
687
694
|
|
|
688
|
-
|
|
689
|
-
deps << dep
|
|
690
|
-
end
|
|
691
|
-
|
|
692
|
-
s.source = (dep && dep.source) || sources.get(s.source) || sources.default_source unless Bundler.frozen_bundle?
|
|
695
|
+
s.source = (dep && dep.source) || sources.get(s.source) || sources.default_source
|
|
693
696
|
|
|
694
697
|
next if @unlock[:sources].include?(s.source.name)
|
|
695
698
|
|
|
@@ -726,34 +729,14 @@ module Bundler
|
|
|
726
729
|
end
|
|
727
730
|
end
|
|
728
731
|
|
|
729
|
-
|
|
730
|
-
SpecSet.new(resolve.for(expand_dependencies(deps, true), false, false).reject{|s| @unlock[:gems].include?(s.name) })
|
|
732
|
+
SpecSet.new(filter_specs(converged, deps).reject {|s| @unlock[:gems].include?(s.name) })
|
|
731
733
|
end
|
|
732
734
|
|
|
733
735
|
def metadata_dependencies
|
|
734
|
-
@metadata_dependencies ||=
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
Dependency.new("RubyGems\0", Gem::VERSION),
|
|
739
|
-
]
|
|
740
|
-
end
|
|
741
|
-
end
|
|
742
|
-
|
|
743
|
-
def ruby_version_requirements(ruby_version)
|
|
744
|
-
return [] unless ruby_version
|
|
745
|
-
if ruby_version.patchlevel
|
|
746
|
-
[ruby_version.to_gem_version_with_patchlevel]
|
|
747
|
-
else
|
|
748
|
-
ruby_version.versions.map do |version|
|
|
749
|
-
requirement = Gem::Requirement.new(version)
|
|
750
|
-
if requirement.exact?
|
|
751
|
-
"~> #{version}.0"
|
|
752
|
-
else
|
|
753
|
-
requirement
|
|
754
|
-
end
|
|
755
|
-
end
|
|
756
|
-
end
|
|
736
|
+
@metadata_dependencies ||= [
|
|
737
|
+
Dependency.new("Ruby\0", RubyVersion.system.gem_version),
|
|
738
|
+
Dependency.new("RubyGems\0", Gem::VERSION),
|
|
739
|
+
]
|
|
757
740
|
end
|
|
758
741
|
|
|
759
742
|
def expand_dependencies(dependencies, remote = false)
|
|
@@ -821,7 +804,7 @@ module Bundler
|
|
|
821
804
|
|
|
822
805
|
def additional_base_requirements_for_resolve
|
|
823
806
|
return [] unless @locked_gems && unlocking? && !sources.expired_sources?(@locked_gems.sources)
|
|
824
|
-
converge_specs(@
|
|
807
|
+
converge_specs(@originally_locked_specs).map do |locked_spec|
|
|
825
808
|
name = locked_spec.name
|
|
826
809
|
dep = Gem::Dependency.new(name, ">= #{locked_spec.version}")
|
|
827
810
|
DepProxy.get_proxy(dep, locked_spec.platform)
|
data/lib/bundler/dependency.rb
CHANGED
|
@@ -9,6 +9,7 @@ module Bundler
|
|
|
9
9
|
attr_reader :autorequire
|
|
10
10
|
attr_reader :groups, :platforms, :gemfile, :git, :github, :branch, :ref
|
|
11
11
|
|
|
12
|
+
# rubocop:disable Naming/VariableNumber
|
|
12
13
|
PLATFORM_MAP = {
|
|
13
14
|
:ruby => Gem::Platform::RUBY,
|
|
14
15
|
:ruby_18 => Gem::Platform::RUBY,
|
|
@@ -20,6 +21,9 @@ module Bundler
|
|
|
20
21
|
:ruby_24 => Gem::Platform::RUBY,
|
|
21
22
|
:ruby_25 => Gem::Platform::RUBY,
|
|
22
23
|
:ruby_26 => Gem::Platform::RUBY,
|
|
24
|
+
:ruby_27 => Gem::Platform::RUBY,
|
|
25
|
+
:ruby_30 => Gem::Platform::RUBY,
|
|
26
|
+
:ruby_31 => Gem::Platform::RUBY,
|
|
23
27
|
:mri => Gem::Platform::RUBY,
|
|
24
28
|
:mri_18 => Gem::Platform::RUBY,
|
|
25
29
|
:mri_19 => Gem::Platform::RUBY,
|
|
@@ -30,6 +34,9 @@ module Bundler
|
|
|
30
34
|
:mri_24 => Gem::Platform::RUBY,
|
|
31
35
|
:mri_25 => Gem::Platform::RUBY,
|
|
32
36
|
:mri_26 => Gem::Platform::RUBY,
|
|
37
|
+
:mri_27 => Gem::Platform::RUBY,
|
|
38
|
+
:mri_30 => Gem::Platform::RUBY,
|
|
39
|
+
:mri_31 => Gem::Platform::RUBY,
|
|
33
40
|
:rbx => Gem::Platform::RUBY,
|
|
34
41
|
:truffleruby => Gem::Platform::RUBY,
|
|
35
42
|
:jruby => Gem::Platform::JAVA,
|
|
@@ -45,6 +52,9 @@ module Bundler
|
|
|
45
52
|
:mswin_24 => Gem::Platform::MSWIN,
|
|
46
53
|
:mswin_25 => Gem::Platform::MSWIN,
|
|
47
54
|
:mswin_26 => Gem::Platform::MSWIN,
|
|
55
|
+
:mswin_27 => Gem::Platform::MSWIN,
|
|
56
|
+
:mswin_30 => Gem::Platform::MSWIN,
|
|
57
|
+
:mswin_31 => Gem::Platform::MSWIN,
|
|
48
58
|
:mswin64 => Gem::Platform::MSWIN64,
|
|
49
59
|
:mswin64_19 => Gem::Platform::MSWIN64,
|
|
50
60
|
:mswin64_20 => Gem::Platform::MSWIN64,
|
|
@@ -54,6 +64,9 @@ module Bundler
|
|
|
54
64
|
:mswin64_24 => Gem::Platform::MSWIN64,
|
|
55
65
|
:mswin64_25 => Gem::Platform::MSWIN64,
|
|
56
66
|
:mswin64_26 => Gem::Platform::MSWIN64,
|
|
67
|
+
:mswin64_27 => Gem::Platform::MSWIN64,
|
|
68
|
+
:mswin64_30 => Gem::Platform::MSWIN64,
|
|
69
|
+
:mswin64_31 => Gem::Platform::MSWIN64,
|
|
57
70
|
:mingw => Gem::Platform::MINGW,
|
|
58
71
|
:mingw_18 => Gem::Platform::MINGW,
|
|
59
72
|
:mingw_19 => Gem::Platform::MINGW,
|
|
@@ -64,6 +77,9 @@ module Bundler
|
|
|
64
77
|
:mingw_24 => Gem::Platform::MINGW,
|
|
65
78
|
:mingw_25 => Gem::Platform::MINGW,
|
|
66
79
|
:mingw_26 => Gem::Platform::MINGW,
|
|
80
|
+
:mingw_27 => Gem::Platform::MINGW,
|
|
81
|
+
:mingw_30 => Gem::Platform::MINGW,
|
|
82
|
+
:mingw_31 => Gem::Platform::MINGW,
|
|
67
83
|
:x64_mingw => Gem::Platform::X64_MINGW,
|
|
68
84
|
:x64_mingw_20 => Gem::Platform::X64_MINGW,
|
|
69
85
|
:x64_mingw_21 => Gem::Platform::X64_MINGW,
|
|
@@ -72,7 +88,11 @@ module Bundler
|
|
|
72
88
|
:x64_mingw_24 => Gem::Platform::X64_MINGW,
|
|
73
89
|
:x64_mingw_25 => Gem::Platform::X64_MINGW,
|
|
74
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,
|
|
75
94
|
}.freeze
|
|
95
|
+
# rubocop:enable Naming/VariableNumber
|
|
76
96
|
|
|
77
97
|
def initialize(name, version, options = {}, &blk)
|
|
78
98
|
type = options["type"] || :runtime
|
data/lib/bundler/dsl.rb
CHANGED
|
@@ -46,7 +46,7 @@ module Bundler
|
|
|
46
46
|
@gemfile = expanded_gemfile_path
|
|
47
47
|
@gemfiles << expanded_gemfile_path
|
|
48
48
|
contents ||= Bundler.read_file(@gemfile.to_s)
|
|
49
|
-
instance_eval(contents.dup.tap{|x| x.untaint if RUBY_VERSION < "2.7" }, gemfile.to_s, 1)
|
|
49
|
+
instance_eval(contents.dup.tap {|x| x.untaint if RUBY_VERSION < "2.7" }, gemfile.to_s, 1)
|
|
50
50
|
rescue Exception => e # rubocop:disable Lint/RescueException
|
|
51
51
|
message = "There was an error " \
|
|
52
52
|
"#{e.is_a?(GemfileEvalError) ? "evaluating" : "parsing"} " \
|
|
@@ -124,19 +124,17 @@ module Bundler
|
|
|
124
124
|
raise GemfileError, "You cannot specify the same gem twice with different version requirements.\n" \
|
|
125
125
|
"You specified: #{current.name} (#{current.requirement}) and #{dep.name} (#{dep.requirement})" \
|
|
126
126
|
"#{update_prompt}"
|
|
127
|
+
elsif current.source != dep.source
|
|
128
|
+
return if dep.type == :development
|
|
129
|
+
raise GemfileError, "You cannot specify the same gem twice coming from different sources.\n" \
|
|
130
|
+
"You specified that #{dep.name} (#{dep.requirement}) should come from " \
|
|
131
|
+
"#{current.source || "an unspecified source"} and #{dep.source}\n"
|
|
127
132
|
else
|
|
128
133
|
Bundler.ui.warn "Your Gemfile lists the gem #{current.name} (#{current.requirement}) more than once.\n" \
|
|
129
134
|
"You should probably keep only one of them.\n" \
|
|
130
135
|
"Remove any duplicate entries and specify the gem only once.\n" \
|
|
131
136
|
"While it's not a problem now, it could cause errors if you change the version of one of them later."
|
|
132
137
|
end
|
|
133
|
-
|
|
134
|
-
if current.source != dep.source
|
|
135
|
-
return if dep.type == :development
|
|
136
|
-
raise GemfileError, "You cannot specify the same gem twice coming from different sources.\n" \
|
|
137
|
-
"You specified that #{dep.name} (#{dep.requirement}) should come from " \
|
|
138
|
-
"#{current.source || "an unspecified source"} and #{dep.source}\n"
|
|
139
|
-
end
|
|
140
138
|
end
|
|
141
139
|
end
|
|
142
140
|
|
|
@@ -513,9 +511,7 @@ module Bundler
|
|
|
513
511
|
# be raised.
|
|
514
512
|
#
|
|
515
513
|
def contents
|
|
516
|
-
@contents ||=
|
|
517
|
-
dsl_path && File.exist?(dsl_path) && File.read(dsl_path)
|
|
518
|
-
end
|
|
514
|
+
@contents ||= dsl_path && File.exist?(dsl_path) && File.read(dsl_path)
|
|
519
515
|
end
|
|
520
516
|
|
|
521
517
|
# The message of the exception reports the content of podspec for the
|
|
@@ -26,8 +26,11 @@ module Bundler
|
|
|
26
26
|
@required_ruby_version ||= _remote_specification.required_ruby_version
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
+
# A fallback is included because the original version of the specification
|
|
30
|
+
# API didn't include that field, so some marshalled specs in the index have it
|
|
31
|
+
# set to +nil+.
|
|
29
32
|
def required_rubygems_version
|
|
30
|
-
@required_rubygems_version ||= _remote_specification.required_rubygems_version
|
|
33
|
+
@required_rubygems_version ||= _remote_specification.required_rubygems_version || Gem::Requirement.default
|
|
31
34
|
end
|
|
32
35
|
|
|
33
36
|
def fetch_platform
|
data/lib/bundler/errors.rb
CHANGED
|
@@ -41,12 +41,14 @@ module Bundler
|
|
|
41
41
|
class GemspecError < BundlerError; status_code(14); end
|
|
42
42
|
class InvalidOption < BundlerError; status_code(15); end
|
|
43
43
|
class ProductionError < BundlerError; status_code(16); end
|
|
44
|
+
|
|
44
45
|
class HTTPError < BundlerError
|
|
45
46
|
status_code(17)
|
|
46
47
|
def filter_uri(uri)
|
|
47
48
|
URICredentialsFilter.credential_filtered_uri(uri)
|
|
48
49
|
end
|
|
49
50
|
end
|
|
51
|
+
|
|
50
52
|
class RubyVersionMismatch < BundlerError; status_code(18); end
|
|
51
53
|
class SecurityError < BundlerError; status_code(19); end
|
|
52
54
|
class LockfileError < BundlerError; status_code(20); end
|
|
@@ -79,10 +81,6 @@ module Bundler
|
|
|
79
81
|
case @permission_type
|
|
80
82
|
when :create
|
|
81
83
|
"executable permissions for all parent directories and write permissions for `#{parent_folder}`"
|
|
82
|
-
when :delete
|
|
83
|
-
permissions = "executable permissions for all parent directories and write permissions for `#{parent_folder}`"
|
|
84
|
-
permissions += ", and the same thing for all subdirectories inside #{@path}" if File.directory?(@path)
|
|
85
|
-
permissions
|
|
86
84
|
else
|
|
87
85
|
"#{@permission_type} permissions for that path"
|
|
88
86
|
end
|
|
@@ -172,4 +170,16 @@ module Bundler
|
|
|
172
170
|
|
|
173
171
|
status_code(32)
|
|
174
172
|
end
|
|
173
|
+
|
|
174
|
+
class DirectoryRemovalError < BundlerError
|
|
175
|
+
def initialize(orig_exception, msg)
|
|
176
|
+
full_message = "#{msg}.\n" \
|
|
177
|
+
"The underlying error was #{orig_exception.class}: #{orig_exception.message}, with backtrace:\n" \
|
|
178
|
+
" #{orig_exception.backtrace.join("\n ")}\n\n" \
|
|
179
|
+
"Bundler Error Backtrace:"
|
|
180
|
+
super(full_message)
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
status_code(36)
|
|
184
|
+
end
|
|
175
185
|
end
|
data/lib/bundler/fetcher/base.rb
CHANGED
|
@@ -19,14 +19,12 @@ module Bundler
|
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
def fetch_uri
|
|
22
|
-
@fetch_uri ||=
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
remote_uri
|
|
29
|
-
end
|
|
22
|
+
@fetch_uri ||= if remote_uri.host == "rubygems.org"
|
|
23
|
+
uri = remote_uri.dup
|
|
24
|
+
uri.host = "index.rubygems.org"
|
|
25
|
+
uri
|
|
26
|
+
else
|
|
27
|
+
remote_uri
|
|
30
28
|
end
|
|
31
29
|
end
|
|
32
30
|
|
data/lib/bundler/fetcher.rb
CHANGED
|
@@ -20,6 +20,7 @@ module Bundler
|
|
|
20
20
|
class TooManyRequestsError < HTTPError; end
|
|
21
21
|
# This error is raised if the API returns a 413 (only printed in verbose)
|
|
22
22
|
class FallbackError < HTTPError; end
|
|
23
|
+
|
|
23
24
|
# This is the error raised if OpenSSL fails the cert verification
|
|
24
25
|
class CertificateFailureError < HTTPError
|
|
25
26
|
def initialize(remote_uri)
|
|
@@ -33,6 +34,7 @@ module Bundler
|
|
|
33
34
|
" sources and change 'https' to 'http'."
|
|
34
35
|
end
|
|
35
36
|
end
|
|
37
|
+
|
|
36
38
|
# This is the error raised when a source is HTTPS and OpenSSL didn't load
|
|
37
39
|
class SSLError < HTTPError
|
|
38
40
|
def initialize(msg = nil)
|
|
@@ -42,6 +44,7 @@ module Bundler
|
|
|
42
44
|
"using RVM are available at rvm.io/packages/openssl."
|
|
43
45
|
end
|
|
44
46
|
end
|
|
47
|
+
|
|
45
48
|
# This error is raised if HTTP authentication is required, but not provided.
|
|
46
49
|
class AuthenticationRequiredError < HTTPError
|
|
47
50
|
def initialize(remote_uri)
|
|
@@ -52,6 +55,7 @@ module Bundler
|
|
|
52
55
|
"or by storing the credentials in the `#{Settings.key_for(remote_uri)}` environment variable"
|
|
53
56
|
end
|
|
54
57
|
end
|
|
58
|
+
|
|
55
59
|
# This error is raised if HTTP authentication is provided, but incorrect.
|
|
56
60
|
class BadAuthenticationError < HTTPError
|
|
57
61
|
def initialize(remote_uri)
|
|
@@ -65,8 +65,7 @@ module Bundler
|
|
|
65
65
|
--- ERROR REPORT TEMPLATE -------------------------------------------------------
|
|
66
66
|
|
|
67
67
|
```
|
|
68
|
-
#{e
|
|
69
|
-
#{e.backtrace && e.backtrace.join("\n ").chomp}
|
|
68
|
+
#{exception_message(e)}
|
|
70
69
|
```
|
|
71
70
|
|
|
72
71
|
#{Bundler::Env.report}
|
|
@@ -85,6 +84,21 @@ module Bundler
|
|
|
85
84
|
EOS
|
|
86
85
|
end
|
|
87
86
|
|
|
87
|
+
def exception_message(error)
|
|
88
|
+
message = serialized_exception_for(error)
|
|
89
|
+
cause = error.cause
|
|
90
|
+
return message unless cause
|
|
91
|
+
|
|
92
|
+
message + serialized_exception_for(cause)
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def serialized_exception_for(e)
|
|
96
|
+
<<-EOS.gsub(/^ {8}/, "")
|
|
97
|
+
#{e.class}: #{e.message}
|
|
98
|
+
#{e.backtrace && e.backtrace.join("\n ").chomp}
|
|
99
|
+
EOS
|
|
100
|
+
end
|
|
101
|
+
|
|
88
102
|
def issues_url(exception)
|
|
89
103
|
message = exception.message.lines.first.tr(":", " ").chomp
|
|
90
104
|
message = message.split("-").first if exception.is_a?(Errno)
|
data/lib/bundler/gem_helpers.rb
CHANGED
|
@@ -48,7 +48,7 @@ module Bundler
|
|
|
48
48
|
sorted_matching = matching.sort_by {|spec| platform_specificity_match(spec.platform, platform) }
|
|
49
49
|
exemplary_spec = sorted_matching.first
|
|
50
50
|
|
|
51
|
-
sorted_matching.take_while{|spec| same_specificity(platform, spec, exemplary_spec) && same_deps(spec, exemplary_spec) }
|
|
51
|
+
sorted_matching.take_while {|spec| same_specificity(platform, spec, exemplary_spec) && same_deps(spec, exemplary_spec) }
|
|
52
52
|
end
|
|
53
53
|
module_function :select_best_platform_match
|
|
54
54
|
|
data/lib/bundler/injector.rb
CHANGED
|
@@ -72,6 +72,10 @@ module Bundler
|
|
|
72
72
|
|
|
73
73
|
deps.each {|dep| Bundler.ui.confirm "#{SharedHelpers.pretty_dependency(dep, false)} was removed." }
|
|
74
74
|
end
|
|
75
|
+
|
|
76
|
+
# Invalidate the cached Bundler.definition.
|
|
77
|
+
# This prevents e.g. `bundle remove ...` from using outdated information.
|
|
78
|
+
Bundler.reset_paths!
|
|
75
79
|
end
|
|
76
80
|
|
|
77
81
|
private
|
data/lib/bundler/inline.rb
CHANGED
|
@@ -38,12 +38,7 @@ def gemfile(install = false, options = {}, &gemfile)
|
|
|
38
38
|
raise ArgumentError, "Unknown options: #{opts.keys.join(", ")}" unless opts.empty?
|
|
39
39
|
|
|
40
40
|
begin
|
|
41
|
-
|
|
42
|
-
bundler_module = class << Bundler; self; end
|
|
43
|
-
bundler_module.send(:remove_method, :root)
|
|
44
|
-
def Bundler.root
|
|
45
|
-
Bundler::SharedHelpers.pwd.expand_path
|
|
46
|
-
end
|
|
41
|
+
Bundler.instance_variable_set(:@bundle_path, Pathname.new(Gem.dir))
|
|
47
42
|
old_gemfile = ENV["BUNDLE_GEMFILE"]
|
|
48
43
|
Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", "Gemfile"
|
|
49
44
|
|
|
@@ -71,11 +66,6 @@ def gemfile(install = false, options = {}, &gemfile)
|
|
|
71
66
|
runtime.setup.require
|
|
72
67
|
end
|
|
73
68
|
ensure
|
|
74
|
-
if bundler_module
|
|
75
|
-
bundler_module.send(:remove_method, :root)
|
|
76
|
-
bundler_module.send(:define_method, :root, old_root)
|
|
77
|
-
end
|
|
78
|
-
|
|
79
69
|
if old_gemfile
|
|
80
70
|
ENV["BUNDLE_GEMFILE"] = old_gemfile
|
|
81
71
|
else
|