rubygems-update 3.3.16 → 3.3.19

Sign up to get free protection for your applications and to get access to all the features.
Files changed (363) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +57 -0
  3. data/Manifest.txt +1 -0
  4. data/bin/gem +2 -2
  5. data/bin/update_rubygems +4 -4
  6. data/bundler/CHANGELOG.md +71 -0
  7. data/bundler/lib/bundler/build_metadata.rb +2 -2
  8. data/bundler/lib/bundler/cli/cache.rb +1 -1
  9. data/bundler/lib/bundler/cli/common.rb +1 -0
  10. data/bundler/lib/bundler/cli/install.rb +2 -0
  11. data/bundler/lib/bundler/cli.rb +6 -2
  12. data/bundler/lib/bundler/compact_index_client/updater.rb +16 -3
  13. data/bundler/lib/bundler/current_ruby.rb +1 -1
  14. data/bundler/lib/bundler/definition.rb +51 -18
  15. data/bundler/lib/bundler/dependency.rb +3 -2
  16. data/bundler/lib/bundler/dsl.rb +3 -3
  17. data/bundler/lib/bundler/friendly_errors.rb +5 -2
  18. data/bundler/lib/bundler/gem_helpers.rb +2 -0
  19. data/bundler/lib/bundler/incomplete_specification.rb +12 -0
  20. data/bundler/lib/bundler/index.rb +11 -17
  21. data/bundler/lib/bundler/installer/standalone.rb +29 -2
  22. data/bundler/lib/bundler/lazy_specification.rb +17 -8
  23. data/bundler/lib/bundler/lockfile_parser.rb +4 -0
  24. data/bundler/lib/bundler/man/bundle-add.1 +2 -2
  25. data/bundler/lib/bundler/man/bundle-add.1.ronn +1 -1
  26. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  27. data/bundler/lib/bundler/man/bundle-cache.1 +1 -1
  28. data/bundler/lib/bundler/man/bundle-check.1 +1 -1
  29. data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
  30. data/bundler/lib/bundler/man/bundle-config.1 +13 -3
  31. data/bundler/lib/bundler/man/bundle-config.1.ronn +9 -2
  32. data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
  33. data/bundler/lib/bundler/man/bundle-exec.1 +2 -2
  34. data/bundler/lib/bundler/man/bundle-exec.1.ronn +1 -1
  35. data/bundler/lib/bundler/man/bundle-gem.1 +1 -1
  36. data/bundler/lib/bundler/man/bundle-info.1 +1 -1
  37. data/bundler/lib/bundler/man/bundle-init.1 +1 -1
  38. data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
  39. data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
  40. data/bundler/lib/bundler/man/bundle-install.1 +1 -1
  41. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  42. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  43. data/bundler/lib/bundler/man/bundle-open.1 +1 -1
  44. data/bundler/lib/bundler/man/bundle-outdated.1 +1 -1
  45. data/bundler/lib/bundler/man/bundle-platform.1 +1 -1
  46. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  47. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  48. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  49. data/bundler/lib/bundler/man/bundle-update.1 +1 -1
  50. data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
  51. data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
  52. data/bundler/lib/bundler/man/bundle.1 +3 -3
  53. data/bundler/lib/bundler/man/bundle.1.ronn +2 -2
  54. data/bundler/lib/bundler/man/gemfile.5 +77 -47
  55. data/bundler/lib/bundler/man/gemfile.5.ronn +75 -54
  56. data/bundler/lib/bundler/match_platform.rb +0 -1
  57. data/bundler/lib/bundler/remote_specification.rb +5 -4
  58. data/bundler/lib/bundler/resolver/spec_group.rb +5 -4
  59. data/bundler/lib/bundler/resolver.rb +11 -9
  60. data/bundler/lib/bundler/rubygems_ext.rb +6 -5
  61. data/bundler/lib/bundler/rubygems_gem_installer.rb +19 -12
  62. data/bundler/lib/bundler/runtime.rb +0 -1
  63. data/bundler/lib/bundler/settings.rb +1 -0
  64. data/bundler/lib/bundler/source/rubygems.rb +14 -6
  65. data/bundler/lib/bundler/spec_set.rb +31 -20
  66. data/bundler/lib/bundler/version.rb +1 -1
  67. data/bundler/lib/bundler.rb +1 -0
  68. data/lib/rubygems/basic_specification.rb +2 -2
  69. data/lib/rubygems/command.rb +19 -19
  70. data/lib/rubygems/command_manager.rb +9 -9
  71. data/lib/rubygems/commands/build_command.rb +8 -8
  72. data/lib/rubygems/commands/cert_command.rb +32 -32
  73. data/lib/rubygems/commands/check_command.rb +20 -20
  74. data/lib/rubygems/commands/cleanup_command.rb +16 -16
  75. data/lib/rubygems/commands/contents_command.rb +12 -12
  76. data/lib/rubygems/commands/dependency_command.rb +12 -12
  77. data/lib/rubygems/commands/environment_command.rb +10 -7
  78. data/lib/rubygems/commands/fetch_command.rb +6 -6
  79. data/lib/rubygems/commands/generate_index_command.rb +15 -15
  80. data/lib/rubygems/commands/help_command.rb +3 -3
  81. data/lib/rubygems/commands/info_command.rb +3 -3
  82. data/lib/rubygems/commands/install_command.rb +13 -13
  83. data/lib/rubygems/commands/list_command.rb +3 -3
  84. data/lib/rubygems/commands/lock_command.rb +4 -4
  85. data/lib/rubygems/commands/mirror_command.rb +3 -3
  86. data/lib/rubygems/commands/open_command.rb +9 -9
  87. data/lib/rubygems/commands/outdated_command.rb +5 -5
  88. data/lib/rubygems/commands/owner_command.rb +11 -11
  89. data/lib/rubygems/commands/pristine_command.rb +31 -31
  90. data/lib/rubygems/commands/push_command.rb +8 -8
  91. data/lib/rubygems/commands/query_command.rb +8 -8
  92. data/lib/rubygems/commands/rdoc_command.rb +17 -17
  93. data/lib/rubygems/commands/search_command.rb +3 -3
  94. data/lib/rubygems/commands/server_command.rb +3 -3
  95. data/lib/rubygems/commands/setup_command.rb +94 -103
  96. data/lib/rubygems/commands/signin_command.rb +9 -9
  97. data/lib/rubygems/commands/signout_command.rb +7 -7
  98. data/lib/rubygems/commands/sources_command.rb +19 -19
  99. data/lib/rubygems/commands/specification_command.rb +11 -11
  100. data/lib/rubygems/commands/stale_command.rb +2 -2
  101. data/lib/rubygems/commands/uninstall_command.rb +36 -36
  102. data/lib/rubygems/commands/unpack_command.rb +12 -12
  103. data/lib/rubygems/commands/update_command.rb +40 -52
  104. data/lib/rubygems/commands/which_command.rb +6 -6
  105. data/lib/rubygems/commands/yank_command.rb +11 -11
  106. data/lib/rubygems/config_file.rb +14 -14
  107. data/lib/rubygems/core_ext/kernel_gem.rb +1 -1
  108. data/lib/rubygems/core_ext/kernel_require.rb +1 -1
  109. data/lib/rubygems/core_ext/kernel_warn.rb +1 -1
  110. data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
  111. data/lib/rubygems/defaults.rb +15 -15
  112. data/lib/rubygems/dependency.rb +4 -4
  113. data/lib/rubygems/dependency_installer.rb +8 -8
  114. data/lib/rubygems/dependency_list.rb +2 -2
  115. data/lib/rubygems/doctor.rb +16 -16
  116. data/lib/rubygems/errors.rb +2 -2
  117. data/lib/rubygems/exceptions.rb +4 -4
  118. data/lib/rubygems/ext/build_error.rb +1 -1
  119. data/lib/rubygems/ext/builder.rb +23 -16
  120. data/lib/rubygems/ext/cargo_builder.rb +18 -25
  121. data/lib/rubygems/ext/cmake_builder.rb +2 -2
  122. data/lib/rubygems/ext/configure_builder.rb +1 -1
  123. data/lib/rubygems/ext/ext_conf_builder.rb +34 -59
  124. data/lib/rubygems/ext/rake_builder.rb +3 -3
  125. data/lib/rubygems/ext.rb +7 -7
  126. data/lib/rubygems/gem_runner.rb +8 -12
  127. data/lib/rubygems/gemcutter_utilities.rb +30 -27
  128. data/lib/rubygems/indexer.rb +26 -24
  129. data/lib/rubygems/install_default_message.rb +2 -2
  130. data/lib/rubygems/install_message.rb +2 -2
  131. data/lib/rubygems/install_update_options.rb +55 -55
  132. data/lib/rubygems/installer.rb +28 -28
  133. data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
  134. data/lib/rubygems/local_remote_options.rb +18 -20
  135. data/lib/rubygems/mock_gem_ui.rb +2 -2
  136. data/lib/rubygems/name_tuple.rb +1 -1
  137. data/lib/rubygems/optparse.rb +1 -1
  138. data/lib/rubygems/package/file_source.rb +2 -2
  139. data/lib/rubygems/package/old.rb +8 -8
  140. data/lib/rubygems/package/tar_header.rb +33 -33
  141. data/lib/rubygems/package/tar_reader/entry.rb +2 -2
  142. data/lib/rubygems/package/tar_reader.rb +1 -1
  143. data/lib/rubygems/package/tar_writer.rb +6 -6
  144. data/lib/rubygems/package.rb +35 -35
  145. data/lib/rubygems/package_task.rb +4 -4
  146. data/lib/rubygems/platform.rb +44 -40
  147. data/lib/rubygems/psych_tree.rb +1 -1
  148. data/lib/rubygems/query_utils.rb +27 -27
  149. data/lib/rubygems/rdoc.rb +2 -2
  150. data/lib/rubygems/remote_fetcher.rb +19 -19
  151. data/lib/rubygems/request/connection_pools.rb +2 -2
  152. data/lib/rubygems/request.rb +21 -21
  153. data/lib/rubygems/request_set/gem_dependency_api.rb +15 -15
  154. data/lib/rubygems/request_set/lockfile/parser.rb +14 -14
  155. data/lib/rubygems/request_set/lockfile/tokenizer.rb +2 -2
  156. data/lib/rubygems/request_set/lockfile.rb +5 -5
  157. data/lib/rubygems/request_set.rb +14 -14
  158. data/lib/rubygems/requirement.rb +5 -5
  159. data/lib/rubygems/resolver/activation_request.rb +3 -3
  160. data/lib/rubygems/resolver/api_set.rb +4 -4
  161. data/lib/rubygems/resolver/api_specification.rb +2 -2
  162. data/lib/rubygems/resolver/best_set.rb +2 -2
  163. data/lib/rubygems/resolver/conflict.rb +7 -7
  164. data/lib/rubygems/resolver/dependency_request.rb +2 -2
  165. data/lib/rubygems/resolver/git_set.rb +2 -2
  166. data/lib/rubygems/resolver/git_specification.rb +3 -3
  167. data/lib/rubygems/resolver/index_set.rb +3 -3
  168. data/lib/rubygems/resolver/index_specification.rb +3 -3
  169. data/lib/rubygems/resolver/installed_specification.rb +2 -2
  170. data/lib/rubygems/resolver/installer_set.rb +4 -4
  171. data/lib/rubygems/resolver/local_specification.rb +2 -2
  172. data/lib/rubygems/resolver/lock_set.rb +3 -3
  173. data/lib/rubygems/resolver/lock_specification.rb +3 -3
  174. data/lib/rubygems/resolver/molinillo.rb +1 -1
  175. data/lib/rubygems/resolver/specification.rb +1 -1
  176. data/lib/rubygems/resolver/vendor_set.rb +1 -1
  177. data/lib/rubygems/resolver.rb +35 -35
  178. data/lib/rubygems/s3_uri_signer.rb +6 -6
  179. data/lib/rubygems/safe_yaml.rb +2 -2
  180. data/lib/rubygems/security/policies.rb +11 -11
  181. data/lib/rubygems/security/policy.rb +12 -12
  182. data/lib/rubygems/security/signer.rb +4 -4
  183. data/lib/rubygems/security/trust_dir.rb +3 -3
  184. data/lib/rubygems/security.rb +27 -27
  185. data/lib/rubygems/security_option.rb +5 -5
  186. data/lib/rubygems/source/git.rb +17 -17
  187. data/lib/rubygems/source/installed.rb +1 -1
  188. data/lib/rubygems/source/local.rb +2 -2
  189. data/lib/rubygems/source/specific_file.rb +1 -1
  190. data/lib/rubygems/source.rb +15 -15
  191. data/lib/rubygems/spec_fetcher.rb +8 -8
  192. data/lib/rubygems/specification.rb +61 -38
  193. data/lib/rubygems/specification_policy.rb +13 -13
  194. data/lib/rubygems/stub_specification.rb +5 -5
  195. data/lib/rubygems/tsort.rb +1 -1
  196. data/lib/rubygems/uninstaller.rb +14 -14
  197. data/lib/rubygems/uri.rb +4 -4
  198. data/lib/rubygems/uri_formatter.rb +1 -1
  199. data/lib/rubygems/user_interaction.rb +31 -17
  200. data/lib/rubygems/util/licenses.rb +3 -3
  201. data/lib/rubygems/util.rb +10 -10
  202. data/lib/rubygems/validator.rb +5 -5
  203. data/lib/rubygems/version.rb +3 -5
  204. data/lib/rubygems/version_option.rb +3 -3
  205. data/lib/rubygems.rb +61 -59
  206. data/rubygems-update.gemspec +2 -2
  207. data/setup.rb +9 -9
  208. data/test/rubygems/helper.rb +133 -127
  209. data/test/rubygems/installer_test_case.rb +13 -13
  210. data/test/rubygems/package/tar_test_case.rb +2 -2
  211. data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
  212. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
  213. data/test/rubygems/rubygems_plugin.rb +2 -2
  214. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -4
  215. data/test/rubygems/test_bundled_ca.rb +10 -10
  216. data/test/rubygems/test_config.rb +3 -3
  217. data/test/rubygems/test_deprecate.rb +3 -3
  218. data/test/rubygems/test_exit.rb +2 -2
  219. data/test/rubygems/test_gem.rb +342 -342
  220. data/test/rubygems/test_gem_available_set.rb +21 -21
  221. data/test/rubygems/test_gem_bundler_version_finder.rb +1 -1
  222. data/test/rubygems/test_gem_command.rb +44 -44
  223. data/test/rubygems/test_gem_command_manager.rb +29 -29
  224. data/test/rubygems/test_gem_commands_build_command.rb +63 -63
  225. data/test/rubygems/test_gem_commands_cert_command.rb +97 -99
  226. data/test/rubygems/test_gem_commands_check_command.rb +4 -4
  227. data/test/rubygems/test_gem_commands_cleanup_command.rb +40 -40
  228. data/test/rubygems/test_gem_commands_contents_command.rb +27 -27
  229. data/test/rubygems/test_gem_commands_dependency_command.rb +36 -36
  230. data/test/rubygems/test_gem_commands_environment_command.rb +38 -14
  231. data/test/rubygems/test_gem_commands_fetch_command.rb +37 -37
  232. data/test/rubygems/test_gem_commands_generate_index_command.rb +7 -7
  233. data/test/rubygems/test_gem_commands_help_command.rb +13 -13
  234. data/test/rubygems/test_gem_commands_info_command.rb +2 -2
  235. data/test/rubygems/test_gem_commands_install_command.rb +131 -131
  236. data/test/rubygems/test_gem_commands_list_command.rb +4 -4
  237. data/test/rubygems/test_gem_commands_lock_command.rb +10 -10
  238. data/test/rubygems/test_gem_commands_mirror.rb +2 -2
  239. data/test/rubygems/test_gem_commands_open_command.rb +4 -4
  240. data/test/rubygems/test_gem_commands_outdated_command.rb +9 -9
  241. data/test/rubygems/test_gem_commands_owner_command.rb +41 -41
  242. data/test/rubygems/test_gem_commands_pristine_command.rb +93 -92
  243. data/test/rubygems/test_gem_commands_push_command.rb +54 -54
  244. data/test/rubygems/test_gem_commands_query_command.rb +73 -73
  245. data/test/rubygems/test_gem_commands_search_command.rb +2 -2
  246. data/test/rubygems/test_gem_commands_server_command.rb +2 -2
  247. data/test/rubygems/test_gem_commands_setup_command.rb +119 -85
  248. data/test/rubygems/test_gem_commands_signin_command.rb +45 -31
  249. data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
  250. data/test/rubygems/test_gem_commands_sources_command.rb +28 -29
  251. data/test/rubygems/test_gem_commands_specification_command.rb +32 -32
  252. data/test/rubygems/test_gem_commands_stale_command.rb +4 -4
  253. data/test/rubygems/test_gem_commands_uninstall_command.rb +75 -75
  254. data/test/rubygems/test_gem_commands_unpack_command.rb +31 -31
  255. data/test/rubygems/test_gem_commands_update_command.rb +109 -88
  256. data/test/rubygems/test_gem_commands_which_command.rb +6 -6
  257. data/test/rubygems/test_gem_commands_yank_command.rb +40 -40
  258. data/test/rubygems/test_gem_config_file.rb +77 -77
  259. data/test/rubygems/test_gem_dependency.rb +73 -73
  260. data/test/rubygems/test_gem_dependency_installer.rb +165 -165
  261. data/test/rubygems/test_gem_dependency_list.rb +47 -47
  262. data/test/rubygems/test_gem_dependency_resolution_error.rb +4 -4
  263. data/test/rubygems/test_gem_doctor.rb +26 -26
  264. data/test/rubygems/test_gem_ext_builder.rb +59 -59
  265. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.lock +22 -165
  266. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.toml +2 -1
  267. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +10 -10
  268. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +1 -1
  269. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/src/lib.rs +0 -3
  270. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +22 -165
  271. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +2 -1
  272. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +8 -8
  273. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +0 -3
  274. data/test/rubygems/test_gem_ext_cargo_builder.rb +26 -26
  275. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +3 -3
  276. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +23 -23
  277. data/test/rubygems/test_gem_ext_cmake_builder.rb +15 -15
  278. data/test/rubygems/test_gem_ext_configure_builder.rb +13 -13
  279. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +51 -52
  280. data/test/rubygems/test_gem_ext_rake_builder.rb +15 -15
  281. data/test/rubygems/test_gem_gem_runner.rb +7 -7
  282. data/test/rubygems/test_gem_gemcutter_utilities.rb +66 -66
  283. data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -4
  284. data/test/rubygems/test_gem_indexer.rb +52 -48
  285. data/test/rubygems/test_gem_install_update_options.rb +16 -16
  286. data/test/rubygems/test_gem_installer.rb +297 -297
  287. data/test/rubygems/test_gem_local_remote_options.rb +10 -10
  288. data/test/rubygems/test_gem_name_tuple.rb +4 -4
  289. data/test/rubygems/test_gem_package.rb +207 -209
  290. data/test/rubygems/test_gem_package_old.rb +13 -13
  291. data/test/rubygems/test_gem_package_tar_header.rb +42 -42
  292. data/test/rubygems/test_gem_package_tar_reader.rb +7 -7
  293. data/test/rubygems/test_gem_package_tar_reader_entry.rb +10 -10
  294. data/test/rubygems/test_gem_package_tar_writer.rb +76 -76
  295. data/test/rubygems/test_gem_package_task.rb +18 -18
  296. data/test/rubygems/test_gem_path_support.rb +14 -14
  297. data/test/rubygems/test_gem_platform.rb +230 -214
  298. data/test/rubygems/test_gem_rdoc.rb +14 -14
  299. data/test/rubygems/test_gem_remote_fetcher.rb +149 -149
  300. data/test/rubygems/test_gem_request.rb +55 -55
  301. data/test/rubygems/test_gem_request_connection_pools.rb +29 -29
  302. data/test/rubygems/test_gem_request_set.rb +99 -99
  303. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +204 -206
  304. data/test/rubygems/test_gem_request_set_lockfile.rb +86 -86
  305. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +56 -56
  306. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +62 -62
  307. data/test/rubygems/test_gem_requirement.rb +38 -38
  308. data/test/rubygems/test_gem_resolver.rb +98 -98
  309. data/test/rubygems/test_gem_resolver_activation_request.rb +6 -6
  310. data/test/rubygems/test_gem_resolver_api_set.rb +33 -33
  311. data/test/rubygems/test_gem_resolver_api_specification.rb +47 -47
  312. data/test/rubygems/test_gem_resolver_best_set.rb +22 -22
  313. data/test/rubygems/test_gem_resolver_composed_set.rb +1 -1
  314. data/test/rubygems/test_gem_resolver_conflict.rb +12 -12
  315. data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -15
  316. data/test/rubygems/test_gem_resolver_git_set.rb +21 -21
  317. data/test/rubygems/test_gem_resolver_git_specification.rb +21 -21
  318. data/test/rubygems/test_gem_resolver_index_set.rb +12 -12
  319. data/test/rubygems/test_gem_resolver_index_specification.rb +15 -15
  320. data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -5
  321. data/test/rubygems/test_gem_resolver_installer_set.rb +34 -34
  322. data/test/rubygems/test_gem_resolver_local_specification.rb +7 -7
  323. data/test/rubygems/test_gem_resolver_lock_set.rb +12 -12
  324. data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -17
  325. data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -1
  326. data/test/rubygems/test_gem_resolver_specification.rb +8 -8
  327. data/test/rubygems/test_gem_resolver_vendor_set.rb +6 -6
  328. data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -10
  329. data/test/rubygems/test_gem_security.rb +67 -67
  330. data/test/rubygems/test_gem_security_policy.rb +62 -62
  331. data/test/rubygems/test_gem_security_signer.rb +28 -28
  332. data/test/rubygems/test_gem_security_trust_dir.rb +4 -4
  333. data/test/rubygems/test_gem_silent_ui.rb +38 -32
  334. data/test/rubygems/test_gem_source.rb +44 -44
  335. data/test/rubygems/test_gem_source_fetch_problem.rb +9 -9
  336. data/test/rubygems/test_gem_source_git.rb +59 -59
  337. data/test/rubygems/test_gem_source_installed.rb +16 -16
  338. data/test/rubygems/test_gem_source_list.rb +5 -5
  339. data/test/rubygems/test_gem_source_local.rb +14 -14
  340. data/test/rubygems/test_gem_source_lock.rb +31 -31
  341. data/test/rubygems/test_gem_source_specific_file.rb +17 -17
  342. data/test/rubygems/test_gem_source_subpath_problem.rb +7 -7
  343. data/test/rubygems/test_gem_source_vendor.rb +13 -13
  344. data/test/rubygems/test_gem_spec_fetcher.rb +72 -72
  345. data/test/rubygems/test_gem_specification.rb +436 -435
  346. data/test/rubygems/test_gem_stream_ui.rb +19 -19
  347. data/test/rubygems/test_gem_stub_specification.rb +32 -32
  348. data/test/rubygems/test_gem_text.rb +1 -1
  349. data/test/rubygems/test_gem_uninstaller.rb +112 -112
  350. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -3
  351. data/test/rubygems/test_gem_uri.rb +4 -4
  352. data/test/rubygems/test_gem_uri_formatter.rb +14 -14
  353. data/test/rubygems/test_gem_util.rb +23 -23
  354. data/test/rubygems/test_gem_validator.rb +8 -8
  355. data/test/rubygems/test_gem_version.rb +13 -13
  356. data/test/rubygems/test_gem_version_option.rb +15 -15
  357. data/test/rubygems/test_kernel.rb +31 -31
  358. data/test/rubygems/test_project_sanity.rb +1 -1
  359. data/test/rubygems/test_remote_fetch_error.rb +6 -6
  360. data/test/rubygems/test_require.rb +42 -42
  361. data/test/rubygems/test_rubygems.rb +17 -14
  362. data/test/rubygems/utilities.rb +17 -17
  363. metadata +4 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f28d959e6c80a1a48380837de462a5d37b8c74ab83db7ddb52c33e923088a819
