bundler 2.2.21 → 2.2.25
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of bundler might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +63 -0
- data/lib/bundler.rb +4 -9
- data/lib/bundler/build_metadata.rb +2 -2
- data/lib/bundler/cli.rb +7 -0
- data/lib/bundler/cli/cache.rb +1 -1
- data/lib/bundler/cli/doctor.rb +12 -2
- data/lib/bundler/cli/install.rb +5 -18
- data/lib/bundler/cli/list.rb +7 -1
- data/lib/bundler/cli/lock.rb +5 -1
- data/lib/bundler/cli/open.rb +1 -2
- data/lib/bundler/cli/update.rb +9 -4
- data/lib/bundler/current_ruby.rb +4 -4
- data/lib/bundler/definition.rb +48 -93
- data/lib/bundler/dsl.rb +23 -21
- data/lib/bundler/feature_flag.rb +0 -1
- data/lib/bundler/fetcher/downloader.rb +1 -2
- data/lib/bundler/index.rb +1 -5
- data/lib/bundler/installer.rb +4 -4
- data/lib/bundler/installer/gem_installer.rb +3 -16
- data/lib/bundler/installer/standalone.rb +1 -1
- data/lib/bundler/lockfile_parser.rb +3 -20
- data/lib/bundler/man/bundle-add.1 +1 -1
- 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 +1 -4
- data/lib/bundler/man/bundle-config.1.ronn +0 -3
- 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 +4 -4
- data/lib/bundler/man/bundle-update.1.ronn +3 -3
- 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.rb +2 -0
- data/lib/bundler/plugin/index.rb +4 -1
- data/lib/bundler/plugin/installer.rb +1 -1
- data/lib/bundler/resolver.rb +1 -1
- data/lib/bundler/rubygems_ext.rb +22 -6
- data/lib/bundler/rubygems_gem_installer.rb +5 -1
- data/lib/bundler/runtime.rb +16 -9
- data/lib/bundler/settings.rb +4 -7
- data/lib/bundler/setup.rb +2 -2
- data/lib/bundler/shared_helpers.rb +0 -7
- data/lib/bundler/source/git/git_proxy.rb +1 -2
- data/lib/bundler/source/rubygems.rb +5 -14
- data/lib/bundler/source_list.rb +50 -20
- data/lib/bundler/spec_set.rb +15 -42
- data/lib/bundler/templates/Executable.bundler +6 -6
- data/lib/bundler/version.rb +1 -1
- data/lib/bundler/worker.rb +17 -2
- metadata +3 -3
data/lib/bundler/spec_set.rb
CHANGED
@@ -11,15 +11,14 @@ module Bundler
|
|
11
11
|
@specs = specs
|
12
12
|
end
|
13
13
|
|
14
|
-
def for(dependencies,
|
14
|
+
def for(dependencies, check = false, match_current_platform = false)
|
15
15
|
handled = []
|
16
16
|
deps = dependencies.dup
|
17
17
|
specs = []
|
18
|
-
skip += ["bundler"]
|
19
18
|
|
20
19
|
loop do
|
21
20
|
break unless dep = deps.shift
|
22
|
-
next if handled.
|
21
|
+
next if handled.any?{|d| d.name == dep.name && (match_current_platform || d.__platform == dep.__platform) } || dep.name == "bundler"
|
23
22
|
|
24
23
|
handled << dep
|
25
24
|
|
@@ -34,11 +33,6 @@ module Bundler
|
|
34
33
|
end
|
35
34
|
elsif check
|
36
35
|
return false
|
37
|
-
elsif raise_on_missing
|
38
|
-
others = lookup[dep.name] if match_current_platform
|
39
|
-
message = "Unable to find a spec satisfying #{dep} in the set. Perhaps the lockfile is corrupted?"
|
40
|
-
message += " Found #{others.join(", ")} that did not match the current platform." if others && !others.empty?
|
41
|
-
raise GemNotFound, message
|
42
36
|
end
|
43
37
|
end
|
44
38
|
|
@@ -46,11 +40,7 @@ module Bundler
|
|
46
40
|
specs << spec
|
47
41
|
end
|
48
42
|
|
49
|
-
check ? true :
|
50
|
-
end
|
51
|
-
|
52
|
-
def valid_for?(deps)
|
53
|
-
self.for(deps, [], true)
|
43
|
+
check ? true : specs
|
54
44
|
end
|
55
45
|
|
56
46
|
def [](key)
|
@@ -76,52 +66,35 @@ module Bundler
|
|
76
66
|
lookup.dup
|
77
67
|
end
|
78
68
|
|
79
|
-
def materialize(deps
|
80
|
-
materialized = self.for(deps,
|
81
|
-
|
82
|
-
materialized.group_by(&:source).each do |source, specs|
|
83
|
-
next unless specs.any?{|s| s.is_a?(LazySpecification) }
|
84
|
-
|
85
|
-
source.local!
|
86
|
-
names = -> { specs.map(&:name).uniq }
|
87
|
-
source.double_check_for(names)
|
88
|
-
end
|
69
|
+
def materialize(deps)
|
70
|
+
materialized = self.for(deps, false, true)
|
89
71
|
|
90
72
|
materialized.map! do |s|
|
91
73
|
next s unless s.is_a?(LazySpecification)
|
92
|
-
|
93
|
-
|
94
|
-
unless missing_specs
|
95
|
-
raise GemNotFound, "Could not find #{s.full_name} in any of the sources"
|
96
|
-
end
|
97
|
-
missing_specs << s
|
98
|
-
end
|
99
|
-
spec
|
74
|
+
s.source.local!
|
75
|
+
s.__materialize__ || s
|
100
76
|
end
|
101
|
-
SpecSet.new(
|
77
|
+
SpecSet.new(materialized)
|
102
78
|
end
|
103
79
|
|
104
80
|
# Materialize for all the specs in the spec set, regardless of what platform they're for
|
105
81
|
# This is in contrast to how for does platform filtering (and specifically different from how `materialize` calls `for` only for the current platform)
|
106
82
|
# @return [Array<Gem::Specification>]
|
107
83
|
def materialized_for_all_platforms
|
108
|
-
@specs.group_by(&:source).each do |source, specs|
|
109
|
-
next unless specs.any?{|s| s.is_a?(LazySpecification) }
|
110
|
-
|
111
|
-
source.local!
|
112
|
-
source.remote!
|
113
|
-
names = -> { specs.map(&:name).uniq }
|
114
|
-
source.double_check_for(names)
|
115
|
-
end
|
116
|
-
|
117
84
|
@specs.map do |s|
|
118
85
|
next s unless s.is_a?(LazySpecification)
|
86
|
+
s.source.local!
|
87
|
+
s.source.remote!
|
119
88
|
spec = s.__materialize__
|
120
89
|
raise GemNotFound, "Could not find #{s.full_name} in any of the sources" unless spec
|
121
90
|
spec
|
122
91
|
end
|
123
92
|
end
|
124
93
|
|
94
|
+
def missing_specs
|
95
|
+
@specs.select {|s| s.is_a?(LazySpecification) }
|
96
|
+
end
|
97
|
+
|
125
98
|
def merge(set)
|
126
99
|
arr = sorted.dup
|
127
100
|
set.each do |set_spec|
|
@@ -199,7 +172,7 @@ module Bundler
|
|
199
172
|
def spec_for_dependency(dep, match_current_platform)
|
200
173
|
specs_for_platforms = lookup[dep.name]
|
201
174
|
if match_current_platform
|
202
|
-
GemHelpers.select_best_platform_match(specs_for_platforms, Bundler.local_platform)
|
175
|
+
GemHelpers.select_best_platform_match(specs_for_platforms.select{|s| Gem::Platform.match_spec?(s) }, Bundler.local_platform)
|
203
176
|
else
|
204
177
|
GemHelpers.select_best_platform_match(specs_for_platforms, dep.__platform)
|
205
178
|
end
|
@@ -60,16 +60,16 @@ m = Module.new do
|
|
60
60
|
Regexp.last_match(1)
|
61
61
|
end
|
62
62
|
|
63
|
-
def
|
64
|
-
@
|
63
|
+
def bundler_requirement
|
64
|
+
@bundler_requirement ||=
|
65
65
|
env_var_version || cli_arg_version ||
|
66
|
-
lockfile_version
|
66
|
+
bundler_requirement_for(lockfile_version)
|
67
67
|
end
|
68
68
|
|
69
|
-
def
|
70
|
-
return "#{Gem::Requirement.default}.a" unless
|
69
|
+
def bundler_requirement_for(version)
|
70
|
+
return "#{Gem::Requirement.default}.a" unless version
|
71
71
|
|
72
|
-
bundler_gem_version = Gem::Version.new(
|
72
|
+
bundler_gem_version = Gem::Version.new(version)
|
73
73
|
|
74
74
|
requirement = bundler_gem_version.approximate_recommendation
|
75
75
|
|
data/lib/bundler/version.rb
CHANGED
data/lib/bundler/worker.rb
CHANGED
@@ -26,7 +26,7 @@ module Bundler
|
|
26
26
|
@func = func
|
27
27
|
@size = size
|
28
28
|
@threads = nil
|
29
|
-
|
29
|
+
@previous_interrupt_handler = nil
|
30
30
|
end
|
31
31
|
|
32
32
|
# Enqueue a request to be executed in the worker pool
|
@@ -68,13 +68,16 @@ module Bundler
|
|
68
68
|
# so as worker threads after retrieving it, shut themselves down
|
69
69
|
def stop_threads
|
70
70
|
return unless @threads
|
71
|
+
|
71
72
|
@threads.each { @request_queue.enq POISON }
|
72
73
|
@threads.each(&:join)
|
74
|
+
|
75
|
+
remove_interrupt_handler
|
76
|
+
|
73
77
|
@threads = nil
|
74
78
|
end
|
75
79
|
|
76
80
|
def abort_threads
|
77
|
-
return unless @threads
|
78
81
|
Bundler.ui.debug("\n#{caller.join("\n")}")
|
79
82
|
@threads.each(&:exit)
|
80
83
|
exit 1
|
@@ -94,11 +97,23 @@ module Bundler
|
|
94
97
|
end
|
95
98
|
end.compact
|
96
99
|
|
100
|
+
add_interrupt_handler unless @threads.empty?
|
101
|
+
|
97
102
|
return if creation_errors.empty?
|
98
103
|
|
99
104
|
message = "Failed to create threads for the #{name} worker: #{creation_errors.map(&:to_s).uniq.join(", ")}"
|
100
105
|
raise ThreadCreationError, message if @threads.empty?
|
101
106
|
Bundler.ui.info message
|
102
107
|
end
|
108
|
+
|
109
|
+
def add_interrupt_handler
|
110
|
+
@previous_interrupt_handler = trap("INT") { abort_threads }
|
111
|
+
end
|
112
|
+
|
113
|
+
def remove_interrupt_handler
|
114
|
+
return unless @previous_interrupt_handler
|
115
|
+
|
116
|
+
trap "INT", @previous_interrupt_handler
|
117
|
+
end
|
103
118
|
end
|
104
119
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bundler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.25
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- André Arko
|
@@ -22,7 +22,7 @@ authors:
|
|
22
22
|
autorequire:
|
23
23
|
bindir: exe
|
24
24
|
cert_chain: []
|
25
|
-
date: 2021-
|
25
|
+
date: 2021-07-30 00:00:00.000000000 Z
|
26
26
|
dependencies: []
|
27
27
|
description: Bundler manages an application's dependencies through its entire life,
|
28
28
|
across many machines, systematically and repeatably
|
@@ -354,7 +354,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
354
354
|
- !ruby/object:Gem::Version
|
355
355
|
version: 2.5.2
|
356
356
|
requirements: []
|
357
|
-
rubygems_version: 3.2.
|
357
|
+
rubygems_version: 3.2.25
|
358
358
|
signing_key:
|
359
359
|
specification_version: 4
|
360
360
|
summary: The best way to manage your application's dependencies
|