rubygems-update 3.3.16 → 3.3.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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