4
- data.tar.gz: 8492c0f957c64cc02e779d7f23b2c925f5be4d79451ae52e39105c6a52bbcfd0
3
+ metadata.gz: c1c91fd55482e23e4eccd9bb36bf89d1452f1ca38d271f74818acebea8e041b7
4
+ data.tar.gz: 6cd3ad94c91573c9df933b600e4bdaba8e9f1a1355e8803aa79ce8582f781910
5
5
  SHA512:
6
- metadata.gz: c61d093abdc997d0c015c3323de9404e35e309454fe7541cce731f5a9ed6a46bc9f59aed0cefffad780a2f889e2decd43350562af66cc6ae07a8bc443bdb0c56
7
- data.tar.gz: 55306fc3437106fb9f97379219449b50c875f22a80309c675202e8fbde767bf2066b3395a0cae88e7b065d90e0eb1b452340b753eefba1f33b410f6ff14e9666
6
+ metadata.gz: 620a673d4caef7c550ff2f020a059e378366a4201fe3405b62d67b2411cf0ba4d2c98c4d763c6e93104123ce27275b21a4234fdac60f2b2449c69dc918a8970e
7
+ data.tar.gz: 9db79232319706dd63ddfab73535912d820a506a08e1d0aad6166b3a070df6ce2b9653815e619261b5c1f51eda2250beb86541eff5b2b4c6e15e55fe5f6f0329
data/CHANGELOG.md CHANGED
@@ -1,3 +1,60 @@
1
+ # 3.3.19 / 2022-07-27
2
+
3
+ ## Enhancements:
4
+
5
+ * Display mfa warnings on `gem signin`. Pull request #5590 by aellispierce
6
+ * Require fileutils more lazily when installing gems. Pull request #5738
7
+ by deivid-rodriguez
8
+ * Fix upgrading RubyGems with a customized `Gem.default_dir`. Pull request
9
+ #5728 by deivid-rodriguez
10
+ * Stop using `/dev/null` for silent ui for WASI platform. Pull request
11
+ #5703 by kateinoigakukun
12
+ * Unify loading `Gem::Requirement`. Pull request #5596 by deivid-rodriguez
13
+ * Installs bundler 2.3.19 as a default gem.
14
+
15
+ ## Bug fixes:
16
+
17
+ * Fix `ruby setup.rb` with `--destdir` writing outside of `--destdir`.
18
+ Pull request #5737 by deivid-rodriguez
19
+
20
+ ## Documentation:
21
+
22
+ * Fix wrong information about default RubyGems source. Pull request #5723
23
+ by tnir
24
+
25
+ # 3.3.18 / 2022-07-14
26
+
27
+ ## Enhancements:
28
+
29
+ * Make platform `universal-mingw32` match "x64-mingw-ucrt". Pull request
30
+ #5655 by johnnyshields
31
+ * Add more descriptive messages when `gem update` fails to update some
32
+ gems. Pull request #5676 by brianleshopify
33
+ * Installs bundler 2.3.18 as a default gem.
34
+
35
+ ## Bug fixes:
36
+
37
+ * Make sure RubyGems prints no warnings when loading plugins. Pull request
38
+ #5607 by deivid-rodriguez
39
+
40
+ # 3.3.17 / 2022-06-29
41
+
42
+ ## Enhancements:
43
+
44
+ * Document `gem env` argument aliases and add `gem env user_gemhome` and
45
+ `gem env user_gemdir`. Pull request #5644 by deivid-rodriguez
46
+ * Improve error message when `operating_system.rb` fails to load. Pull
47
+ request #5658 by deivid-rodriguez
48
+ * Clean up temporary directory after `generate_index --update`. Pull
49
+ request #5653 by graywolf-at-work
50
+ * Simplify extension builder. Pull request #5626 by deivid-rodriguez
51
+ * Installs bundler 2.3.17 as a default gem.
52
+
53
+ ## Documentation:
54
+
55
+ * Modify RubyGems issue template to be like the one for Bundler. Pull
56
+ request #5643 by deivid-rodriguez
57
+
1
58
  # 3.3.16 / 2022-06-15
