rubygems-update 3.2.17 → 3.2.18

Sign up to get free protection for your applications and to get access to all the features.
Files changed (152) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/Manifest.txt +2 -0
  4. data/Rakefile +1 -6
  5. data/bundler/CHANGELOG.md +16 -0
  6. data/bundler/bundler.gemspec +2 -3
  7. data/bundler/lib/bundler.rb +1 -0
  8. data/bundler/lib/bundler/build_metadata.rb +2 -2
  9. data/bundler/lib/bundler/cli.rb +13 -33
  10. data/bundler/lib/bundler/cli/outdated.rb +7 -10
  11. data/bundler/lib/bundler/definition.rb +14 -75
  12. data/bundler/lib/bundler/feature_flag.rb +0 -1
  13. data/bundler/lib/bundler/friendly_errors.rb +1 -1
  14. data/bundler/lib/bundler/index.rb +1 -2
  15. data/bundler/lib/bundler/man/bundle-add.1 +1 -1
  16. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  17. data/bundler/lib/bundler/man/bundle-cache.1 +1 -1
  18. data/bundler/lib/bundler/man/bundle-check.1 +1 -1
  19. data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
  20. data/bundler/lib/bundler/man/bundle-config.1 +1 -7
  21. data/bundler/lib/bundler/man/bundle-config.1.ronn +0 -8
  22. data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
  23. data/bundler/lib/bundler/man/bundle-exec.1 +1 -1
  24. data/bundler/lib/bundler/man/bundle-gem.1 +1 -1
  25. data/bundler/lib/bundler/man/bundle-info.1 +1 -1
  26. data/bundler/lib/bundler/man/bundle-init.1 +1 -1
  27. data/bundler/lib/bundler/man/bundle-inject.1 +1 -1
  28. data/bundler/lib/bundler/man/bundle-install.1 +1 -1
  29. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  30. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  31. data/bundler/lib/bundler/man/bundle-open.1 +1 -1
  32. data/bundler/lib/bundler/man/bundle-outdated.1 +1 -1
  33. data/bundler/lib/bundler/man/bundle-platform.1 +1 -1
  34. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  35. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  36. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  37. data/bundler/lib/bundler/man/bundle-update.1 +1 -1
  38. data/bundler/lib/bundler/man/bundle-viz.1 +1 -1
  39. data/bundler/lib/bundler/man/bundle.1 +1 -1
  40. data/bundler/lib/bundler/man/gemfile.5 +1 -1
  41. data/bundler/lib/bundler/plugin/api/source.rb +14 -0
  42. data/bundler/lib/bundler/resolver.rb +13 -96
  43. data/bundler/lib/bundler/resolver/spec_group.rb +0 -24
  44. data/bundler/lib/bundler/rubygems_ext.rb +2 -2
  45. data/bundler/lib/bundler/settings.rb +0 -1
  46. data/bundler/lib/bundler/source.rb +9 -0
  47. data/bundler/lib/bundler/source/rubygems.rb +15 -4
  48. data/bundler/lib/bundler/source/rubygems_aggregate.rb +64 -0
  49. data/bundler/lib/bundler/source_list.rb +29 -10
  50. data/bundler/lib/bundler/source_map.rb +58 -0
  51. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +1 -1
  52. data/bundler/lib/bundler/version.rb +1 -1
  53. data/lib/rubygems.rb +1 -1
  54. data/lib/rubygems/ext/ext_conf_builder.rb +4 -4
  55. data/lib/rubygems/specification.rb +0 -2
  56. data/lib/rubygems/test_case.rb +102 -18
  57. data/rubygems-update.gemspec +1 -1
  58. data/test/rubygems/test_bundled_ca.rb +2 -2
  59. data/test/rubygems/test_deprecate.rb +3 -3
  60. data/test/rubygems/test_gem.rb +33 -31
  61. data/test/rubygems/test_gem_bundler_version_finder.rb +2 -2
  62. data/test/rubygems/test_gem_command.rb +1 -1
  63. data/test/rubygems/test_gem_command_manager.rb +5 -5
  64. data/test/rubygems/test_gem_commands_build_command.rb +10 -10
  65. data/test/rubygems/test_gem_commands_cert_command.rb +36 -36
  66. data/test/rubygems/test_gem_commands_check_command.rb +5 -5
  67. data/test/rubygems/test_gem_commands_cleanup_command.rb +24 -24
  68. data/test/rubygems/test_gem_commands_contents_command.rb +3 -3
  69. data/test/rubygems/test_gem_commands_dependency_command.rb +2 -2
  70. data/test/rubygems/test_gem_commands_environment_command.rb +1 -1
  71. data/test/rubygems/test_gem_commands_fetch_command.rb +9 -9
  72. data/test/rubygems/test_gem_commands_help_command.rb +1 -1
  73. data/test/rubygems/test_gem_commands_install_command.rb +60 -60
  74. data/test/rubygems/test_gem_commands_list_command.rb +1 -1
  75. data/test/rubygems/test_gem_commands_lock_command.rb +1 -1
  76. data/test/rubygems/test_gem_commands_open_command.rb +8 -9
  77. data/test/rubygems/test_gem_commands_owner_command.rb +3 -3
  78. data/test/rubygems/test_gem_commands_pristine_command.rb +14 -14
  79. data/test/rubygems/test_gem_commands_push_command.rb +6 -6
  80. data/test/rubygems/test_gem_commands_query_command.rb +7 -7
  81. data/test/rubygems/test_gem_commands_server_command.rb +2 -2
  82. data/test/rubygems/test_gem_commands_setup_command.rb +21 -21
  83. data/test/rubygems/test_gem_commands_signin_command.rb +6 -6
  84. data/test/rubygems/test_gem_commands_sources_command.rb +5 -5
  85. data/test/rubygems/test_gem_commands_specification_command.rb +6 -6
  86. data/test/rubygems/test_gem_commands_uninstall_command.rb +4 -4
  87. data/test/rubygems/test_gem_commands_unpack_command.rb +2 -2
  88. data/test/rubygems/test_gem_commands_update_command.rb +10 -10
  89. data/test/rubygems/test_gem_commands_which_command.rb +3 -3
  90. data/test/rubygems/test_gem_commands_yank_command.rb +1 -1
  91. data/test/rubygems/test_gem_config_file.rb +9 -9
  92. data/test/rubygems/test_gem_dependency.rb +6 -6
  93. data/test/rubygems/test_gem_dependency_installer.rb +4 -4
  94. data/test/rubygems/test_gem_doctor.rb +30 -30
  95. data/test/rubygems/test_gem_ext_builder.rb +20 -20
  96. data/test/rubygems/test_gem_ext_cmake_builder.rb +4 -4
  97. data/test/rubygems/test_gem_ext_configure_builder.rb +4 -4
  98. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +14 -13
  99. data/test/rubygems/test_gem_ext_rake_builder.rb +1 -1
  100. data/test/rubygems/test_gem_gemcutter_utilities.rb +8 -8
  101. data/test/rubygems/test_gem_install_update_options.rb +9 -9
  102. data/test/rubygems/test_gem_installer.rb +142 -140
  103. data/test/rubygems/test_gem_local_remote_options.rb +1 -1
  104. data/test/rubygems/test_gem_package.rb +48 -48
  105. data/test/rubygems/test_gem_package_old.rb +9 -9
  106. data/test/rubygems/test_gem_package_tar_header.rb +5 -5
  107. data/test/rubygems/test_gem_package_tar_reader_entry.rb +8 -8
  108. data/test/rubygems/test_gem_package_tar_writer.rb +18 -20
  109. data/test/rubygems/test_gem_package_task.rb +2 -2
  110. data/test/rubygems/test_gem_path_support.rb +1 -1
  111. data/test/rubygems/test_gem_rdoc.rb +9 -9
  112. data/test/rubygems/test_gem_remote_fetcher.rb +17 -18
  113. data/test/rubygems/test_gem_request.rb +2 -2
  114. data/test/rubygems/test_gem_request_connection_pools.rb +1 -1
  115. data/test/rubygems/test_gem_request_set.rb +15 -14
  116. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +16 -16
  117. data/test/rubygems/test_gem_request_set_lockfile.rb +3 -3
  118. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +3 -3
  119. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +4 -4
  120. data/test/rubygems/test_gem_requirement.rb +13 -13
  121. data/test/rubygems/test_gem_resolver.rb +11 -11
  122. data/test/rubygems/test_gem_resolver_best_set.rb +1 -1
  123. data/test/rubygems/test_gem_resolver_git_set.rb +1 -1
  124. data/test/rubygems/test_gem_resolver_git_specification.rb +2 -2
  125. data/test/rubygems/test_gem_resolver_index_specification.rb +1 -1
  126. data/test/rubygems/test_gem_resolver_installer_set.rb +4 -4
  127. data/test/rubygems/test_gem_resolver_local_specification.rb +1 -1
  128. data/test/rubygems/test_gem_resolver_specification.rb +1 -1
  129. data/test/rubygems/test_gem_resolver_vendor_set.rb +2 -2
  130. data/test/rubygems/test_gem_security.rb +5 -5
  131. data/test/rubygems/test_gem_security_policy.rb +27 -27
  132. data/test/rubygems/test_gem_security_signer.rb +7 -7
  133. data/test/rubygems/test_gem_security_trust_dir.rb +4 -4
  134. data/test/rubygems/test_gem_server.rb +2 -2
  135. data/test/rubygems/test_gem_silent_ui.rb +9 -9
  136. data/test/rubygems/test_gem_source.rb +2 -2
  137. data/test/rubygems/test_gem_source_fetch_problem.rb +1 -1
  138. data/test/rubygems/test_gem_source_git.rb +11 -11
  139. data/test/rubygems/test_gem_source_specific_file.rb +1 -1
  140. data/test/rubygems/test_gem_spec_fetcher.rb +1 -1
  141. data/test/rubygems/test_gem_specification.rb +83 -103
  142. data/test/rubygems/test_gem_stream_ui.rb +1 -1
  143. data/test/rubygems/test_gem_stub_specification.rb +4 -4
  144. data/test/rubygems/test_gem_uninstaller.rb +16 -16
  145. data/test/rubygems/test_gem_util.rb +8 -6
  146. data/test/rubygems/test_gem_version.rb +4 -13
  147. data/test/rubygems/test_kernel.rb +4 -4
  148. data/test/rubygems/test_project_sanity.rb +1 -1
  149. data/test/rubygems/test_remote_fetch_error.rb +1 -1
  150. data/test/rubygems/test_require.rb +13 -13
  151. data/test/test_changelog_generator.rb +1 -2
  152. metadata +5 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dcfc421015c33e4d4d5d8239aa5ba4f8355677b0509a7e83cb8e13fd22a8ef27
