bundler 2.3.13 → 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 +41 -0
- data/lib/bundler/build_metadata.rb +2 -2
- data/lib/bundler/cli/cache.rb +1 -1
- data/lib/bundler/cli/common.rb +1 -1
- data/lib/bundler/cli/install.rb +0 -2
- data/lib/bundler/cli.rb +2 -6
- data/lib/bundler/definition.rb +17 -21
- data/lib/bundler/dependency.rb +2 -0
- data/lib/bundler/dsl.rb +7 -11
- 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 +2 -11
- 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 +1 -1
- 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.rb +17 -20
- data/lib/bundler/rubygems_ext.rb +1 -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 +5 -5
- data/lib/bundler/source/git.rb +7 -9
- 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/version.rb +1 -1
- data/lib/bundler.rb +12 -1
- metadata +3 -3
@@ -135,17 +135,13 @@ module Bundler
|
|
135
135
|
end
|
136
136
|
end
|
137
137
|
|
138
|
-
def install(spec,
|
139
|
-
force =
|
140
|
-
ensure_builtin_gems_cached =
|
141
|
-
|
142
|
-
if ensure_builtin_gems_cached && spec.default_gem?
|
143
|
-
|
144
|
-
|
145
|
-
force = true
|
146
|
-
else
|
147
|
-
spec.loaded_from = loaded_from(spec)
|
148
|
-
end
|
138
|
+
def install(spec, options = {})
|
139
|
+
force = options[:force]
|
140
|
+
ensure_builtin_gems_cached = options[:ensure_builtin_gems_cached]
|
141
|
+
|
142
|
+
if ensure_builtin_gems_cached && spec.default_gem? && !cached_path(spec)
|
143
|
+
cached_built_in_gem(spec) unless spec.remote
|
144
|
+
force = true
|
149
145
|
end
|
150
146
|
|
151
147
|
if installed?(spec) && !force
|
@@ -153,84 +149,90 @@ module Bundler
|
|
153
149
|
return nil # no post-install message
|
154
150
|
end
|
155
151
|
|
156
|
-
# Download the gem to get the spec, because some specs that are returned
|
157
|
-
# by rubygems.org are broken and wrong.
|
158
152
|
if spec.remote
|
159
153
|
# Check for this spec from other sources
|
160
|
-
uris = [spec.remote.anonymized_uri
|
161
|
-
uris += remotes_for_spec(spec).map(&:anonymized_uri)
|
162
|
-
uris.uniq!
|
154
|
+
uris = [spec.remote, *remotes_for_spec(spec)].map(&:anonymized_uri).uniq
|
163
155
|
Installer.ambiguous_gems << [spec.name, *uris] if uris.length > 1
|
164
156
|
|
165
|
-
path = fetch_gem(spec)
|
166
|
-
|
167
|
-
|
168
|
-
|
157
|
+
path = fetch_gem(spec, options[:previous_spec])
|
158
|
+
else
|
159
|
+
path = cached_gem(spec)
|
160
|
+
raise GemNotFound, "Could not find #{spec.file_name} for installation" unless path
|
161
|
+
end
|
162
|
+
|
163
|
+
if requires_sudo?
|
164
|
+
install_path = Bundler.tmp(spec.full_name)
|
165
|
+
bin_path = install_path.join("bin")
|
166
|
+
else
|
167
|
+
install_path = rubygems_dir
|
168
|
+
bin_path = Bundler.system_bindir
|
169
|
+
end
|
170
|
+
|
171
|
+
Bundler.mkdir_p bin_path, :no_sudo => true unless spec.executables.empty? || Bundler.rubygems.provides?(">= 2.7.5")
|
172
|
+
|
173
|
+
require_relative "../rubygems_gem_installer"
|
174
|
+
|
175
|
+
installer = Bundler::RubyGemsGemInstaller.at(
|
176
|
+
path,
|
177
|
+
:security_policy => Bundler.rubygems.security_policies[Bundler.settings["trust-policy"]],
|
178
|
+
:install_dir => install_path.to_s,
|
179
|
+
:bin_dir => bin_path.to_s,
|
180
|
+
:ignore_dependencies => true,
|
181
|
+
:wrappers => true,
|
182
|
+
:env_shebang => true,
|
183
|
+
:build_args => options[:build_args],
|
184
|
+
:bundler_expected_checksum => spec.respond_to?(:checksum) && spec.checksum,
|
185
|
+
:bundler_extension_cache_path => extension_cache_path(spec)
|
186
|
+
)
|
187
|
+
|
188
|
+
if spec.remote
|
189
|
+
s = begin
|
190
|
+
installer.spec
|
169
191
|
rescue Gem::Package::FormatError
|
170
192
|
Bundler.rm_rf(path)
|
171
193
|
raise
|
194
|
+
rescue Gem::Security::Exception => e
|
195
|
+
raise SecurityError,
|
196
|
+
"The gem #{File.basename(path, ".gem")} can't be installed because " \
|
197
|
+
"the security policy didn't allow it, with the message: #{e.message}"
|
172
198
|
end
|
199
|
+
|
200
|
+
spec.__swap__(s)
|
173
201
|
end
|
174
202
|
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
Bundler.ui.confirm message
|
203
|
+
message = "Installing #{version_message(spec, options[:previous_spec])}"
|
204
|
+
message += " with native extensions" if spec.extensions.any?
|
205
|
+
Bundler.ui.confirm message
|
179
206
|
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
bin_path = install_path.join("bin")
|
185
|
-
else
|
186
|
-
install_path = rubygems_dir
|
187
|
-
bin_path = Bundler.system_bindir
|
188
|
-
end
|
207
|
+
installed_spec = installer.install
|
208
|
+
|
209
|
+
spec.full_gem_path = installed_spec.full_gem_path
|
210
|
+
spec.loaded_from = installed_spec.loaded_from
|
189
211
|
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
:bundler_extension_cache_path => extension_cache_path(spec)
|
204
|
-
).install
|
205
|
-
spec.full_gem_path = installed_spec.full_gem_path
|
206
|
-
|
207
|
-
# SUDO HAX
|
208
|
-
if requires_sudo?
|
209
|
-
Bundler.rubygems.repository_subdirectories.each do |name|
|
210
|
-
src = File.join(install_path, name, "*")
|
211
|
-
dst = File.join(rubygems_dir, name)
|
212
|
-
if name == "extensions" && Dir.glob(src).any?
|
213
|
-
src = File.join(src, "*/*")
|
214
|
-
ext_src = Dir.glob(src).first
|
215
|
-
ext_src.gsub!(src[0..-6], "")
|
216
|
-
dst = File.dirname(File.join(dst, ext_src))
|
217
|
-
end
|
218
|
-
SharedHelpers.filesystem_access(dst) do |p|
|
219
|
-
Bundler.mkdir_p(p)
|
220
|
-
end
|
221
|
-
Bundler.sudo "cp -R #{src} #{dst}" if Dir[src].any?
|
212
|
+
# SUDO HAX
|
213
|
+
if requires_sudo?
|
214
|
+
Bundler.rubygems.repository_subdirectories.each do |name|
|
215
|
+
src = File.join(install_path, name, "*")
|
216
|
+
dst = File.join(rubygems_dir, name)
|
217
|
+
if name == "extensions" && Dir.glob(src).any?
|
218
|
+
src = File.join(src, "*/*")
|
219
|
+
ext_src = Dir.glob(src).first
|
220
|
+
ext_src.gsub!(src[0..-6], "")
|
221
|
+
dst = File.dirname(File.join(dst, ext_src))
|
222
|
+
end
|
223
|
+
SharedHelpers.filesystem_access(dst) do |p|
|
224
|
+
Bundler.mkdir_p(p)
|
222
225
|
end
|
226
|
+
Bundler.sudo "cp -R #{src} #{dst}" if Dir[src].any?
|
227
|
+
end
|
223
228
|
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
end
|
228
|
-
Bundler.sudo "cp -R #{install_path}/bin/#{exe} #{Bundler.system_bindir}/"
|
229
|
+
spec.executables.each do |exe|
|
230
|
+
SharedHelpers.filesystem_access(Bundler.system_bindir) do |p|
|
231
|
+
Bundler.mkdir_p(p)
|
229
232
|
end
|
233
|
+
Bundler.sudo "cp -R #{install_path}/bin/#{exe} #{Bundler.system_bindir}/"
|
230
234
|
end
|
231
|
-
installed_spec.loaded_from = loaded_from(spec)
|
232
235
|
end
|
233
|
-
spec.loaded_from = loaded_from(spec)
|
234
236
|
|
235
237
|
spec.post_install_message
|
236
238
|
ensure
|
@@ -348,10 +350,6 @@ module Bundler
|
|
348
350
|
end
|
349
351
|
end
|
350
352
|
|
351
|
-
def loaded_from(spec)
|
352
|
-
"#{rubygems_dir}/specifications/#{spec.full_name}.gemspec"
|
353
|
-
end
|
354
|
-
|
355
353
|
def cached_gem(spec)
|
356
354
|
if spec.default_gem?
|
357
355
|
cached_built_in_gem(spec)
|
@@ -364,10 +362,14 @@ module Bundler
|
|
364
362
|
global_cache_path = download_cache_path(spec)
|
365
363
|
@caches << global_cache_path if global_cache_path
|
366
364
|
|
367
|
-
possibilities = @caches.map {|p|
|
365
|
+
possibilities = @caches.map {|p| package_path(p, spec) }
|
368
366
|
possibilities.find {|p| File.exist?(p) }
|
369
367
|
end
|
370
368
|
|
369
|
+
def package_path(cache_path, spec)
|
370
|
+
"#{cache_path}/#{spec.file_name}"
|
371
|
+
end
|
372
|
+
|
371
373
|
def normalize_uri(uri)
|
372
374
|
uri = uri.to_s
|
373
375
|
uri = "#{uri}/" unless uri =~ %r{/$}
|
@@ -458,13 +460,12 @@ module Bundler
|
|
458
460
|
end
|
459
461
|
end
|
460
462
|
|
461
|
-
def fetch_gem(spec)
|
462
|
-
return false unless spec.remote
|
463
|
-
|
463
|
+
def fetch_gem(spec, previous_spec = nil)
|
464
464
|
spec.fetch_platform
|
465
465
|
|
466
466
|
cache_path = download_cache_path(spec) || default_cache_path_for(rubygems_dir)
|
467
|
-
gem_path =
|
467
|
+
gem_path = package_path(cache_path, spec)
|
468
|
+
return gem_path if File.exist?(gem_path)
|
468
469
|
|
469
470
|
if requires_sudo?
|
470
471
|
download_path = Bundler.tmp(spec.full_name)
|
@@ -476,13 +477,13 @@ module Bundler
|
|
476
477
|
SharedHelpers.filesystem_access(download_cache_path) do |p|
|
477
478
|
FileUtils.mkdir_p(p)
|
478
479
|
end
|
479
|
-
download_gem(spec, download_cache_path)
|
480
|
+
download_gem(spec, download_cache_path, previous_spec)
|
480
481
|
|
481
482
|
if requires_sudo?
|
482
483
|
SharedHelpers.filesystem_access(cache_path) do |p|
|
483
484
|
Bundler.mkdir_p(p)
|
484
485
|
end
|
485
|
-
Bundler.sudo "mv #{download_cache_path
|
486
|
+
Bundler.sudo "mv #{package_path(download_cache_path, spec)} #{gem_path}"
|
486
487
|
end
|
487
488
|
|
488
489
|
gem_path
|
@@ -499,7 +500,7 @@ module Bundler
|
|
499
500
|
end
|
500
501
|
|
501
502
|
def rubygems_dir
|
502
|
-
Bundler.
|
503
|
+
Bundler.bundle_path
|
503
504
|
end
|
504
505
|
|
505
506
|
def default_cache_path_for(dir)
|
@@ -521,9 +522,12 @@ module Bundler
|
|
521
522
|
# @param [String] download_cache_path
|
522
523
|
# the local directory the .gem will end up in.
|
523
524
|
#
|
524
|
-
|
525
|
+
# @param [Specification] previous_spec
|
526
|
+
# the spec previously locked
|
527
|
+
#
|
528
|
+
def download_gem(spec, download_cache_path, previous_spec = nil)
|
525
529
|
uri = spec.remote.uri
|
526
|
-
Bundler.ui.confirm("Fetching #{version_message(spec)}")
|
530
|
+
Bundler.ui.confirm("Fetching #{version_message(spec, previous_spec)}")
|
527
531
|
Bundler.rubygems.download_gem(spec, uri, download_cache_path)
|
528
532
|
end
|
529
533
|
|
data/lib/bundler/source.rb
CHANGED
@@ -15,13 +15,12 @@ module Bundler
|
|
15
15
|
specs.unmet_dependency_names
|
16
16
|
end
|
17
17
|
|
18
|
-
def version_message(spec)
|
18
|
+
def version_message(spec, locked_spec = nil)
|
19
19
|
message = "#{spec.name} #{spec.version}"
|
20
20
|
message += " (#{spec.platform})" if spec.platform != Gem::Platform::RUBY && !spec.platform.nil?
|
21
21
|
|
22
|
-
if
|
23
|
-
|
24
|
-
locked_spec_version = locked_spec.version if locked_spec
|
22
|
+
if locked_spec
|
23
|
+
locked_spec_version = locked_spec.version
|
25
24
|
if locked_spec_version && spec.version != locked_spec_version
|
26
25
|
message += Bundler.ui.add_color(" (was #{locked_spec_version})", version_color(spec.version, locked_spec_version))
|
27
26
|
end
|
data/lib/bundler/spec_set.rb
CHANGED
@@ -18,13 +18,13 @@ module Bundler
|
|
18
18
|
|
19
19
|
loop do
|
20
20
|
break unless dep = deps.shift
|
21
|
-
next if handled.any?{|d| d.name == dep.name && (match_current_platform || d.__platform == dep.__platform) } || dep.name == "bundler"
|
21
|
+
next if handled.any? {|d| d.name == dep.name && (match_current_platform || d.__platform == dep.__platform) } || dep.name == "bundler"
|
22
22
|
|
23
23
|
handled << dep
|
24
24
|
|
25
25
|
specs_for_dep = spec_for_dependency(dep, match_current_platform)
|
26
26
|
if specs_for_dep.any?
|
27
|
-
|
27
|
+
specs.concat(specs_for_dep)
|
28
28
|
|
29
29
|
specs_for_dep.first.dependencies.each do |d|
|
30
30
|
next if d.type == :development
|
@@ -40,6 +40,8 @@ module Bundler
|
|
40
40
|
specs << spec
|
41
41
|
end
|
42
42
|
|
43
|
+
specs.uniq! unless match_current_platform
|
44
|
+
|
43
45
|
check ? true : specs
|
44
46
|
end
|
45
47
|
|
@@ -172,7 +174,7 @@ module Bundler
|
|
172
174
|
def spec_for_dependency(dep, match_current_platform)
|
173
175
|
specs_for_platforms = lookup[dep.name]
|
174
176
|
if match_current_platform
|
175
|
-
GemHelpers.select_best_platform_match(specs_for_platforms.select{|s| Gem::Platform.match_spec?(s) }, Bundler.local_platform)
|
177
|
+
GemHelpers.select_best_platform_match(specs_for_platforms.select {|s| Gem::Platform.match_spec?(s) }, Bundler.local_platform)
|
176
178
|
else
|
177
179
|
GemHelpers.select_best_platform_match(specs_for_platforms, dep.__platform)
|
178
180
|
end
|
@@ -64,9 +64,11 @@ module Bundler
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def full_gem_path
|
67
|
-
|
68
|
-
|
69
|
-
|
67
|
+
stub.full_gem_path
|
68
|
+
end
|
69
|
+
|
70
|
+
def full_gem_path=(path)
|
71
|
+
stub.full_gem_path = path
|
70
72
|
end
|
71
73
|
|
72
74
|
def full_require_paths
|
data/lib/bundler/version.rb
CHANGED
data/lib/bundler.rb
CHANGED
@@ -19,7 +19,7 @@ require_relative "bundler/build_metadata"
|
|
19
19
|
#
|
20
20
|
# Since Ruby 2.6, Bundler is a part of Ruby's standard library.
|
21
21
|
#
|
22
|
-
#
|
22
|
+
# Bundler is used by creating _gemfiles_ listing all the project dependencies
|
23
23
|
# and (optionally) their versions and then using
|
24
24
|
#
|
25
25
|
# require 'bundler/setup'
|
@@ -97,6 +97,17 @@ module Bundler
|
|
97
97
|
@bundle_path ||= Pathname.new(configured_bundle_path.path).expand_path(root)
|
98
98
|
end
|
99
99
|
|
100
|
+
def create_bundle_path
|
101
|
+
SharedHelpers.filesystem_access(bundle_path.to_s) do |p|
|
102
|
+
mkdir_p(p)
|
103
|
+
end unless bundle_path.exist?
|
104
|
+
|
105
|
+
@bundle_path = bundle_path.realpath
|
106
|
+
rescue Errno::EEXIST
|
107
|
+
raise PathError, "Could not install to path `#{bundle_path}` " \
|
108
|
+
"because a file already exists at that path. Either remove or rename the file so the directory can be created."
|
109
|
+
end
|
110
|
+
|
100
111
|
def configured_bundle_path
|
101
112
|
@configured_bundle_path ||= settings.path.tap(&:validate!)
|
102
113
|
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.3.
|
4
|
+
version: 2.3.16
|
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: 2022-
|
25
|
+
date: 2022-06-15 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
|
@@ -369,7 +369,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
369
369
|
- !ruby/object:Gem::Version
|
370
370
|
version: 2.5.2
|
371
371
|
requirements: []
|
372
|
-
rubygems_version: 3.3.
|
372
|
+
rubygems_version: 3.3.16
|
373
373
|
signing_key:
|
374
374
|
specification_version: 4
|
375
375
|
summary: The best way to manage your application's dependencies
|