2
59
 
3
60
  ## Enhancements:
data/Manifest.txt CHANGED
@@ -80,6 +80,7 @@ bundler/lib/bundler/gem_helpers.rb
80
80
  bundler/lib/bundler/gem_tasks.rb
81
81
  bundler/lib/bundler/gem_version_promoter.rb
82
82
  bundler/lib/bundler/graph.rb
83
+ bundler/lib/bundler/incomplete_specification.rb
83
84
  bundler/lib/bundler/index.rb
84
85
  bundler/lib/bundler/injector.rb
85
86
  bundler/lib/bundler/inline.rb
data/bin/gem CHANGED
@@ -5,8 +5,8 @@
5
5
  # See LICENSE.txt for permissions.
6
6
  #++
7
7
 
8
- require 'rubygems'
9
- require 'rubygems/gem_runner'
8
+ require "rubygems"
9
+ require "rubygems/gem_runner"
10
10
 
11
11
  args = ARGV.clone
12
12
 
data/bin/update_rubygems CHANGED
@@ -5,9 +5,9 @@
5
5
  # See LICENSE.txt for permissions.
6
6
  #++
7
7
 
8
- require 'rubygems'
8
+ require "rubygems"
9
9
 
10
- if ARGV.include? '-h' or ARGV.include? '--help'
10
+ if ARGV.include? "-h" or ARGV.include? "--help"
11
11
  $stderr.puts "rubygems_update [options]"