4
- data.tar.gz: b535b85781ca843a1a876770a42a495f2384bf698d1d2e8dbabba15a5e0e0ea0
3
+ metadata.gz: 66be509531c57a4b354ae2bc3659fbe4f9dc375489b56ce77c6a5b5e7f45fd00
4
+ data.tar.gz: d2e4d40b260adf5a6e858e98ec64ef5cc73c6d71080fcc73d5af87c2dbe63ec5
5
5
  SHA512:
6
- metadata.gz: 13c39ab5f867862e4a4b54e592fb8e7cddc2832dd2d57b54698887b618ff5785f33e06860129c9c85bc8ed63fb87a9dbb4789532c6824f44dbbbb3068307e613
7
- data.tar.gz: 780f6bab25cdb0c7fc4f328c632dcaaa60275e0bb823b5b4b891780a69df3dc6cf1b3ee8488dd4472f6c03cb382daf5069584b39ba756d115f23ba9bfae70e9d
6
+ metadata.gz: 6218e723da3fc5e75b9e6a4b5429184df3c27950a21c0722a51ade130de5df69341195404bf8b3ea242471d62fc23c8cc82f19cd4b5298b18ee3c2a7c6385024
7
+ data.tar.gz: f9abbc6dc9d704deeba13c969817a502a34aa564408ed65c143f5f1781c5edab1721be70c4168e5d25a512a6664d14eb128f817e18ffb6c880a37e9c870e961d
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # 3.2.18 / 2021-05-25
2
+
3
+ ## Enhancements:
4
+
5
+ * Don't leave temporary directory around when building extensions to
6
+ improve build reproducibility. Pull request #4610 by baloo
7
+
1
8
  # 3.2.17 / 2021-05-05
