bundler 2.3.5 → 2.3.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5b0d885e627a0cd83ab152b691c763806970a6cc0b3660a58cada89848613b3c
4
- data.tar.gz: be879e2e5d4bc4a5bdc9c34d12e1dd4644ca6a15a3cf109100a7717e4b84d7bf
3
+ metadata.gz: afa073e2d0f107d4d7c2c6906c399d5a04973d85c45416643a40ae23cf2acfe7
4
+ data.tar.gz: 7173281106d774a25a867f141a752e7b9617a36811375276d592f208e1dd7646
5
5
  SHA512:
6
- metadata.gz: 5054958fd89192f4cf35e74b5c779e394e23e991f966cca3b4a4961ece6181ff0f0c7c17bfb52a0cd956ad45a110ea75597a96865d2f17f2dff9f4bcd5b84113
7
- data.tar.gz: c8ec46b4b31b44b45f72f03ac076a8626d6075ac38069b676deb696051d220e761305a0f1c8432ef9b2556095eb2de4ce23fc42424ac453034e0cc80e88d4588
6
+ metadata.gz: 6c97e621ce961b554ce5a20ee0e78d4ada40fdf169994e9a67dd45bd1df4a29fe936dc79bfb3b4d01a3eb1bf91ae6d33b5028f291ba59cefaf506dccb9e4d53c
7
+ data.tar.gz: 6d58dbb998751182e6b9fb3f1b6cd41626202dfb92c76a7744346068b0e854d6813e8b62cf5288170f04f3744cc5ea5cb55fcf6da80b17c37ad7db3f15d0098a
data/CHANGELOG.md CHANGED
@@ -1,3 +1,30 @@
1
+ # 2.3.7 (February 9, 2022)
2
+
3
+ ## Enhancements:
4
+
5
+ - Don't activate `yaml` gem from Bundler [#5277](https://github.com/rubygems/rubygems/pull/5277)
6
+ - Add Reverse Dependencies section to info command [#3966](https://github.com/rubygems/rubygems/pull/3966)
7
+
8
+ ## Bug fixes:
9
+
10
+ - Don't silently persist `BUNDLE_WITH` and `BUNDLE_WITHOUT` envs locally [#5335](https://github.com/rubygems/rubygems/pull/5335)
11
+ - Fix `bundle config` inside an application saving configuration globally [#4152](https://github.com/rubygems/rubygems/pull/4152)
12
+
13
+ # 2.3.6 (January 26, 2022)
14
+
15
+ ## Enhancements:
16
+
17
+ - Use `Gem::Platform.local` instead of `RUBY_PLATFORM` when displaying local platform [#5306](https://github.com/rubygems/rubygems/pull/5306)
18
+ - Lock standard.yml to the required ruby version [#5284](https://github.com/rubygems/rubygems/pull/5284)
19
+ - Use `Fiddle` in `bundle doctor` to check for dynamic library presence [#5173](https://github.com/rubygems/rubygems/pull/5173)
20
+
21
+ ## Bug fixes:
22
+
23
+ - Fix edge case where gems were incorrectly removed from the lockfile [#5302](https://github.com/rubygems/rubygems/pull/5302)
24
+ - Fix `force_ruby_platform` ignored when lockfile includes current specific platform [#5304](https://github.com/rubygems/rubygems/pull/5304)
25
+ - Create minitest file to underscored path in "bundle gem" command with dashed gem name [#5273](https://github.com/rubygems/rubygems/pull/5273)
26
+ - Fix regression with old marshaled specs having null `required_rubygems_version` [#5291](https://github.com/rubygems/rubygems/pull/5291)
27
+
1
28
  # 2.3.5 (January 12, 2022)
2
29
 
3
30
  ## Enhancements:
@@ -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-01-12".freeze
8
- @git_commit_sha = "a13d015fcb".freeze
7
+ @built_at = "2022-02-09".freeze
8
+ @git_commit_sha = "bafe43c593".freeze
9
9
  @release = true
10
10
  # end ivars
11
11
 
@@ -180,7 +180,7 @@ module Bundler
180
180
  scopes = %w[global local].select {|s| options[s] }
181
181
  case scopes.size
182
182
  when 0
183
- @scope = "global"
183
+ @scope = inside_app? ? "local" : "global"
184
184
  @explicit_scope = false
185
185
  when 1
186
186
  @scope = scopes.first
@@ -189,6 +189,15 @@ module Bundler
189
189
  "The options #{scopes.join " and "} were specified. Please only use one of the switches at a time."
190
190
  end
191
191
  end
192
+
193
+ private
194
+
195
+ def inside_app?
196
+ Bundler.root
197
+ true
198
+ rescue GemfileNotFound
199
+ false
200
+ end
192
201
  end
193
202
  end
194
203
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require "rbconfig"
4
4
  require "shellwords"
5
+ require "fiddle"
5
6
 
6
7
  module Bundler
7
8
  class CLI::Doctor
@@ -71,7 +72,14 @@ module Bundler
71
72
 
72
73
  definition.specs.each do |spec|
73
74
  bundles_for_gem(spec).each do |bundle|
74
- bad_paths = dylibs(bundle).select {|f| !File.exist?(f) }
75
+ bad_paths = dylibs(bundle).select do |f|
76
+ begin
77
+ Fiddle.dlopen(f)
78
+ false
79
+ rescue Fiddle::DLError
80
+ true
81
+ end
82
+ end
75
83
  if bad_paths.any?
76
84
  broken_links[spec] ||= []
77
85
  broken_links[spec].concat(bad_paths)
@@ -38,6 +38,7 @@ module Bundler
38
38
  namespaced_path = name.tr("-", "/")
39
39
  constant_name = name.gsub(/-[_-]*(?![_-]|$)/) { "::" }.gsub(/([_-]+|(::)|^)(.|$)/) { $2.to_s + $3.upcase }
40
40
  constant_array = constant_name.split("::")
41
+ minitest_constant_name = constant_array.clone.tap {|a| a[-1] = "Test#{a[-1]}" }.join("::") # Foo::Bar => Foo::TestBar
41
42
 
42
43
  use_git = Bundler.git_present? && options[:git]
43
44
 
@@ -69,6 +70,7 @@ module Bundler
69
70
  :git => use_git,
70
71
  :github_username => github_username.empty? ? "[USERNAME]" : github_username,
71
72
  :required_ruby_version => required_ruby_version,
73
+ :minitest_constant_name => minitest_constant_name,
72
74
  }
73
75
  ensure_safe_gem_name(name, constant_array)
74
76
 
@@ -104,9 +106,17 @@ module Bundler
104
106
  )
105
107
  config[:test_task] = :spec
106
108
  when "minitest"
109
+ # Generate path for minitest target file (FileList["test/**/test_*.rb"])
110
+ # foo => test/test_foo.rb
111
+ # foo-bar => test/foo/test_bar.rb
112
+ # foo_bar => test/test_foo_bar.rb
113
+ paths = namespaced_path.rpartition("/")
114
+ paths[2] = "test_#{paths[2]}"
115
+ minitest_namespaced_path = paths.join("")
116
+
107
117
  templates.merge!(
108
118
  "test/minitest/test_helper.rb.tt" => "test/test_helper.rb",
109
- "test/minitest/test_newgem.rb.tt" => "test/test_#{namespaced_path}.rb"
119
+ "test/minitest/test_newgem.rb.tt" => "test/#{minitest_namespaced_path}.rb"
110
120
  )
111
121
  config[:test_task] = :test
112
122
  when "test-unit"
@@ -73,7 +73,8 @@ module Bundler
73
73
  gem_info << "\tBug Tracker: #{metadata["bug_tracker_uri"]}\n" if metadata.key?("bug_tracker_uri")
74
74
  gem_info << "\tMailing List: #{metadata["mailing_list_uri"]}\n" if metadata.key?("mailing_list_uri")
75
75
  gem_info << "\tPath: #{spec.full_gem_path}\n"
76
- gem_info << "\tDefault Gem: yes" if spec.respond_to?(:default_gem?) && spec.default_gem?
76
+ gem_info << "\tDefault Gem: yes\n" if spec.respond_to?(:default_gem?) && spec.default_gem?
77
+ gem_info << "\tReverse Dependencies: \n\t\t#{gem_dependencies.join("\n\t\t")}" if gem_dependencies.any?
77
78
 
78
79
  if name != "bundler" && spec.deleted_gem?
79
80
  return Bundler.ui.warn "The gem #{name} has been deleted. Gemspec information is still available though:\n#{gem_info}"
@@ -81,5 +82,13 @@ module Bundler
81
82
 
82
83
  Bundler.ui.info gem_info
83
84
  end
85
+
86
+ def gem_dependencies
87
+ @gem_dependencies ||= Bundler.definition.specs.map do |spec|
88
+ dependency = spec.dependencies.find {|dep| dep.name == gem_name }
89
+ next unless dependency
90
+ "#{spec.name} (#{spec.version}) depends on #{gem_name} (#{dependency.requirements_list.join(", ")})"
91
+ end.compact.sort
92
+ end
84
93
  end
85
94
  end
@@ -135,32 +135,13 @@ module Bundler
135
135
  end
136
136
 
137
137
  def normalize_groups
138
- options[:with] &&= options[:with].join(":").tr(" ", ":").split(":")
139
- options[:without] &&= options[:without].join(":").tr(" ", ":").split(":")
140
-
141
138
  check_for_group_conflicts_in_cli_options
142
139
 
143
- Bundler.settings.set_command_option :with, nil if options[:with] == []
144
- Bundler.settings.set_command_option :without, nil if options[:without] == []
145
-
146
- with = options.fetch(:with, [])
147
- with |= Bundler.settings[:with].map(&:to_s)
148
- with -= options[:without] if options[:without]
149
-
150
- without = options.fetch(:without, [])
151
- without |= Bundler.settings[:without].map(&:to_s)
152
- without -= options[:with] if options[:with]
153
-
154
- options[:with] = with
155
- options[:without] = without
156
-
157
- unless Bundler.settings[:without] == options[:without] && Bundler.settings[:with] == options[:with]
158
- # need to nil them out first to get around validation for backwards compatibility
159
- Bundler.settings.set_command_option :without, nil
160
- Bundler.settings.set_command_option :with, nil
161
- Bundler.settings.set_command_option :without, options[:without] - options[:with]
162
- Bundler.settings.set_command_option :with, options[:with]
163
- end
140
+ # need to nil them out first to get around validation for backwards compatibility
141
+ Bundler.settings.set_command_option :without, nil
142
+ Bundler.settings.set_command_option :with, nil
143
+ Bundler.settings.set_command_option :without, options[:without]
144
+ Bundler.settings.set_command_option :with, options[:with]
164
145
  end
165
146
 
166
147
  def normalize_settings
@@ -184,7 +165,7 @@ module Bundler
184
165
 
185
166
  Bundler.settings.set_command_option_if_given :clean, options["clean"]
186
167
 
187
- normalize_groups
168
+ normalize_groups if options[:without] || options[:with]
188
169
 
189
170
  options[:force] = options[:redownload]
190
171
  end
@@ -23,7 +23,7 @@ module Bundler
23
23
  output << "No ruby version specified"
24
24
  end
25
25
  else
26
- output << "Your platform is: #{RUBY_PLATFORM}"
26
+ output << "Your platform is: #{Gem::Platform.local}"
27
27
  output << "Your app has gems that work on these platforms:\n#{platforms.join("\n")}"
28
28
 
29
29
  if ruby_version
@@ -265,7 +265,7 @@ module Bundler
265
265
  else
266
266
  # Run a resolve against the locally available gems
267
267
  Bundler.ui.debug("Found changes from the lockfile, re-resolving dependencies because #{change_reason}")
268
- expanded_dependencies = expand_dependencies(dependencies + metadata_dependencies, @remote)
268
+ expanded_dependencies = expand_dependencies(dependencies + metadata_dependencies, true)
269
269
  Resolver.resolve(expanded_dependencies, source_requirements, last_resolve, gem_version_promoter, additional_base_requirements_for_resolve, platforms)
270
270
  end
271
271
  end
@@ -495,6 +495,7 @@ module Bundler
495
495
 
496
496
  def current_ruby_platform_locked?
497
497
  return false unless generic_local_platform == Gem::Platform::RUBY
498
+ return false if Bundler.settings[:force_ruby_platform] && !@platforms.include?(Gem::Platform::RUBY)
498
499
 
499
500
  current_platform_locked?
500
501
  end
data/lib/bundler/env.rb CHANGED
@@ -71,7 +71,7 @@ module Bundler
71
71
  def self.ruby_version
72
72
  str = String.new(RUBY_VERSION)
73
73
  str << "p#{RUBY_PATCHLEVEL}" if defined? RUBY_PATCHLEVEL
74
- str << " (#{RUBY_RELEASE_DATE} revision #{RUBY_REVISION}) [#{RUBY_PLATFORM}]"
74
+ str << " (#{RUBY_RELEASE_DATE} revision #{RUBY_REVISION}) [#{Gem::Platform.local}]"
75
75
  end
76
76
 
77
77
  def self.git_version
@@ -240,7 +240,7 @@ module Bundler
240
240
  raise SSLError if needs_ssl && !defined?(OpenSSL::SSL)
241
241
 
242
242
  con = PersistentHTTP.new :name => "bundler", :proxy => :ENV
243
- if gem_proxy = Bundler.rubygems.configuration[:http_proxy]
243
+ if gem_proxy = Gem.configuration[:http_proxy]
244
244
  con.proxy = Bundler::URI.parse(gem_proxy) if gem_proxy != :no_proxy
245
245
  end
246
246
 
@@ -251,8 +251,8 @@ module Bundler
251
251
  end
252
252
 
253
253
  ssl_client_cert = Bundler.settings[:ssl_client_cert] ||
254
- (Bundler.rubygems.configuration.ssl_client_cert if
255
- Bundler.rubygems.configuration.respond_to?(:ssl_client_cert))
254
+ (Gem.configuration.ssl_client_cert if
255
+ Gem.configuration.respond_to?(:ssl_client_cert))
256
256
  if ssl_client_cert
257
257
  pem = File.read(ssl_client_cert)
258
258
  con.cert = OpenSSL::X509::Certificate.new(pem)
@@ -283,8 +283,8 @@ module Bundler
283
283
  def bundler_cert_store
284
284
  store = OpenSSL::X509::Store.new
285
285
  ssl_ca_cert = Bundler.settings[:ssl_ca_cert] ||
286
- (Bundler.rubygems.configuration.ssl_ca_cert if
287
- Bundler.rubygems.configuration.respond_to?(:ssl_ca_cert))
286
+ (Gem.configuration.ssl_ca_cert if
287
+ Gem.configuration.respond_to?(:ssl_ca_cert))
288
288
  if ssl_ca_cert
289
289
  if File.directory? ssl_ca_cert
290
290
  store.add_path ssl_ca_cert
@@ -27,6 +27,13 @@ module Bundler
27
27
  @platform = _remote_specification.platform
28
28
  end
29
29
 
30
+ # A fallback is included because the original version of the specification
31
+ # API didn't include that field, so some marshalled specs in the index have it
32
+ # set to +nil+.
33
+ def required_rubygems_version
34
+ @required_rubygems_version ||= _remote_specification.required_rubygems_version || Gem::Requirement.default
35
+ end
36
+
30
37
  def full_name
31
38
  if platform == Gem::Platform::RUBY || platform.nil?
32
39
  "#{@name}-#{@version}"
@@ -249,10 +249,11 @@ module Bundler
249
249
  end
250
250
 
251
251
  def verify_gemfile_dependencies_are_found!(requirements)
252
- requirements.each do |requirement|
252
+ requirements.map! do |requirement|
253
253
  name = requirement.name
254
- next if name == "bundler"
255
- next unless search_for(requirement).empty?
254
+ next requirement if name == "bundler"
255
+ next requirement unless search_for(requirement).empty?
256
+ next unless requirement.current_platform?
256
257
 
257
258
  if (base = @base[name]) && !base.empty?
258
259
  version = base.first.version
@@ -266,7 +267,7 @@ module Bundler
266
267
  message = gem_not_found_message(name, requirement, source_for(name))
267
268
  end
268
269
  raise GemNotFound, message
269
- end
270
+ end.compact!
270
271
  end
271
272
 
272
273
  def gem_not_found_message(name, requirement, source, extra_message = "")
@@ -4,14 +4,12 @@ require "pathname"
4
4
 
5
5
  require "rubygems/specification"
6
6
 
7
- # Possible use in Gem::Specification#source below and require
8
- # shouldn't be deferred.
9
- require "rubygems/source"
10
-
11
7
  require_relative "match_platform"
12
8
 
13
9
  module Gem
14
10
  class Specification
11
+ include ::Bundler::MatchPlatform
12
+
15
13
  attr_accessor :remote, :location, :relative_loaded_from
16
14
 
17
15
  remove_method :source
@@ -81,6 +79,17 @@ module Gem
81
79
  gemfile
82
80
  end
83
81
 
82
+ # Backfill missing YAML require when not defined. Fixed since 3.1.0.pre1.
83
+ module YamlBackfiller
84
+ def to_yaml(opts = {})
85
+ Gem.load_yaml unless defined?(::YAML)
86
+
87
+ super(opts)
88
+ end
89
+ end
90
+
91
+ prepend YamlBackfiller
92
+
84
93
  def nondevelopment_dependencies
85
94
  dependencies - development_dependencies
86
95
  end
@@ -228,9 +237,3 @@ module Gem
228
237
  end
229
238
  end
230
239
  end
231
-
232
- module Gem
233
- class Specification
234
- include ::Bundler::MatchPlatform
235
- end
236
- end
@@ -104,18 +104,6 @@ module Bundler
104
104
  obj.to_s
105
105
  end
106
106
 
107
- def configuration
108
- require_relative "psyched_yaml"
109
- Gem.configuration
110
- rescue Gem::SystemExitException, LoadError => e
111
- Bundler.ui.error "#{e.class}: #{e.message}"
112
- Bundler.ui.trace e
113
- raise
114
- rescue ::Psych::SyntaxError => e
115
- raise YamlSyntaxError.new(e, "Your RubyGems configuration, which is " \
116
- "usually located in ~/.gemrc, contains invalid YAML syntax.")
117
- end
118
-
119
107
  def ruby_engine
120
108
  Gem.ruby_engine
121
109
  end
@@ -217,7 +205,7 @@ module Bundler
217
205
 
218
206
  def spec_from_gem(path, policy = nil)
219
207
  require "rubygems/security"
220
- require_relative "psyched_yaml"
208
+ require "psych"
221
209
  gem_from_path(path, security_policies[policy]).spec
222
210
  rescue Exception, Gem::Exception, Gem::Security::Exception => e # rubocop:disable Lint/RescueException
223
211
  if e.is_a?(Gem::Security::Exception) ||
@@ -522,7 +510,7 @@ module Bundler
522
510
 
523
511
  def gem_remote_fetcher
524
512
  require "rubygems/remote_fetcher"
525
- proxy = configuration[:http_proxy]
513
+ proxy = Gem.configuration[:http_proxy]
526
514
  Gem::RemoteFetcher.new(proxy)
527
515
  end
528
516
 
@@ -367,7 +367,7 @@ module Bundler
367
367
 
368
368
  def to_array(value)
369
369
  return [] unless value
370
- value.split(":").map(&:to_sym)
370
+ value.tr(" ", ":").split(":").map(&:to_sym)
371
371
  end
372
372
 
373
373
  def array_to_s(array)
@@ -1,2 +1,3 @@
1
1
  # For available configuration options, see:
2
2
  # https://github.com/testdouble/standard
3
+ ruby_version: <%= ::Gem::Version.new(config[:required_ruby_version]).segments[0..1].join(".") %>
@@ -2,7 +2,7 @@
2
2
 
3
3
  require "test_helper"
4
4
 
5
- class Test<%= config[:constant_name] %> < Minitest::Test
5
+ class <%= config[:minitest_constant_name] %> < Minitest::Test
6
6
  def test_that_it_has_a_version_number
7
7
  refute_nil ::<%= config[:constant_name] %>::VERSION
8
8
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: false
2
2
 
3
3
  module Bundler
4
- VERSION = "2.3.5".freeze
4
+ VERSION = "2.3.7".freeze
5
5
 
6
6
  def self.bundler_major_version
7
7
  @bundler_major_version ||= VERSION.split(".").first.to_i
data/lib/bundler.rb CHANGED
@@ -654,7 +654,7 @@ EOF
654
654
  private
655
655
 
656
656
  def eval_yaml_gemspec(path, contents)
657
- require_relative "bundler/psyched_yaml"
657
+ Kernel.require "psych"
658
658
 
659
659
  Gem::Specification.from_yaml(contents)
660
660
  rescue ::Psych::SyntaxError, ArgumentError, Gem::EndOfYAMLException, Gem::Exception
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.5
4
+ version: 2.3.7
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-01-12 00:00:00.000000000 Z
25
+ date: 2022-02-09 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
@@ -178,7 +178,6 @@ files:
178
178
  - lib/bundler/plugin/installer/rubygems.rb
179
179
  - lib/bundler/plugin/source_list.rb
180
180
  - lib/bundler/process_lock.rb
181
- - lib/bundler/psyched_yaml.rb
182
181
  - lib/bundler/remote_specification.rb
183
182
  - lib/bundler/resolver.rb
184
183
  - lib/bundler/resolver/spec_group.rb
@@ -370,7 +369,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
370
369
  - !ruby/object:Gem::Version
371
370
  version: 2.5.2
372
371
  requirements: []
373
- rubygems_version: 3.3.5
372
+ rubygems_version: 3.3.7
374
373
  signing_key:
375
374
  specification_version: 4
376
375
  summary: The best way to manage your application's dependencies
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- begin
4
- require "psych"
5
- rescue LoadError
6
- # Apparently Psych wasn't available. Oh well.
7
- end
8
-
9
- # At least load the YAML stdlib, whatever that may be
10
- require "yaml" unless defined?(YAML.dump)