12
12
  $stderr.puts
13
13
  $stderr.puts "This will install the latest version of RubyGems."
@@ -17,7 +17,7 @@ if ARGV.include? '-h' or ARGV.include? '--help'
17
17
  end
18
18
 
19
19
  unless ARGV.grep(/--version=([\d\.]*)/).empty?
20
- exec Gem.ruby, '-S', $PROGRAM_NAME, "_#{$1}_"
20
+ exec Gem.ruby, "-S", $PROGRAM_NAME, "_#{$1}_"
21
21
  end
22
22
 
23
23
  update_dir = $LOAD_PATH.find {|dir| dir =~ /rubygems-update/ }
@@ -32,5 +32,5 @@ else
32
32
  update_dir = File.dirname(update_dir)
33
33
  Dir.chdir update_dir
34
34
  ENV["GEM_PREV_VER"] = Gem::VERSION
35
- abort unless system(Gem.ruby, 'setup.rb', *ARGV)
35
+ abort unless system(Gem.ruby, "setup.rb", *ARGV)
36
36
  end
data/bundler/CHANGELOG.md CHANGED
@@ -1,3 +1,74 @@
1
+ # 2.3.19 (July 27, 2022)
2
+
3
+ ## Enhancements:
4
+
5
+ - Add `Bundler.settings[:only]` to install gems of the specified groups [#5759](https://github.com/rubygems/rubygems/pull/5759)
6
+ - Add `ignore_funding_requests` config flag [#5767](https://github.com/rubygems/rubygems/pull/5767)
7
+ - Prevent random crash when autoloading `Pathname` [#5769](https://github.com/rubygems/rubygems/pull/5769)
8
+ - Don't corrupt lockfile when user moves a gem that's already in the lockfile to an incorrect source by mistake [#5070](https://github.com/rubygems/rubygems/pull/5070)
9
+ - Reconcile error/warning message for multiple global sources with documentation [#5741](https://github.com/rubygems/rubygems/pull/5741)
10
+ - Improve error message when gems cannot be found to include the source for each gem [#5729](https://github.com/rubygems/rubygems/pull/5729)
11
+
12
+ ## Bug fixes:
13
+
14
+ - Fix yet another TruffleRuby platform selection regression [#5746](https://github.com/rubygems/rubygems/pull/5746)
15
+ - Show a proper error if extension dir is not writable [#5726](https://github.com/rubygems/rubygems/pull/5726)
16
+
17
+ ## Performance:
18
+
19
+ - Lazily check incomplete lockfile to improve performance [#5546](https://github.com/rubygems/rubygems/pull/5546)
20
+
21
+ ## Documentation:
22
+
23
+ - Add deprecation notice of bundle inject [#5776](https://github.com/rubygems/rubygems/pull/5776)
24
+ - Add deprecation notice of `bundle viz` to man pages [#5765](https://github.com/rubygems/rubygems/pull/5765)
25
+ - Update command example in `bundle exec` man page [#5754](https://github.com/rubygems/rubygems/pull/5754)
26
+ - Remove bundle show from obsolete commands [#5753](https://github.com/rubygems/rubygems/pull/5753)
27
+ - Improve global source(s) documentation [#5732](https://github.com/rubygems/rubygems/pull/5732)
28
+ - Use https protocol for URLs for config mirror in bundler man [#5722](https://github.com/rubygems/rubygems/pull/5722)
29
+
30
+ # 2.3.18 (July 14, 2022)
31
+
32
+ ## Enhancements:
33
+
34
+ - Extend `gem` DSL with a `force_ruby_platform` option [#4049](https://github.com/rubygems/rubygems/pull/4049)
35
+
36
+ ## Bug fixes:
37
+
38
+ - Fix misleading error if compact index cannot be copied [#5709](https://github.com/rubygems/rubygems/pull/5709)
39
+ - Fix TruffleRuby no longer able to install lockfiles generated with other implementations [#5711](https://github.com/rubygems/rubygems/pull/5711)
40
+ - Fix TruffleRuby no longer installing lockfiles using "ruby" platform correctly [#5694](https://github.com/rubygems/rubygems/pull/5694)
41
+ - Fix crash when updating vendor cache of default gems [#5679](https://github.com/rubygems/rubygems/pull/5679)
42
+
43
+ ## Performance:
44
+
45
+ - Speed up `bundler/setup` by using the raw `Gemfile.lock` information without extra processing whenever possible [#5695](https://github.com/rubygems/rubygems/pull/5695)
46
+
47
+ ## Documentation:
48
+
49
+ - Use modern style hashes in Gemfile DSL docs [#5674](https://github.com/rubygems/rubygems/pull/5674)
50
+
51
+ # 2.3.17 (June 29, 2022)
52
+
53
+ ## Enhancements:
54
+
55
+ - Add support for platform `:x64_mingw` to correctly lookup "x64-mingw-ucrt" [#5649](https://github.com/rubygems/rubygems/pull/5649)
56
+ - Fix some errors being printed twice in `--verbose` mode [#5654](https://github.com/rubygems/rubygems/pull/5654)
57
+ - Fix extension paths in generated standalone script [#5632](https://github.com/rubygems/rubygems/pull/5632)
58
+
59
+ ## Bug fixes:
60
+
61
+ - Raise if ruby platform is forced and there are no ruby variants [#5495](https://github.com/rubygems/rubygems/pull/5495)
62
+ - Fix `bundle package --no-install` no longer skipping install [#5639](https://github.com/rubygems/rubygems/pull/5639)
63
+
64
+ ## Performance:
65
+
66
+ - Improve performance of `Bundler::SpecSet#for` by using hash lookup of handled deps [#5537](https://github.com/rubygems/rubygems/pull/5537)
67
+
68
+ ## Documentation:
69
+
70
+ - Fix formatting issue in `bundle add` man page [#5642](https://github.com/rubygems/rubygems/pull/5642)
71
+
1
72
  # 2.3.16 (June 15, 2022)
2
73
 
3
74
  ## Performance:
@@ -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-06-15".freeze
8
- @git_commit_sha = "324ee6e542".freeze
7
+ @built_at = "2022-07-27".freeze
8
+ @git_commit_sha = "4f496f93e6".freeze
9
9
  @release = true
10
10
  # end ivars
11
11
 
@@ -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 unless Bundler.settings[:no_install]
17
+ 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]
@@ -15,6 +15,7 @@ module Bundler
15
15
  end
16
16
 
17
17
  def self.output_fund_metadata_summary
18
+ return if Bundler.settings["ignore_funding_requests"]
18
19
  definition = Bundler.definition
19
20
  current_dependencies = definition.requested_dependencies
20
21
  current_specs = definition.specs
@@ -161,6 +161,8 @@ 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
+
164
166
  Bundler.settings.set_command_option_if_given :clean, options["clean"]
165
167
 
166
168
  normalize_groups if options[:without] || options[:with]
@@ -251,7 +251,9 @@ module Bundler
251
251
  remembered_negative_flag_deprecation("no-deployment")
252
252
 
253
253
  require_relative "cli/install"
254
- Install.new(options.dup).run
254
+ Bundler.settings.temporary(:no_install => false) do
255
+ Install.new(options.dup).run
256
+ end
255
257
  end
256
258
 
257
259
  map aliases_for("install")
@@ -297,7 +299,9 @@ module Bundler
297
299
  def update(*gems)
298
300
  SharedHelpers.major_deprecation(2, "The `--force` option has been renamed to `--redownload`") if ARGV.include?("--force")
299
301
  require_relative "cli/update"
300
- Update.new(options, gems).run
302
+ Bundler.settings.temporary(:no_install => false) do
303
+ Update.new(options, gems).run
304
+ end
301
305
  end
302
306
 
303
307
  desc "show GEM [OPTIONS]", "Shows all gems that are part of the bundle, or the path to a given gem"
@@ -31,9 +31,8 @@ module Bundler
31
31
 
32
32
  # first try to fetch any new bytes on the existing file
33
33
  if retrying.nil? && local_path.file?
34
- SharedHelpers.filesystem_access(local_temp_path) do
35
- FileUtils.cp local_path, local_temp_path
36
- end
34
+ copy_file local_path, local_temp_path
35
+
37
36
  headers["If-None-Match"] = etag_for(local_temp_path)
38
37
  headers["Range"] =
39
38
  if local_temp_path.size.nonzero?
@@ -98,6 +97,20 @@ module Bundler
98
97
  SharedHelpers.digest(:MD5).hexdigest(File.read(path))
99
98
  end
100
99
  end
100
+
101
+ private
102
+
103
+ def copy_file(source, dest)
104
+ SharedHelpers.filesystem_access(source, :read) do
105
+ File.open(source, "r") do |s|
106
+ SharedHelpers.filesystem_access(dest, :write) do
107
+ File.open(dest, "wb", s.stat.mode) do |f|
108
+ IO.copy_stream(s, f)
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end
101
114
  end
102
115
  end
103
116
  end
@@ -78,7 +78,7 @@ module Bundler
78
78
  end
79
79
 
80
80
  def x64_mingw?
81
- Gem.win_platform? && Bundler.local_platform != Gem::Platform::RUBY && Bundler.local_platform.os == "mingw32" && Bundler.local_platform.cpu == "x64"
81
+ Gem.win_platform? && Bundler.local_platform != Gem::Platform::RUBY && Bundler.local_platform.os.start_with?("mingw") && Bundler.local_platform.cpu == "x64"
82
82
  end
83
83
 
84
84
  (KNOWN_MINOR_VERSIONS + KNOWN_MAJOR_VERSIONS).each do |version|
@@ -138,13 +138,13 @@ module Bundler
138
138
  @unlock[:gems] ||= @dependencies.map(&:name)
139
139
  else
140
140
  eager_unlock = expand_dependencies(@unlock[:gems] || [], true)
141
- @unlock[:gems] = @locked_specs.for(eager_unlock, false, false).map(&:name)
141
+ @unlock[:gems] = @locked_specs.for(eager_unlock, false, platforms).map(&:name)
142
142
  end
143
143
 
144
144
  @dependency_changes = converge_dependencies
145
145
  @local_changes = converge_locals
146
146
 
147
- @locked_specs_incomplete_for_platform = !@locked_specs.for(requested_dependencies & expand_dependencies(locked_dependencies), true, true)
147
+ @reresolve = nil
148
148
 
149
149
  @requires = compute_requires
150
150
  end
@@ -235,6 +235,14 @@ module Bundler
235
235
  @locked_deps.values
236
236
  end
237
237
 
238
+ def new_deps
239
+ @new_deps ||= @dependencies - locked_dependencies
240
+ end
241
+
242
+ def deleted_deps
243
+ @deleted_deps ||= locked_dependencies - @dependencies
244
+ end
245
+
238
246
  def specs_for(groups)
239
247
  return specs if groups.empty?
240
248
  deps = dependencies_for(groups)
@@ -259,14 +267,20 @@ module Bundler
259
267
  Bundler.ui.debug "Frozen, using resolution from the lockfile"
260
268
  @locked_specs
261
269
  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? }))
270
+ if deleted_deps.any?
271
+ Bundler.ui.debug("Some dependencies were deleted, using a subset of the resolution from the lockfile")
272
+ SpecSet.new(filter_specs(@locked_specs, @dependencies - deleted_deps))
273
+ else
274
+ Bundler.ui.debug("Found no changes, using resolution from the lockfile")
275
+ if @locked_gems.may_include_redundant_platform_specific_gems?
276
+ SpecSet.new(filter_specs(@locked_specs, @dependencies))
277
+ else
278
+ @locked_specs
279
+ end
280
+ end
264
281
  else
265
- last_resolve = converge_locked_specs
266
- # Run a resolve against the locally available gems
267
282
  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)
283
+ @reresolve = reresolve
270
284
  end
271
285
  end
272
286
 
@@ -359,9 +373,6 @@ module Bundler
359
373
  added.concat new_platforms.map {|p| "* platform: #{p}" }
360
374
  deleted.concat deleted_platforms.map {|p| "* platform: #{p}" }
361
375
 
362
- new_deps = @dependencies - locked_dependencies
363
- deleted_deps = locked_dependencies - @dependencies
364
-
365
376
  added.concat new_deps.map {|d| "* #{pretty_dep(d)}" } if new_deps.any?
366
377
  deleted.concat deleted_deps.map {|d| "* #{pretty_dep(d)}" } if deleted_deps.any?
367
378
 
@@ -454,7 +465,7 @@ module Bundler
454
465
  private :sources
455
466
 
456
467
  def nothing_changed?
457
- !@source_changes && !@dependency_changes && !@new_platform && !@path_changes && !@local_changes && !@locked_specs_incomplete_for_platform
468
+ !@source_changes && !@dependency_changes && !@new_platform && !@path_changes && !@local_changes
458
469
  end
459
470
 
460
471
  def unlocking?
@@ -463,8 +474,14 @@ module Bundler
463
474
 
464
475
  private
465
476
 
477
+ def reresolve
478
+ last_resolve = converge_locked_specs
479
+ expanded_dependencies = expand_dependencies(dependencies + metadata_dependencies, true)
480
+ Resolver.resolve(expanded_dependencies, source_requirements, last_resolve, gem_version_promoter, additional_base_requirements_for_resolve, platforms)
481
+ end
482
+
466
483
  def filter_specs(specs, deps)
467
- SpecSet.new(specs).for(expand_dependencies(deps, true), false, false)
484
+ SpecSet.new(specs).for(expand_dependencies(deps, true), false, platforms)
468
485
  end
469
486
 
470
487
  def materialize(dependencies)
@@ -481,7 +498,22 @@ module Bundler
481
498
  "removed in order to install."
482
499
  end
483
500
 
484
- raise GemNotFound, "Could not find #{missing_specs.map(&:full_name).join(", ")} in any of the sources"
501
+ missing_specs_list = missing_specs.group_by(&:source).map do |source, missing_specs_for_source|
502
+ "#{missing_specs_for_source.map(&:full_name).join(", ")} in #{source}"
503
+ end
504
+
505
+ raise GemNotFound, "Could not find #{missing_specs_list.join(" nor ")}"
506
+ end
507
+
508
+ if @reresolve.nil?
509
+ incomplete_specs = specs.incomplete_specs
510
+
511
+ if incomplete_specs.any?
512
+ Bundler.ui.debug("The lockfile does not have all gems needed for the current platform though, Bundler will still re-resolve dependencies")
513
+ @unlock[:gems].concat(incomplete_specs.map(&:name))
514
+ @resolve = reresolve
515
+ specs = resolve.materialize(dependencies)
516
+ end
485
517
  end
486
518
 
487
519
  unless specs["bundler"].any?
@@ -531,7 +563,6 @@ module Bundler
531
563
  [@new_platform, "you added a new platform to your gemfile"],
532
564
  [@path_changes, "the gemspecs for path gems changed"],
533
565
  [@local_changes, "the gemspecs for git local gems changed"],
534
- [@locked_specs_incomplete_for_platform, "the lockfile does not have all gems needed for the current platform"],
535
566
  ].select(&:first).map(&:last).join(", ")
536
567
  end
537
568
 
@@ -707,7 +738,7 @@ module Bundler
707
738
  # if we won't need the source (according to the lockfile),
708
739
  # don't error if the path/git source isn't available
709
740
  next if specs.
710
- for(requested_dependencies, false, true).
741
+ for(requested_dependencies, false).
711
742
  none? {|locked_spec| locked_spec.source == s.source }
712
743
 
713
744
  raise
@@ -775,7 +806,9 @@ module Bundler
775
806
  end
776
807
 
777
808
  def requested_groups
778
- groups - Bundler.settings[:without] - @optional_groups + Bundler.settings[:with]
809
+ values = groups - Bundler.settings[:without] - @optional_groups + Bundler.settings[:with]
810
+ values &= Bundler.settings[:only] unless Bundler.settings[:only].empty?
811
+ values
779
812
  end
780
813
 
781
814
  def lockfiles_equal?(current, proposed, preserve_unknown_sections)
@@ -806,7 +839,7 @@ module Bundler
806
839
  return [] unless @locked_gems && unlocking? && !sources.expired_sources?(@locked_gems.sources)
807
840
  converge_specs(@originally_locked_specs).map do |locked_spec|
808
841
  name = locked_spec.name
809
- dep = Gem::Dependency.new(name, ">= #{locked_spec.version}")
842
+ dep = Dependency.new(name, ">= #{locked_spec.version}")
810
843
  DepProxy.get_proxy(dep, locked_spec.platform)
811
844
  end
812
845
  end
@@ -7,7 +7,7 @@ require_relative "rubygems_ext"
7
7
  module Bundler
8
8
  class Dependency < Gem::Dependency
9
9
  attr_reader :autorequire
10
- attr_reader :groups, :platforms, :gemfile, :git, :github, :branch, :ref
10
+ attr_reader :groups, :platforms, :gemfile, :git, :github, :branch, :ref, :force_ruby_platform
11
11
 
12
12
  # rubocop:disable Naming/VariableNumber
13
13
  PLATFORM_MAP = {
@@ -109,6 +109,7 @@ module Bundler
109
109
  @env = options["env"]
110
110
  @should_include = options.fetch("should_include", true)
111
111
  @gemfile = options["gemfile"]
112
+ @force_ruby_platform = options["force_ruby_platform"]
112
113
 
113
114
  @autorequire = Array(options["require"] || []) if options.key?("require")
114
115
  end
@@ -122,7 +123,7 @@ module Bundler
122
123
  end
123
124
 
124
125
  def expanded_platforms
125
- @expanded_platforms ||= @platforms.map {|pl| PLATFORM_MAP[pl] }.compact.uniq
126
+ @expanded_platforms ||= @platforms.map {|pl| PLATFORM_MAP[pl] }.compact.flatten.uniq
126
127
  end
127
128
 
128
129
  def should_include?
@@ -16,7 +16,7 @@ module Bundler
16
16
  VALID_PLATFORMS = Bundler::Dependency::PLATFORM_MAP.keys.freeze
17
17
 
18
18
  VALID_KEYS = %w[group groups git path glob name branch ref tag require submodules
19
- platform platforms type source install_if gemfile].freeze
19
+ platform platforms type source install_if gemfile force_ruby_platform].freeze
20
20
 
21
21
  GITHUB_PULL_REQUEST_URL = %r{\Ahttps://github\.com/([A-Za-z0-9_\-\.]+/[A-Za-z0-9_\-\.]+)/pull/(\d+)\z}.freeze
22
22
 
@@ -465,12 +465,12 @@ module Bundler
465
465
 
466
466
  def multiple_global_source_warning
467
467
  if Bundler.feature_flag.bundler_3_mode?
468
- msg = "This Gemfile contains multiple primary sources. " \
468
+ msg = "This Gemfile contains multiple global sources. " \
469
469
  "Each source after the first must include a block to indicate which gems " \
470
470
  "should come from that source"
471
471
  raise GemfileEvalError, msg
472
472
  else
473
- Bundler::SharedHelpers.major_deprecation 2, "Your Gemfile contains multiple primary sources. " \
473
+ Bundler::SharedHelpers.major_deprecation 2, "Your Gemfile contains multiple global sources. " \
474
474
  "Using `source` more than once without a block is a security risk, and " \
475
475
  "may result in installing unexpected gems. To resolve this warning, use " \
476
476
  "a block to indicate which gems should come from the secondary source."
@@ -29,8 +29,11 @@ module Bundler
29
29
  Bundler.ui.error error.message
30
30
  Bundler.ui.trace error.orig_exception
31
31
  when BundlerError
32
- Bundler.ui.error error.message, :wrap => true
33
- Bundler.ui.trace error
32
+ if Bundler.ui.debug?
33
+ Bundler.ui.trace error
34
+ else
35
+ Bundler.ui.error error.message, :wrap => true
36
+ end
34
37
  when Thor::Error
35
38
  Bundler.ui.error error.message
36
39
  when LoadError
@@ -5,11 +5,13 @@ module Bundler
5
5
  GENERIC_CACHE = { Gem::Platform::RUBY => Gem::Platform::RUBY } # rubocop:disable Style/MutableConstant
6
6
  GENERICS = [
7
7
  [Gem::Platform.new("java"), Gem::Platform.new("java")],
8
+ [Gem::Platform.new("universal-java"), Gem::Platform.new("java")],
8
9
  [Gem::Platform.new("mswin32"), Gem::Platform.new("mswin32")],
9
10
  [Gem::Platform.new("mswin64"), Gem::Platform.new("mswin64")],
10
11
  [Gem::Platform.new("universal-mingw32"), Gem::Platform.new("universal-mingw32")],
11
12
  [Gem::Platform.new("x64-mingw32"), Gem::Platform.new("x64-mingw32")],
12
13
  [Gem::Platform.new("x86_64-mingw32"), Gem::Platform.new("x64-mingw32")],
14
+ [Gem::Platform.new("x64-mingw-ucrt"), Gem::Platform.new("x64-mingw-ucrt")],
13
15
  [Gem::Platform.new("mingw32"), Gem::Platform.new("x86-mingw32")],
14
16
  ].freeze
15
17
 
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bundler
4
+ class IncompleteSpecification
5
+ attr_reader :name, :platform
6
+
7
+ def initialize(name, platform)
8
+ @name = name
9
+ @platform = platform
10
+ end
11
+ end
12
+ end
@@ -56,17 +56,17 @@ module Bundler
56
56
 
57
57
  # Search this index's specs, and any source indexes that this index knows
58
58
  # about, returning all of the results.
59
- def search(query, base = nil)
60
- sort_specs(unsorted_search(query, base))
59
+ def search(query)
60
+ sort_specs(unsorted_search(query))
61
61
  end
62
62
 
63
- def unsorted_search(query, base)
64
- results = local_search(query, base)
63
+ def unsorted_search(query)
64
+ results = local_search(query)
65
65
 
66
66
  seen = results.map(&:full_name).uniq unless @sources.empty?
67
67
 
68
68
  @sources.each do |source|
69
- source.unsorted_search(query, base).each do |spec|
69
+ source.unsorted_search(query).each do |spec|
70
70
  next if seen.include?(spec.full_name)
71
71
 
72
72
  seen << spec.full_name
@@ -89,12 +89,12 @@ module Bundler
89
89
  self.class.sort_specs(specs)
90
90
  end
91
91
 
92
- def local_search(query, base = nil)
92
+ def local_search(query)
93
93
  case query
94
94
  when Gem::Specification, RemoteSpecification, LazySpecification, EndpointSpecification then search_by_spec(query)
95
95
  when String then specs_by_name(query)
96
- when Gem::Dependency then search_by_dependency(query, base)
97
- when DepProxy then search_by_dependency(query.dep, base)
96
+ when Gem::Dependency then search_by_dependency(query)
97
+ when DepProxy then search_by_dependency(query.dep)
98
98
  else
99
99
  raise "You can't search for a #{query.inspect}."
100
100
  end
@@ -185,18 +185,12 @@ module Bundler
185
185
  @specs[name].values
186
186
  end
187
187
 
188
- def search_by_dependency(dependency, base = nil)
189
- @cache[base || false] ||= {}
190
- @cache[base || false][dependency] ||= begin
188
+ def search_by_dependency(dependency)
189
+ @cache[dependency] ||= begin
191
190
  specs = specs_by_name(dependency.name)
192
- specs += base if base
193
191
  found = specs.select do |spec|
194
192
  next true if spec.source.is_a?(Source::Gemspec)
195
- if base # allow all platforms when searching from a lockfile
196
- dependency.matches_spec?(spec)
197
- else
198
- dependency.matches_spec?(spec) && Gem::Platform.match_spec?(spec)
199
- end
193
+ dependency.matches_spec?(spec)
200
194
  end
201
195
 
202
196
  found