2
9
 
3
10
  ## Enhancements:
data/Manifest.txt CHANGED
@@ -180,7 +180,9 @@ bundler/lib/bundler/source/path.rb
180
180
  bundler/lib/bundler/source/path/installer.rb
181
181
  bundler/lib/bundler/source/rubygems.rb
182
182
  bundler/lib/bundler/source/rubygems/remote.rb
183
+ bundler/lib/bundler/source/rubygems_aggregate.rb
183
184
  bundler/lib/bundler/source_list.rb
185
+ bundler/lib/bundler/source_map.rb
184
186
  bundler/lib/bundler/spec_set.rb
185
187
  bundler/lib/bundler/stub_specification.rb
186
188
  bundler/lib/bundler/templates/.document
data/Rakefile CHANGED
@@ -86,11 +86,6 @@ end
86
86
 
87
87
  task rubocop: %w[rubocop:rubygems rubocop:bundler]
88
88
 
89
- desc "Run a test suite bisection"
90
- task(:bisect) do
91
- sh "util/bisect"
92
- end
93
-
94
89
  # --------------------------------------------------------------------
95
90
  # Creating a release
96
91
 
@@ -254,7 +249,7 @@ end
254
249
 
255
250
  directory '../blog.rubygems.org' do
256
251
  sh 'git', 'clone',
257
- 'git@github.com:rubygems/rubygems.github.com.git',
252
+ 'git@github.com:rubygems/rubygems.github.io.git',
258
253
  '../blog.rubygems.org'
259
254
  end
260
255
 
data/bundler/CHANGELOG.md CHANGED
@@ -1,3 +1,19 @@
1
+ # 2.2.18 (May 25, 2021)
2
+
3
+ ## Security fixes:
4
+
5
+ - Fix dependency confusion issues with implicit dependencies [#4609](https://github.com/rubygems/rubygems/pull/4609)
6
+
7
+ ## Enhancements:
8
+
9
+ - Use simpler notation for generated `required_ruby_version` [#4598](https://github.com/rubygems/rubygems/pull/4598)
10
+ - Undeprecate bundle show [#4586](https://github.com/rubygems/rubygems/pull/4586)
11
+ - Make sure link to new issue uses the proper template [#4592](https://github.com/rubygems/rubygems/pull/4592)
12
+
13
+ ## Bug fixes:
14
+
15
+ - Fix platform specific gems being removed from the lockfile [#4580](https://github.com/rubygems/rubygems/pull/4580)
16
+
1
17
  # 2.2.17 (May 5, 2021)
2
18
 
3
19
  ## Enhancements:
@@ -34,13 +34,12 @@ Gem::Specification.new do |s|
34
34
  s.required_ruby_version = ">= 2.3.0"
35
35
  s.required_rubygems_version = ">= 2.5.2"
36
36
 
37
- s.files = Dir.glob("{lib,exe}/**/*", File::FNM_DOTMATCH).reject {|f| File.directory?(f) }
37
+ s.files = Dir.glob("lib/bundler{.rb,/**/*}", File::FNM_DOTMATCH).reject {|f| File.directory?(f) }
38
38
 
39
- # Include the CHANGELOG.md, LICENSE.md, README.md manually
40
- s.files += %w[CHANGELOG.md LICENSE.md README.md]
41
39
  # include the gemspec itself because warbler breaks w/o it
42
40
  s.files += %w[bundler.gemspec]
43
41
 
42
+ s.extra_rdoc_files = %w[CHANGELOG.md LICENSE.md README.md]
44
43
  s.bindir = "exe"
45
44
  s.executables = %w[bundle bundler]
46
45
  s.require_paths = ["lib"]
@@ -69,6 +69,7 @@ module Bundler
69
69
  autoload :SharedHelpers, File.expand_path("bundler/shared_helpers", __dir__)
70
70
  autoload :Source, File.expand_path("bundler/source", __dir__)
71
71
  autoload :SourceList, File.expand_path("bundler/source_list", __dir__)
72
+ autoload :SourceMap, File.expand_path("bundler/source_map", __dir__)
72
73
  autoload :SpecSet, File.expand_path("bundler/spec_set", __dir__)
73
74
  autoload :StubSpecification, File.expand_path("bundler/stub_specification", __dir__)
74
75
  autoload :UI, File.expand_path("bundler/ui", __dir__)
@@ -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 = "2021-05-05".freeze
8
- @git_commit_sha = "69cbd6e10e".freeze
7
+ @built_at = "2021-05-25".freeze
8
+ @git_commit_sha = "6a9e89bacd".freeze
9
9
  @release = true
10
10
  # end ivars
11
11
 
@@ -308,39 +308,19 @@ module Bundler
308
308
  end
309
309
  end
310
310
 
311
- unless Bundler.feature_flag.bundler_3_mode?
312
- desc "show GEM [OPTIONS]", "Shows all gems that are part of the bundle, or the path to a given gem"
313
- long_desc <<-D
314
- Show lists the names and versions of all gems that are required by your Gemfile.
315
- Calling show with [GEM] will list the exact location of that gem on your machine.
316
- D
317
- method_option "paths", :type => :boolean,
318
- :banner => "List the paths of all gems that are required by your Gemfile."
319
- method_option "outdated", :type => :boolean,
320
- :banner => "Show verbose output including whether gems are outdated."
321
- def show(gem_name = nil)
322
- if ARGV[0] == "show"
323
- rest = ARGV[1..-1]
324
-
325
- if flag = rest.find{|arg| ["--verbose", "--outdated"].include?(arg) }
326
- Bundler::SharedHelpers.major_deprecation(2, "the `#{flag}` flag to `bundle show` was undocumented and will be removed without replacement")
327
- else
328
- new_command = rest.find {|arg| !arg.start_with?("--") } ? "info" : "list"
329
-
330
- new_arguments = rest.map do |arg|
331
- next arg if arg != "--paths"
332
- next "--path" if new_command == "info"
333
- end
334
-
335
- old_argv = ARGV.join(" ")
336
- new_argv = [new_command, *new_arguments.compact].join(" ")
337
-
338
- Bundler::SharedHelpers.major_deprecation(2, "use `bundle #{new_argv}` instead of `bundle #{old_argv}`")
339
- end
340
- end
341
- require_relative "cli/show"
342
- Show.new(options, gem_name).run
343
- end
311
+ desc "show GEM [OPTIONS]", "Shows all gems that are part of the bundle, or the path to a given gem"
312
+ long_desc <<-D
313
+ Show lists the names and versions of all gems that are required by your Gemfile.
314
+ Calling show with [GEM] will list the exact location of that gem on your machine.
315
+ D
316
+ method_option "paths", :type => :boolean,
317
+ :banner => "List the paths of all gems that are required by your Gemfile."
318
+ method_option "outdated", :type => :boolean,
319
+ :banner => "Show verbose output including whether gems are outdated."
320
+ def show(gem_name = nil)
321
+ SharedHelpers.major_deprecation(2, "the `--outdated` flag to `bundle show` was undocumented and will be removed without replacement") if ARGV.include?("--outdated")
322
+ require_relative "cli/show"
323
+ Show.new(options, gem_name).run
344
324
  end
345
325
 
346
326
  desc "list", "List all gems in the bundle"
@@ -146,17 +146,14 @@ module Bundler
146
146
  end
147
147
 
148
148
  def retrieve_active_spec(definition, current_spec)
149
- if strict
150
- active_spec = definition.find_resolved_spec(current_spec)
151
- else
152
- active_specs = definition.find_indexed_specs(current_spec)
153
- if !current_spec.version.prerelease? && !options[:pre] && active_specs.size > 1
154
- active_specs.delete_if {|b| b.respond_to?(:version) && b.version.prerelease? }
155
- end
156
- active_spec = active_specs.last
157
- end
149
+ active_spec = definition.resolve.find_by_name_and_platform(current_spec.name, current_spec.platform)
150
+ return active_spec if strict
158
151
 
159
- active_spec
152
+ active_specs = active_spec.source.specs.search(current_spec.name).select {|spec| spec.match_platform(current_spec.platform) }.sort_by(&:version)
153
+ if !current_spec.version.prerelease? && !options[:pre] && active_specs.size > 1
154
+ active_specs.delete_if {|b| b.respond_to?(:version) && b.version.prerelease? }
155
+ end
156
+ active_specs.last
160
157
  end
161
158
 
162
159
  def print_gems(gems_list)
@@ -219,7 +219,6 @@ module Bundler
219
219
  Bundler.ui.debug "The definition is missing #{missing.map(&:full_name)}"
220
220
  true
221
221
  rescue BundlerError => e
222
- @index = nil
223
222
  @resolve = nil
224
223
  @specs = nil
225
224
  @gem_version_promoter = nil
@@ -282,50 +281,6 @@ module Bundler
282
281
  end
283
282
  end
284
283
 
285
- def index
286
- @index ||= Index.build do |idx|
287
- dependency_names = @dependencies.map(&:name)
288
-
289
- sources.all_sources.each do |source|
290
- source.dependency_names = dependency_names - pinned_spec_names(source)
291
- idx.add_source source.specs
292
- dependency_names.concat(source.unmet_deps).uniq!
293
- end
294
-
295
- double_check_for_index(idx, dependency_names)
296
- end
297
- end
298
-
299
- # Suppose the gem Foo depends on the gem Bar. Foo exists in Source A. Bar has some versions that exist in both
300
- # sources A and B. At this point, the API request will have found all the versions of Bar in source A,
301
- # but will not have found any versions of Bar from source B, which is a problem if the requested version
302
- # of Foo specifically depends on a version of Bar that is only found in source B. This ensures that for
303
- # each spec we found, we add all possible versions from all sources to the index.
304
- def double_check_for_index(idx, dependency_names)
305
- pinned_names = pinned_spec_names
306
- loop do
307
- idxcount = idx.size
308
-
309
- names = :names # do this so we only have to traverse to get dependency_names from the index once
310
- unmet_dependency_names = lambda do
311
- return names unless names == :names
312
- new_names = sources.all_sources.map(&:dependency_names_to_double_check)
313
- return names = nil if new_names.compact!
314
- names = new_names.flatten(1).concat(dependency_names)
315
- names.uniq!
316
- names -= pinned_names
317
- names
318
- end
319
-
320
- sources.all_sources.each do |source|
321
- source.double_check_for(unmet_dependency_names)
322
- end
323
-
324
- break if idxcount == idx.size
325
- end
326
- end
327
- private :double_check_for_index
328
-
329
284
  def has_rubygems_remotes?
330
285
  sources.rubygems_sources.any? {|s| s.remotes.any? }
331
286
  end
@@ -532,14 +487,6 @@ module Bundler
532
487
  end
533
488
  end
534
489
 
535
- def find_resolved_spec(current_spec)
536
- specs.find_by_name_and_platform(current_spec.name, current_spec.platform)
537
- end
538
-
539
- def find_indexed_specs(current_spec)
540
- index[current_spec.name].select {|spec| spec.match_platform(current_spec.platform) }.sort_by(&:version)
541
- end
542
-
543
490
  attr_reader :sources
544
491
  private :sources
545
492
 
@@ -556,6 +503,10 @@ module Bundler
556
503
 
557
504
  private
558
505
 
506
+ def precompute_source_requirements_for_indirect_dependencies?
507
+ sources.non_global_rubygems_sources.all?(&:dependency_api_available?) && sources.no_aggregate_global_source?
508
+ end
509
+
559
510
  def current_ruby_platform_locked?
560
511
  return false unless generic_local_platform == Gem::Platform::RUBY
561
512
 
@@ -681,9 +632,9 @@ module Bundler
681
632
  changes = false
682
633
 
683
634
  # If there is a RubyGems source in both
684
- locked_gem_sources.each do |locked_gem|
635
+ locked_gem_sources.each do |locked_gem_source|
685
636
  # Merge the remotes from the Gemfile into the Gemfile.lock
686
- changes |= locked_gem.replace_remotes(actual_remotes, Bundler.settings[:allow_deployment_source_credential_changes])
637
+ changes |= locked_gem_source.replace_remotes(actual_remotes, Bundler.settings[:allow_deployment_source_credential_changes])
687
638
  end
688
639
 
689
640
  changes
@@ -902,26 +853,22 @@ module Bundler
902
853
  end
903
854
 
904
855
  def source_requirements
905
- # Load all specs from remote sources
906
- index
907
-
908
856
  # Record the specs available in each gem's source, so that those
909
857
  # specs will be available later when the resolver knows where to
910
858
  # look for that gemspec (or its dependencies)
911
- source_requirements = { :default => sources.default_source }.merge(dependency_source_requirements)
859
+ source_requirements = if precompute_source_requirements_for_indirect_dependencies?
860
+ { :default => sources.default_source }.merge(source_map.all_requirements)
861
+ else
862
+ { :default => Source::RubygemsAggregate.new(sources, source_map) }.merge(source_map.direct_requirements)
863
+ end
912
864
  metadata_dependencies.each do |dep|
913
865
  source_requirements[dep.name] = sources.metadata_source
914
866
  end
915
- source_requirements[:global] = index unless Bundler.feature_flag.disable_multisource?
916
- source_requirements[:default_bundler] = source_requirements["bundler"] || source_requirements[:default]
867
+ source_requirements[:default_bundler] = source_requirements["bundler"] || sources.default_source
917
868
  source_requirements["bundler"] = sources.metadata_source # needs to come last to override
918
869
  source_requirements
919
870
  end
920
871
 
921
- def pinned_spec_names(skip = nil)
922
- dependency_source_requirements.reject {|_, source| source == skip }.keys
923
- end
924
-
925
872
  def requested_groups
926
873
  groups - Bundler.settings[:without] - @optional_groups + Bundler.settings[:with]
927
874
  end
@@ -977,16 +924,8 @@ module Bundler
977
924
  Bundler.settings[:allow_deployment_source_credential_changes] && source.equivalent_remotes?(sources.rubygems_remotes)
978
925
  end
979
926
 
980
- def dependency_source_requirements
981
- @dependency_source_requirements ||= begin
982
- source_requirements = {}
983
- default = sources.default_source
984
- dependencies.each do |dep|
985
- dep_source = dep.source || default
986
- source_requirements[dep.name] = dep_source
987
- end
988
- source_requirements
989
- end
927
+ def source_map
928
+ @source_map ||= SourceMap.new(sources, dependencies)
990
929
  end
991
930
  end
992
931
  end
@@ -32,7 +32,6 @@ module Bundler
32
32
  settings_flag(:cache_all) { bundler_3_mode? }
33
33
  settings_flag(:default_install_uses_path) { bundler_3_mode? }
34
34
  settings_flag(:deployment_means_frozen) { bundler_3_mode? }
35
- settings_flag(:disable_multisource) { bundler_3_mode? }
36
35
  settings_flag(:forget_cli_options) { bundler_3_mode? }
37
36
  settings_flag(:global_gem_cache) { bundler_3_mode? }
38
37
  settings_flag(:path_relative_to_cwd) { bundler_3_mode? }
@@ -112,7 +112,7 @@ module Bundler
112
112
  #{issues_url(e)}
113
113
 
114
114
  If there aren't any reports for this error yet, please create copy and paste the report template above into a new issue. Don't forget to anonymize any private data! The new issue form is located at:
115
- https://github.com/rubygems/rubygems/issues/new?labels=Bundler
115
+ https://github.com/rubygems/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md
116
116
  EOS
117
117
  end
118
118
 
@@ -122,10 +122,9 @@ module Bundler
122
122
  names
123
123
  end
124
124
 
125
- # returns a list of the dependencies
126
125
  def unmet_dependency_names
127
126
  dependency_names.select do |name|
128
- name != "bundler" && search(name).empty?
127
+ search(name).empty?
129
128
  end
130
129
  end
131
130
 
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-ADD" "1" "April 2021" "" ""
4
+ .TH "BUNDLE\-ADD" "1" "May 2021" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-add\fR \- Add gem to the Gemfile and run bundle install
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-BINSTUBS" "1" "April 2021" "" ""
4
+ .TH "BUNDLE\-BINSTUBS" "1" "May 2021" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-binstubs\fR \- Install the binstubs of the listed gems
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-CACHE" "1" "April 2021" "" ""
4
+ .TH "BUNDLE\-CACHE" "1" "May 2021" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-cache\fR \- Package your needed \fB\.gem\fR files into your application
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-CHECK" "1" "April 2021" "" ""
4
+ .TH "BUNDLE\-CHECK" "1" "May 2021" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-check\fR \- Verifies if dependencies are satisfied by installed gems
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-CLEAN" "1" "April 2021" "" ""
4
+ .TH "BUNDLE\-CLEAN" "1" "May 2021" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-clean\fR \- Cleans up unused gems in your bundler directory
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-CONFIG" "1" "April 2021" "" ""
4
+ .TH "BUNDLE\-CONFIG" "1" "May 2021" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-config\fR \- Set bundler configuration options
@@ -56,9 +56,6 @@ Executing \fBbundle config unset \-\-local <name> <value>\fR will delete the con
56
56
  .P
57
57
  Executing bundle with the \fBBUNDLE_IGNORE_CONFIG\fR environment variable set will cause it to ignore all configuration\.
58
58
  .
59
- .P
60
- Executing \fBbundle config set \-\-local disable_multisource true\fR upgrades the warning about the Gemfile containing multiple primary sources to an error\. Executing \fBbundle config unset disable_multisource\fR downgrades this error to a warning\.
61
- .
62
59
  .SH "REMEMBERING OPTIONS"
63
60
  Flags passed to \fBbundle install\fR or the Bundler runtime, such as \fB\-\-path foo\fR or \fB\-\-without production\fR, are remembered between commands and saved to your local application\'s configuration (normally, \fB\./\.bundle/config\fR)\.
64
61
  .
@@ -184,9 +181,6 @@ The following is a list of all configuration keys and their purpose\. You can le
184
181
  \fBdisable_local_revision_check\fR (\fBBUNDLE_DISABLE_LOCAL_REVISION_CHECK\fR): Allow Bundler to use a local git override without checking if the revision present in the lockfile is present in the repository\.
185
182
  .
186
183
  .IP "\(bu" 4
187
- \fBdisable_multisource\fR (\fBBUNDLE_DISABLE_MULTISOURCE\fR): When set, Gemfiles containing multiple sources will produce errors instead of warnings\. Use \fBbundle config unset disable_multisource\fR to unset\.
188
- .
189
- .IP "\(bu" 4
190
184
  \fBdisable_shared_gems\fR (\fBBUNDLE_DISABLE_SHARED_GEMS\fR): Stop Bundler from accessing gems installed to RubyGems\' normal location\.
191
185
  .
192
186
  .IP "\(bu" 4