rubygems-update 3.4.22 → 3.5.0

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 (528) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +99 -2
  3. data/Manifest.txt +34 -221
  4. data/README.md +1 -3
  5. data/bundler/CHANGELOG.md +53 -0
  6. data/bundler/bundler.gemspec +4 -2
  7. data/bundler/exe/bundle +1 -10
  8. data/bundler/lib/bundler/build_metadata.rb +3 -3
  9. data/bundler/lib/bundler/capistrano.rb +1 -1
  10. data/bundler/lib/bundler/checksum.rb +245 -0
  11. data/bundler/lib/bundler/ci_detector.rb +75 -0
  12. data/bundler/lib/bundler/cli/add.rb +3 -3
  13. data/bundler/lib/bundler/cli/binstubs.rb +4 -4
  14. data/bundler/lib/bundler/cli/cache.rb +1 -1
  15. data/bundler/lib/bundler/cli/check.rb +1 -1
  16. data/bundler/lib/bundler/cli/common.rb +9 -1
  17. data/bundler/lib/bundler/cli/config.rb +8 -7
  18. data/bundler/lib/bundler/cli/console.rb +3 -2
  19. data/bundler/lib/bundler/cli/doctor.rb +2 -2
  20. data/bundler/lib/bundler/cli/exec.rb +1 -1
  21. data/bundler/lib/bundler/cli/gem.rb +28 -23
  22. data/bundler/lib/bundler/cli/info.rb +2 -13
  23. data/bundler/lib/bundler/cli/install.rb +5 -4
  24. data/bundler/lib/bundler/cli/issue.rb +1 -1
  25. data/bundler/lib/bundler/cli/lock.rb +4 -4
  26. data/bundler/lib/bundler/cli/open.rb +1 -1
  27. data/bundler/lib/bundler/cli/outdated.rb +6 -6
  28. data/bundler/lib/bundler/cli/plugin.rb +7 -14
  29. data/bundler/lib/bundler/cli/pristine.rb +38 -30
  30. data/bundler/lib/bundler/cli/show.rb +2 -2
  31. data/bundler/lib/bundler/cli/update.rb +5 -5
  32. data/bundler/lib/bundler/cli.rb +215 -263
  33. data/bundler/lib/bundler/compact_index_client/cache.rb +29 -9
  34. data/bundler/lib/bundler/compact_index_client/cache_file.rb +153 -0
  35. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +7 -3
  36. data/bundler/lib/bundler/compact_index_client/updater.rb +79 -81
  37. data/bundler/lib/bundler/compact_index_client.rb +14 -7
  38. data/bundler/lib/bundler/constants.rb +1 -1
  39. data/bundler/lib/bundler/current_ruby.rb +5 -21
  40. data/bundler/lib/bundler/definition.rb +42 -15
  41. data/bundler/lib/bundler/dependency.rb +16 -12
  42. data/bundler/lib/bundler/digest.rb +2 -2
  43. data/bundler/lib/bundler/dsl.rb +43 -25
  44. data/bundler/lib/bundler/endpoint_specification.rb +5 -1
  45. data/bundler/lib/bundler/env.rb +1 -3
  46. data/bundler/lib/bundler/errors.rb +43 -0
  47. data/bundler/lib/bundler/fetcher/base.rb +3 -1
  48. data/bundler/lib/bundler/fetcher/compact_index.rb +4 -4
  49. data/bundler/lib/bundler/fetcher/downloader.rb +13 -11
  50. data/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
  51. data/bundler/lib/bundler/fetcher/index.rb +1 -1
  52. data/bundler/lib/bundler/fetcher.rb +28 -25
  53. data/bundler/lib/bundler/friendly_errors.rb +5 -5
  54. data/bundler/lib/bundler/gem_helper.rb +1 -1
  55. data/bundler/lib/bundler/gem_helpers.rb +5 -2
  56. data/bundler/lib/bundler/graph.rb +9 -9
  57. data/bundler/lib/bundler/index.rb +1 -2
  58. data/bundler/lib/bundler/injector.rb +1 -1
  59. data/bundler/lib/bundler/inline.rb +3 -3
  60. data/bundler/lib/bundler/installer/gem_installer.rb +5 -5
  61. data/bundler/lib/bundler/installer/parallel_installer.rb +16 -8
  62. data/bundler/lib/bundler/installer/standalone.rb +2 -3
  63. data/bundler/lib/bundler/installer.rb +9 -9
  64. data/bundler/lib/bundler/lazy_specification.rb +24 -17
  65. data/bundler/lib/bundler/lockfile_generator.rb +9 -0
  66. data/bundler/lib/bundler/lockfile_parser.rb +81 -10
  67. data/bundler/lib/bundler/man/bundle-add.1 +3 -26
  68. data/bundler/lib/bundler/man/bundle-binstubs.1 +4 -16
  69. data/bundler/lib/bundler/man/bundle-cache.1 +3 -24
  70. data/bundler/lib/bundler/man/bundle-check.1 +3 -12
  71. data/bundler/lib/bundler/man/bundle-clean.1 +3 -10
  72. data/bundler/lib/bundler/man/bundle-config.1 +20 -211
  73. data/bundler/lib/bundler/man/bundle-config.1.ronn +6 -0
  74. data/bundler/lib/bundler/man/bundle-console.1 +4 -22
  75. data/bundler/lib/bundler/man/bundle-doctor.1 +4 -18
  76. data/bundler/lib/bundler/man/bundle-exec.1 +12 -73
  77. data/bundler/lib/bundler/man/bundle-gem.1 +13 -49
  78. data/bundler/lib/bundler/man/bundle-help.1 +3 -7
  79. data/bundler/lib/bundler/man/bundle-info.1 +3 -9
  80. data/bundler/lib/bundler/man/bundle-init.1 +3 -12
  81. data/bundler/lib/bundler/man/bundle-inject.1 +6 -19
  82. data/bundler/lib/bundler/man/bundle-install.1 +27 -125
  83. data/bundler/lib/bundler/man/bundle-install.1.ronn +1 -0
  84. data/bundler/lib/bundler/man/bundle-list.1 +4 -19
  85. data/bundler/lib/bundler/man/bundle-lock.1 +5 -29
  86. data/bundler/lib/bundler/man/bundle-open.1 +7 -27
  87. data/bundler/lib/bundler/man/bundle-outdated.1 +3 -55
  88. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -0
  89. data/bundler/lib/bundler/man/bundle-platform.1 +5 -27
  90. data/bundler/lib/bundler/man/bundle-plugin.1 +3 -29
  91. data/bundler/lib/bundler/man/bundle-pristine.1 +5 -16
  92. data/bundler/lib/bundler/man/bundle-remove.1 +4 -14
  93. data/bundler/lib/bundler/man/bundle-show.1 +3 -10
  94. data/bundler/lib/bundler/man/bundle-update.1 +18 -137
  95. data/bundler/lib/bundler/man/bundle-version.1 +3 -16
  96. data/bundler/lib/bundler/man/bundle-viz.1 +4 -16
  97. data/bundler/lib/bundler/man/bundle.1 +5 -44
  98. data/bundler/lib/bundler/man/gemfile.5 +24 -301
  99. data/bundler/lib/bundler/man/gemfile.5.ronn +4 -0
  100. data/bundler/lib/bundler/match_metadata.rb +4 -0
  101. data/bundler/lib/bundler/match_platform.rb +1 -1
  102. data/bundler/lib/bundler/plugin/api/source.rb +3 -2
  103. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  104. data/bundler/lib/bundler/plugin.rb +3 -3
  105. data/bundler/lib/bundler/resolver/base.rb +1 -1
  106. data/bundler/lib/bundler/resolver/incompatibility.rb +1 -1
  107. data/bundler/lib/bundler/resolver/spec_group.rb +1 -4
  108. data/bundler/lib/bundler/resolver.rb +16 -16
  109. data/bundler/lib/bundler/ruby_dsl.rb +20 -12
  110. data/bundler/lib/bundler/ruby_version.rb +1 -1
  111. data/bundler/lib/bundler/rubygems_ext.rb +24 -50
  112. data/bundler/lib/bundler/rubygems_gem_installer.rb +6 -56
  113. data/bundler/lib/bundler/rubygems_integration.rb +25 -94
  114. data/bundler/lib/bundler/runtime.rb +2 -2
  115. data/bundler/lib/bundler/self_manager.rb +23 -7
  116. data/bundler/lib/bundler/settings.rb +27 -7
  117. data/bundler/lib/bundler/setup.rb +4 -1
  118. data/bundler/lib/bundler/shared_helpers.rb +35 -13
  119. data/bundler/lib/bundler/source/git/git_proxy.rb +15 -15
  120. data/bundler/lib/bundler/source/git.rb +4 -3
  121. data/bundler/lib/bundler/source/metadata.rb +15 -15
  122. data/bundler/lib/bundler/source/path.rb +7 -6
  123. data/bundler/lib/bundler/source/rubygems.rb +21 -14
  124. data/bundler/lib/bundler/source.rb +2 -0
  125. data/bundler/lib/bundler/spec_set.rb +38 -10
  126. data/bundler/lib/bundler/stub_specification.rb +1 -0
  127. data/bundler/lib/bundler/templates/Executable.bundler +1 -1
  128. data/bundler/lib/bundler/templates/newgem/README.md.tt +3 -3
  129. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +2 -6
  130. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +1 -1
  131. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +1 -1
  132. data/bundler/lib/bundler/ui/shell.rb +1 -1
  133. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  134. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +53 -6
  135. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +8 -20
  136. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +3 -3
  137. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +2 -2
  138. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +1 -1
  139. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +35 -35
  140. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +3 -0
  141. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +256 -132
  142. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1 -0
  143. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +95 -31
  144. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  145. data/bundler/lib/bundler/vendored_net_http.rb +8 -0
  146. data/bundler/lib/bundler/vendored_persistent.rb +0 -4
  147. data/bundler/lib/bundler/vendored_timeout.rb +8 -0
  148. data/bundler/lib/bundler/version.rb +1 -1
  149. data/bundler/lib/bundler/vlad.rb +1 -1
  150. data/bundler/lib/bundler/yaml_serializer.rb +3 -3
  151. data/bundler/lib/bundler.rb +38 -27
  152. data/lib/rubygems/available_set.rb +4 -4
  153. data/lib/rubygems/basic_specification.rb +35 -37
  154. data/lib/rubygems/bundler_version_finder.rb +4 -4
  155. data/lib/rubygems/ci_detector.rb +75 -0
  156. data/lib/rubygems/command.rb +13 -15
  157. data/lib/rubygems/command_manager.rb +5 -4
  158. data/lib/rubygems/commands/build_command.rb +2 -2
  159. data/lib/rubygems/commands/cert_command.rb +1 -2
  160. data/lib/rubygems/commands/check_command.rb +4 -4
  161. data/lib/rubygems/commands/cleanup_command.rb +12 -14
  162. data/lib/rubygems/commands/contents_command.rb +4 -4
  163. data/lib/rubygems/commands/dependency_command.rb +4 -5
  164. data/lib/rubygems/commands/environment_command.rb +1 -3
  165. data/lib/rubygems/commands/exec_command.rb +1 -1
  166. data/lib/rubygems/commands/fetch_command.rb +2 -2
  167. data/lib/rubygems/commands/generate_index_command.rb +39 -74
  168. data/lib/rubygems/commands/help_command.rb +3 -3
  169. data/lib/rubygems/commands/info_command.rb +2 -2
  170. data/lib/rubygems/commands/install_command.rb +8 -16
  171. data/lib/rubygems/commands/list_command.rb +2 -2
  172. data/lib/rubygems/commands/lock_command.rb +1 -1
  173. data/lib/rubygems/commands/open_command.rb +1 -1
  174. data/lib/rubygems/commands/owner_command.rb +1 -1
  175. data/lib/rubygems/commands/pristine_command.rb +13 -15
  176. data/lib/rubygems/commands/push_command.rb +2 -2
  177. data/lib/rubygems/commands/query_command.rb +4 -5
  178. data/lib/rubygems/commands/rdoc_command.rb +2 -2
  179. data/lib/rubygems/commands/search_command.rb +2 -2
  180. data/lib/rubygems/commands/setup_command.rb +31 -34
  181. data/lib/rubygems/commands/sources_command.rb +12 -12
  182. data/lib/rubygems/commands/specification_command.rb +10 -10
  183. data/lib/rubygems/commands/stale_command.rb +1 -1
  184. data/lib/rubygems/commands/uninstall_command.rb +9 -10
  185. data/lib/rubygems/commands/unpack_command.rb +4 -4
  186. data/lib/rubygems/commands/update_command.rb +10 -12
  187. data/lib/rubygems/commands/which_command.rb +1 -1
  188. data/lib/rubygems/commands/yank_command.rb +1 -1
  189. data/lib/rubygems/compatibility.rb +5 -6
  190. data/lib/rubygems/config_file.rb +4 -4
  191. data/lib/rubygems/core_ext/kernel_gem.rb +0 -2
  192. data/lib/rubygems/core_ext/kernel_require.rb +19 -48
  193. data/lib/rubygems/core_ext/kernel_warn.rb +1 -1
  194. data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
  195. data/lib/rubygems/defaults.rb +15 -3
  196. data/lib/rubygems/dependency.rb +12 -14
  197. data/lib/rubygems/dependency_installer.rb +29 -30
  198. data/lib/rubygems/dependency_list.rb +1 -1
  199. data/lib/rubygems/deprecate.rb +16 -15
  200. data/lib/rubygems/doctor.rb +5 -5
  201. data/lib/rubygems/errors.rb +2 -6
  202. data/lib/rubygems/exceptions.rb +2 -1
  203. data/lib/rubygems/ext/builder.rb +15 -10
  204. data/lib/rubygems/ext/cargo_builder.rb +5 -5
  205. data/lib/rubygems/ext/ext_conf_builder.rb +1 -3
  206. data/lib/rubygems/gem_runner.rb +4 -4
  207. data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +3 -3
  208. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -3
  209. data/lib/rubygems/gemcutter_utilities.rb +18 -19
  210. data/lib/rubygems/install_update_options.rb +18 -19
  211. data/lib/rubygems/installer.rb +59 -33
  212. data/lib/rubygems/installer_uninstaller_utils.rb +0 -2
  213. data/lib/rubygems/local_remote_options.rb +7 -10
  214. data/lib/rubygems/name_tuple.rb +7 -9
  215. data/lib/rubygems/net/http.rb +3 -0
  216. data/lib/rubygems/net-http/LICENSE.txt +22 -0
  217. data/lib/rubygems/net-http/lib/net/http/backward.rb +40 -0
  218. data/lib/rubygems/net-http/lib/net/http/exceptions.rb +34 -0
  219. data/lib/rubygems/net-http/lib/net/http/generic_request.rb +414 -0
  220. data/lib/rubygems/net-http/lib/net/http/header.rb +981 -0
  221. data/lib/rubygems/net-http/lib/net/http/proxy_delta.rb +17 -0
  222. data/lib/rubygems/net-http/lib/net/http/request.rb +88 -0
  223. data/lib/rubygems/net-http/lib/net/http/requests.rb +425 -0
  224. data/lib/rubygems/net-http/lib/net/http/response.rb +738 -0
  225. data/lib/rubygems/net-http/lib/net/http/responses.rb +1174 -0
  226. data/lib/rubygems/net-http/lib/net/http/status.rb +84 -0
  227. data/lib/rubygems/net-http/lib/net/http.rb +2496 -0
  228. data/lib/rubygems/net-http/lib/net/https.rb +23 -0
  229. data/lib/rubygems/net-protocol/LICENSE.txt +22 -0
  230. data/lib/rubygems/net-protocol/lib/net/protocol.rb +544 -0
  231. data/lib/rubygems/optparse/lib/optparse.rb +39 -17
  232. data/lib/rubygems/package/old.rb +2 -2
  233. data/lib/rubygems/package/tar_header.rb +45 -39
  234. data/lib/rubygems/package/tar_reader/entry.rb +5 -4
  235. data/lib/rubygems/package/tar_reader.rb +5 -3
  236. data/lib/rubygems/package/tar_writer.rb +19 -17
  237. data/lib/rubygems/package.rb +27 -26
  238. data/lib/rubygems/package_task.rb +2 -2
  239. data/lib/rubygems/path_support.rb +9 -10
  240. data/lib/rubygems/platform.rb +60 -45
  241. data/lib/rubygems/query_utils.rb +7 -9
  242. data/lib/rubygems/remote_fetcher.rb +15 -15
  243. data/lib/rubygems/request/connection_pools.rb +3 -3
  244. data/lib/rubygems/request.rb +20 -17
  245. data/lib/rubygems/request_set/gem_dependency_api.rb +119 -122
  246. data/lib/rubygems/request_set/lockfile/parser.rb +9 -9
  247. data/lib/rubygems/request_set/lockfile/tokenizer.rb +20 -12
  248. data/lib/rubygems/request_set/lockfile.rb +6 -11
  249. data/lib/rubygems/request_set.rb +5 -5
  250. data/lib/rubygems/requirement.rb +7 -7
  251. data/lib/rubygems/resolv/LICENSE.txt +22 -0
  252. data/lib/rubygems/resolv/lib/resolv.rb +3387 -0
  253. data/lib/rubygems/resolver/activation_request.rb +1 -3
  254. data/lib/rubygems/resolver/api_set/gem_parser.rb +7 -3
  255. data/lib/rubygems/resolver/best_set.rb +1 -1
  256. data/lib/rubygems/resolver/composed_set.rb +1 -1
  257. data/lib/rubygems/resolver/conflict.rb +4 -12
  258. data/lib/rubygems/resolver/index_set.rb +4 -4
  259. data/lib/rubygems/resolver/index_specification.rb +2 -2
  260. data/lib/rubygems/resolver/installer_set.rb +5 -6
  261. data/lib/rubygems/resolver/lock_set.rb +1 -1
  262. data/lib/rubygems/resolver.rb +3 -10
  263. data/lib/rubygems/s3_uri_signer.rb +6 -6
  264. data/lib/rubygems/safe_marshal/elements.rb +138 -0
  265. data/lib/rubygems/safe_marshal/reader.rb +306 -0
  266. data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
  267. data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +385 -0
  268. data/lib/rubygems/safe_marshal/visitors/visitor.rb +74 -0
  269. data/lib/rubygems/safe_marshal.rb +74 -0
  270. data/lib/rubygems/safe_yaml.rb +5 -28
  271. data/lib/rubygems/security/policies.rb +36 -38
  272. data/lib/rubygems/security/policy.rb +7 -11
  273. data/lib/rubygems/security/signer.rb +1 -1
  274. data/lib/rubygems/security/trust_dir.rb +3 -3
  275. data/lib/rubygems/security.rb +8 -22
  276. data/lib/rubygems/source/git.rb +1 -3
  277. data/lib/rubygems/source/installed.rb +0 -2
  278. data/lib/rubygems/source/local.rb +5 -8
  279. data/lib/rubygems/source/lock.rb +1 -3
  280. data/lib/rubygems/source/specific_file.rb +0 -1
  281. data/lib/rubygems/source/vendor.rb +0 -2
  282. data/lib/rubygems/source.rb +12 -12
  283. data/lib/rubygems/source_list.rb +4 -4
  284. data/lib/rubygems/spec_fetcher.rb +29 -29
  285. data/lib/rubygems/specification.rb +125 -138
  286. data/lib/rubygems/specification_policy.rb +55 -25
  287. data/lib/rubygems/stub_specification.rb +4 -5
  288. data/lib/rubygems/text.rb +1 -2
  289. data/lib/rubygems/timeout/LICENSE.txt +22 -0
  290. data/lib/rubygems/timeout/lib/timeout.rb +199 -0
  291. data/lib/rubygems/timeout.rb +3 -0
  292. data/lib/rubygems/tsort/lib/tsort.rb +3 -0
  293. data/lib/rubygems/uninstaller.rb +7 -9
  294. data/lib/rubygems/update_suggestion.rb +5 -18
  295. data/lib/rubygems/uri_formatter.rb +1 -1
  296. data/lib/rubygems/user_interaction.rb +15 -21
  297. data/lib/rubygems/util/licenses.rb +65 -35
  298. data/lib/rubygems/util/list.rb +3 -1
  299. data/lib/rubygems/util.rb +2 -4
  300. data/lib/rubygems/validator.rb +5 -3
  301. data/lib/rubygems/version.rb +34 -28
  302. data/lib/rubygems/version_option.rb +2 -5
  303. data/lib/rubygems/yaml_serializer.rb +3 -3
  304. data/lib/rubygems.rb +37 -37
  305. data/rubygems-update.gemspec +4 -4
  306. data/setup.rb +2 -2
  307. metadata +38 -225
  308. data/lib/rubygems/indexer.rb +0 -428
  309. data/lib/rubygems/mock_gem_ui.rb +0 -86
  310. data/test/rubygems/alternate_cert.pem +0 -19
  311. data/test/rubygems/alternate_cert_32.pem +0 -19
  312. data/test/rubygems/alternate_key.pem +0 -27
  313. data/test/rubygems/bad_rake.rb +0 -3
  314. data/test/rubygems/bundler_test_gem.rb +0 -424
  315. data/test/rubygems/ca_cert.pem +0 -77
  316. data/test/rubygems/child_cert.pem +0 -19
  317. data/test/rubygems/child_cert_32.pem +0 -19
  318. data/test/rubygems/child_key.pem +0 -27
  319. data/test/rubygems/client.pem +0 -107
  320. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  321. data/test/rubygems/data/gem-private_key.pem +0 -27
  322. data/test/rubygems/data/gem-public_cert.pem +0 -20
  323. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  324. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  325. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  326. data/test/rubygems/encrypted_private_key.pem +0 -30
  327. data/test/rubygems/expired_cert.pem +0 -19
  328. data/test/rubygems/fake_certlib/openssl.rb +0 -9
  329. data/test/rubygems/foo/discover.rb +0 -1
  330. data/test/rubygems/future_cert.pem +0 -19
  331. data/test/rubygems/future_cert_32.pem +0 -19
  332. data/test/rubygems/good_rake.rb +0 -3
  333. data/test/rubygems/grandchild_cert.pem +0 -19
  334. data/test/rubygems/grandchild_cert_32.pem +0 -19
  335. data/test/rubygems/grandchild_key.pem +0 -27
  336. data/test/rubygems/helper.rb +0 -1649
  337. data/test/rubygems/installer_test_case.rb +0 -248
  338. data/test/rubygems/invalid_client.pem +0 -49
  339. data/test/rubygems/invalid_issuer_cert.pem +0 -20
  340. data/test/rubygems/invalid_issuer_cert_32.pem +0 -20
  341. data/test/rubygems/invalid_key.pem +0 -27
  342. data/test/rubygems/invalid_signer_cert.pem +0 -19
  343. data/test/rubygems/invalid_signer_cert_32.pem +0 -19
  344. data/test/rubygems/invalidchild_cert.pem +0 -19
  345. data/test/rubygems/invalidchild_cert_32.pem +0 -19
  346. data/test/rubygems/invalidchild_key.pem +0 -27
  347. data/test/rubygems/multifactor_auth_utilities.rb +0 -111
  348. data/test/rubygems/package/tar_test_case.rb +0 -175
  349. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  350. data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
  351. data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
  352. data/test/rubygems/plugin/exception/rubygems_plugin.rb +0 -4
  353. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -5
  354. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +0 -4
  355. data/test/rubygems/private3072_key.pem +0 -40
  356. data/test/rubygems/private_ec_key.pem +0 -9
  357. data/test/rubygems/private_key.pem +0 -27
  358. data/test/rubygems/public3072_cert.pem +0 -25
  359. data/test/rubygems/public_cert.pem +0 -20
  360. data/test/rubygems/public_cert_32.pem +0 -19
  361. data/test/rubygems/public_key.pem +0 -9
  362. data/test/rubygems/rubygems/commands/crash_command.rb +0 -5
  363. data/test/rubygems/rubygems_plugin.rb +0 -24
  364. data/test/rubygems/sff/discover.rb +0 -1
  365. data/test/rubygems/simple_gem.rb +0 -68
  366. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -9
  367. data/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec +0 -0
  368. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +0 -14
  369. data/test/rubygems/ssl_cert.pem +0 -80
  370. data/test/rubygems/ssl_key.pem +0 -27
  371. data/test/rubygems/test_bundled_ca.rb +0 -61
  372. data/test/rubygems/test_config.rb +0 -28
  373. data/test/rubygems/test_deprecate.rb +0 -158
  374. data/test/rubygems/test_exit.rb +0 -17
  375. data/test/rubygems/test_gem.rb +0 -1799
  376. data/test/rubygems/test_gem_available_set.rb +0 -130
  377. data/test/rubygems/test_gem_bundler_version_finder.rb +0 -127
  378. data/test/rubygems/test_gem_command.rb +0 -403
  379. data/test/rubygems/test_gem_command_manager.rb +0 -400
  380. data/test/rubygems/test_gem_commands_build_command.rb +0 -739
  381. data/test/rubygems/test_gem_commands_cert_command.rb +0 -866
  382. data/test/rubygems/test_gem_commands_check_command.rb +0 -68
  383. data/test/rubygems/test_gem_commands_cleanup_command.rb +0 -292
  384. data/test/rubygems/test_gem_commands_contents_command.rb +0 -271
  385. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -228
  386. data/test/rubygems/test_gem_commands_environment_command.rb +0 -169
  387. data/test/rubygems/test_gem_commands_exec_command.rb +0 -857
  388. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -258
  389. data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -81
  390. data/test/rubygems/test_gem_commands_help_command.rb +0 -94
  391. data/test/rubygems/test_gem_commands_info_command.rb +0 -70
  392. data/test/rubygems/test_gem_commands_install_command.rb +0 -1573
  393. data/test/rubygems/test_gem_commands_list_command.rb +0 -33
  394. data/test/rubygems/test_gem_commands_lock_command.rb +0 -67
  395. data/test/rubygems/test_gem_commands_mirror.rb +0 -20
  396. data/test/rubygems/test_gem_commands_open_command.rb +0 -101
  397. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -50
  398. data/test/rubygems/test_gem_commands_owner_command.rb +0 -503
  399. data/test/rubygems/test_gem_commands_pristine_command.rb +0 -708
  400. data/test/rubygems/test_gem_commands_push_command.rb +0 -603
  401. data/test/rubygems/test_gem_commands_query_command.rb +0 -858
  402. data/test/rubygems/test_gem_commands_search_command.rb +0 -16
  403. data/test/rubygems/test_gem_commands_server_command.rb +0 -20
  404. data/test/rubygems/test_gem_commands_setup_command.rb +0 -474
  405. data/test/rubygems/test_gem_commands_signin_command.rb +0 -259
  406. data/test/rubygems/test_gem_commands_signout_command.rb +0 -30
  407. data/test/rubygems/test_gem_commands_sources_command.rb +0 -534
  408. data/test/rubygems/test_gem_commands_specification_command.rb +0 -277
  409. data/test/rubygems/test_gem_commands_stale_command.rb +0 -43
  410. data/test/rubygems/test_gem_commands_uninstall_command.rb +0 -542
  411. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -224
  412. data/test/rubygems/test_gem_commands_update_command.rb +0 -836
  413. data/test/rubygems/test_gem_commands_which_command.rb +0 -85
  414. data/test/rubygems/test_gem_commands_yank_command.rb +0 -299
  415. data/test/rubygems/test_gem_config_file.rb +0 -551
  416. data/test/rubygems/test_gem_dependency.rb +0 -398
  417. data/test/rubygems/test_gem_dependency_installer.rb +0 -1190
  418. data/test/rubygems/test_gem_dependency_list.rb +0 -265
  419. data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -27
  420. data/test/rubygems/test_gem_doctor.rb +0 -195
  421. data/test/rubygems/test_gem_ext_builder.rb +0 -337
  422. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +0 -1
  423. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +0 -10
  424. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +0 -249
  425. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +0 -10
  426. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +0 -27
  427. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +0 -3
  428. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +0 -1
  429. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +0 -249
  430. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +0 -10
  431. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +0 -10
  432. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +0 -51
  433. data/test/rubygems/test_gem_ext_cargo_builder.rb +0 -167
  434. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +0 -34
  435. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -60
  436. data/test/rubygems/test_gem_ext_cmake_builder.rb +0 -84
  437. data/test/rubygems/test_gem_ext_configure_builder.rb +0 -80
  438. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -229
  439. data/test/rubygems/test_gem_ext_rake_builder.rb +0 -113
  440. data/test/rubygems/test_gem_gem_runner.rb +0 -119
  441. data/test/rubygems/test_gem_gemcutter_utilities.rb +0 -361
  442. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -60
  443. data/test/rubygems/test_gem_indexer.rb +0 -381
  444. data/test/rubygems/test_gem_install_update_options.rb +0 -208
  445. data/test/rubygems/test_gem_installer.rb +0 -2512
  446. data/test/rubygems/test_gem_local_remote_options.rb +0 -133
  447. data/test/rubygems/test_gem_name_tuple.rb +0 -43
  448. data/test/rubygems/test_gem_package.rb +0 -1306
  449. data/test/rubygems/test_gem_package_old.rb +0 -91
  450. data/test/rubygems/test_gem_package_tar_header.rb +0 -226
  451. data/test/rubygems/test_gem_package_tar_reader.rb +0 -150
  452. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -350
  453. data/test/rubygems/test_gem_package_tar_writer.rb +0 -331
  454. data/test/rubygems/test_gem_package_task.rb +0 -118
  455. data/test/rubygems/test_gem_path_support.rb +0 -139
  456. data/test/rubygems/test_gem_platform.rb +0 -497
  457. data/test/rubygems/test_gem_rdoc.rb +0 -137
  458. data/test/rubygems/test_gem_remote_fetcher.rb +0 -1227
  459. data/test/rubygems/test_gem_request.rb +0 -547
  460. data/test/rubygems/test_gem_request_connection_pools.rb +0 -152
  461. data/test/rubygems/test_gem_request_set.rb +0 -672
  462. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +0 -853
  463. data/test/rubygems/test_gem_request_set_lockfile.rb +0 -469
  464. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +0 -544
  465. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +0 -307
  466. data/test/rubygems/test_gem_requirement.rb +0 -505
  467. data/test/rubygems/test_gem_resolver.rb +0 -859
  468. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -43
  469. data/test/rubygems/test_gem_resolver_api_set.rb +0 -210
  470. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -167
  471. data/test/rubygems/test_gem_resolver_best_set.rb +0 -159
  472. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -44
  473. data/test/rubygems/test_gem_resolver_conflict.rb +0 -82
  474. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -83
  475. data/test/rubygems/test_gem_resolver_git_set.rb +0 -188
  476. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -114
  477. data/test/rubygems/test_gem_resolver_index_set.rb +0 -88
  478. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -93
  479. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -47
  480. data/test/rubygems/test_gem_resolver_installer_set.rb +0 -320
  481. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -44
  482. data/test/rubygems/test_gem_resolver_lock_set.rb +0 -62
  483. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -98
  484. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -19
  485. data/test/rubygems/test_gem_resolver_specification.rb +0 -63
  486. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -82
  487. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -82
  488. data/test/rubygems/test_gem_security.rb +0 -341
  489. data/test/rubygems/test_gem_security_policy.rb +0 -535
  490. data/test/rubygems/test_gem_security_signer.rb +0 -218
  491. data/test/rubygems/test_gem_security_trust_dir.rb +0 -99
  492. data/test/rubygems/test_gem_silent_ui.rb +0 -123
  493. data/test/rubygems/test_gem_source.rb +0 -254
  494. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -37
  495. data/test/rubygems/test_gem_source_git.rb +0 -310
  496. data/test/rubygems/test_gem_source_installed.rb +0 -35
  497. data/test/rubygems/test_gem_source_list.rb +0 -119
  498. data/test/rubygems/test_gem_source_local.rb +0 -107
  499. data/test/rubygems/test_gem_source_lock.rb +0 -113
  500. data/test/rubygems/test_gem_source_specific_file.rb +0 -76
  501. data/test/rubygems/test_gem_source_subpath_problem.rb +0 -50
  502. data/test/rubygems/test_gem_source_vendor.rb +0 -30
  503. data/test/rubygems/test_gem_spec_fetcher.rb +0 -338
  504. data/test/rubygems/test_gem_specification.rb +0 -3856
  505. data/test/rubygems/test_gem_stream_ui.rb +0 -255
  506. data/test/rubygems/test_gem_stub_specification.rb +0 -278
  507. data/test/rubygems/test_gem_text.rb +0 -103
  508. data/test/rubygems/test_gem_uninstaller.rb +0 -675
  509. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -31
  510. data/test/rubygems/test_gem_update_suggestion.rb +0 -209
  511. data/test/rubygems/test_gem_uri.rb +0 -41
  512. data/test/rubygems/test_gem_uri_formatter.rb +0 -27
  513. data/test/rubygems/test_gem_util.rb +0 -91
  514. data/test/rubygems/test_gem_validator.rb +0 -42
  515. data/test/rubygems/test_gem_version.rb +0 -305
  516. data/test/rubygems/test_gem_version_option.rb +0 -165
  517. data/test/rubygems/test_kernel.rb +0 -124
  518. data/test/rubygems/test_project_sanity.rb +0 -49
  519. data/test/rubygems/test_remote_fetch_error.rb +0 -20
  520. data/test/rubygems/test_require.rb +0 -732
  521. data/test/rubygems/test_rubygems.rb +0 -76
  522. data/test/rubygems/test_webauthn_listener.rb +0 -143
  523. data/test/rubygems/test_webauthn_listener_response.rb +0 -93
  524. data/test/rubygems/test_webauthn_poller.rb +0 -124
  525. data/test/rubygems/utilities.rb +0 -436
  526. data/test/rubygems/wrong_key_cert.pem +0 -19
  527. data/test/rubygems/wrong_key_cert_32.pem +0 -19
  528. data/test/test_changelog_generator.rb +0 -17
@@ -238,6 +238,10 @@ All operations involving groups ([`bundle install`](bundle-install.1.html), `Bun
238
238
  `Bundler.require`) behave exactly the same as if any groups not
239
239
  matching the current platform were explicitly excluded.
240
240
 
241
+ The following platform values are deprecated and should be replaced with `windows`:
242
+
243
+ * `mswin`, `mswin64`, `mingw32`, `x64_mingw`
244
+
241
245
  ### FORCE_RUBY_PLATFORM
242
246
 
243
247
  If you always want the pure ruby variant of a gem to be chosen over platform
@@ -2,6 +2,10 @@
2
2
 
3
3
  module Bundler
4
4
  module MatchMetadata
5
+ def matches_current_metadata?
6
+ matches_current_ruby? && matches_current_rubygems?
7
+ end
8
+
5
9
  def matches_current_ruby?
6
10
  @required_ruby_version.satisfied_by?(Gem.ruby_version)
7
11
  end
@@ -12,7 +12,7 @@ module Bundler
12
12
 
13
13
  def self.platforms_match?(gemspec_platform, local_platform)
14
14
  return true if gemspec_platform.nil?
15
- return true if Gem::Platform::RUBY == gemspec_platform
15
+ return true if gemspec_platform == Gem::Platform::RUBY
16
16
  return true if local_platform == gemspec_platform
17
17
  gemspec_platform = Gem::Platform.new(gemspec_platform)
18
18
  return true if gemspec_platform === local_platform
@@ -39,7 +39,7 @@ module Bundler
39
39
  # is present to be compatible with `Definition` and is used by
40
40
  # rubygems source.
41
41
  module Source
42
- attr_reader :uri, :options, :name
42
+ attr_reader :uri, :options, :name, :checksum_store
43
43
  attr_accessor :dependency_names
44
44
 
45
45
  def initialize(opts)
@@ -48,6 +48,7 @@ module Bundler
48
48
  @uri = opts["uri"]
49
49
  @type = opts["type"]
50
50
  @name = opts["name"] || "#{@type} at #{@uri}"
51
+ @checksum_store = Checksum::Store.new
51
52
  end
52
53
 
53
54
  # This is used by the default `spec` method to constructs the
@@ -95,7 +96,7 @@ module Bundler
95
96
  #
96
97
  # Note: Do not override if you don't know what you are doing.
97
98
  def post_install(spec, disable_exts = false)
98
- opts = { :env_shebang => false, :disable_extensions => disable_exts }
99
+ opts = { env_shebang: false, disable_extensions: disable_exts }
99
100
  installer = Bundler::Source::Path::Installer.new(spec, opts)
100
101
  installer.post_install
101
102
  end
@@ -83,7 +83,7 @@ module Bundler
83
83
 
84
84
  Bundler.configure_gem_home_and_path(Plugin.root)
85
85
 
86
- Bundler.settings.temporary(:deployment => false, :frozen => false) do
86
+ Bundler.settings.temporary(deployment: false, frozen: false) do
87
87
  definition = Definition.new(nil, deps, source_list, true)
88
88
 
89
89
  install_definition(definition)
@@ -101,7 +101,7 @@ module Bundler
101
101
  # @param [Pathname] gemfile path
102
102
  # @param [Proc] block that can be evaluated for (inline) Gemfile
103
103
  def gemfile_install(gemfile = nil, &inline)
104
- Bundler.settings.temporary(:frozen => false, :deployment => false) do
104
+ Bundler.settings.temporary(frozen: false, deployment: false) do
105
105
  builder = DSL.new
106
106
  if block_given?
107
107
  builder.instance_eval(&inline)
@@ -307,7 +307,7 @@ module Bundler
307
307
  @hooks_by_event = Hash.new {|h, k| h[k] = [] }
308
308
 
309
309
  load_paths = spec.load_paths
310
- Bundler.rubygems.add_to_load_path(load_paths)
310
+ Gem.add_to_load_path(*load_paths)
311
311
  path = Pathname.new spec.full_gem_path
312
312
 
313
313
  begin
@@ -342,7 +342,7 @@ module Bundler
342
342
  # done to avoid conflicts
343
343
  path = index.plugin_path(name)
344
344
 
345
- Bundler.rubygems.add_to_load_path(index.load_paths(name))
345
+ Gem.add_to_load_path(*index.load_paths(name))
346
346
 
347
347
  load path.join(PLUGIN_FILE_NAME)
348
348
 
@@ -24,7 +24,7 @@ module Bundler
24
24
 
25
25
  name = dep.name
26
26
 
27
- @packages[name] = Package.new(name, dep_platforms, **options.merge(:dependency => dep))
27
+ @packages[name] = Package.new(name, dep_platforms, **options.merge(dependency: dep))
28
28
 
29
29
  dep
30
30
  end.compact
@@ -8,7 +8,7 @@ module Bundler
8
8
  def initialize(terms, cause:, custom_explanation: nil, extended_explanation: nil)
9
9
  @extended_explanation = extended_explanation
10
10
 
11
- super(terms, :cause => cause, :custom_explanation => custom_explanation)
11
+ super(terms, cause: cause, custom_explanation: custom_explanation)
12
12
  end
13
13
  end
14
14
  end
@@ -25,9 +25,8 @@ module Bundler
25
25
 
26
26
  def to_specs(force_ruby_platform)
27
27
  @specs.map do |s|
28
- lazy_spec = LazySpecification.new(name, version, s.platform, source)
28
+ lazy_spec = LazySpecification.from_spec(s)
29
29
  lazy_spec.force_ruby_platform = force_ruby_platform
30
- lazy_spec.dependencies.replace s.dependencies
31
30
  lazy_spec
32
31
  end
33
32
  end
@@ -64,8 +63,6 @@ module Bundler
64
63
  end
65
64
 
66
65
  def metadata_dependencies(spec)
67
- return [] if spec.is_a?(LazySpecification)
68
-
69
66
  [
70
67
  metadata_dependency("Ruby", spec.required_ruby_version),
71
68
  metadata_dependency("RubyGems", spec.required_rubygems_version),
@@ -29,7 +29,7 @@ module Bundler
29
29
 
30
30
  Bundler.ui.info "Resolving dependencies...", true
31
31
 
32
- solve_versions(:root => root, :logger => logger)
32
+ solve_versions(root: root, logger: logger)
33
33
  end
34
34
 
35
35
  def setup_solver
@@ -77,7 +77,7 @@ module Bundler
77
77
  end
78
78
 
79
79
  def solve_versions(root:, logger:)
80
- solver = PubGrub::VersionSolver.new(:source => self, :root => root, :logger => logger)
80
+ solver = PubGrub::VersionSolver.new(source: self, root: root, logger: logger)
81
81
  result = solver.solve
82
82
  result.map {|package, version| version.to_specs(package) }.flatten.uniq
83
83
  rescue PubGrub::SolveFailure => e
@@ -152,7 +152,7 @@ module Bundler
152
152
  requirement_to_range(dependency)
153
153
  end
154
154
 
155
- PubGrub::VersionConstraint.new(package, :range => range)
155
+ PubGrub::VersionConstraint.new(package, range: range)
156
156
  end
157
157
 
158
158
  def versions_for(package, range=VersionRange.any)
@@ -181,7 +181,7 @@ module Bundler
181
181
  extended_explanation = other_specs_matching_message(specs_matching_other_platforms, label) if specs_matching_other_platforms.any?
182
182
  end
183
183
 
184
- Incompatibility.new([unsatisfied_term], :cause => cause, :custom_explanation => custom_explanation, :extended_explanation => extended_explanation)
184
+ Incompatibility.new([unsatisfied_term], cause: cause, custom_explanation: custom_explanation, extended_explanation: extended_explanation)
185
185
  end
186
186
 
187
187
  def debug?
@@ -220,9 +220,9 @@ module Bundler
220
220
  sorted_versions[high]
221
221
  end
222
222
 
223
- range = PubGrub::VersionRange.new(:min => low, :max => high, :include_min => true)
223
+ range = PubGrub::VersionRange.new(min: low, max: high, include_min: true)
224
224
 
225
- self_constraint = PubGrub::VersionConstraint.new(package, :range => range)
225
+ self_constraint = PubGrub::VersionConstraint.new(package, range: range)
226
226
 
227
227
  dep_term = PubGrub::Term.new(dep_constraint, false)
228
228
  self_term = PubGrub::Term.new(self_constraint, true)
@@ -231,7 +231,7 @@ module Bundler
231
231
  "current #{dep_package} version is #{dep_constraint.constraint_string}"
232
232
  end
233
233
 
234
- PubGrub::Incompatibility.new([self_term, dep_term], :cause => :dependency, :custom_explanation => custom_explanation)
234
+ PubGrub::Incompatibility.new([self_term, dep_term], cause: :dependency, custom_explanation: custom_explanation)
235
235
  end
236
236
  end
237
237
 
@@ -266,11 +266,11 @@ module Bundler
266
266
  platform_specs.flatten!
267
267
 
268
268
  ruby_specs = select_best_platform_match(specs, Gem::Platform::RUBY)
269
- groups << Resolver::Candidate.new(version, :specs => ruby_specs) if ruby_specs.any?
269
+ groups << Resolver::Candidate.new(version, specs: ruby_specs) if ruby_specs.any?
270
270
 
271
271
  next groups if platform_specs == ruby_specs || package.force_ruby_platform?
272
272
 
273
- groups << Resolver::Candidate.new(version, :specs => platform_specs)
273
+ groups << Resolver::Candidate.new(version, specs: platform_specs)
274
274
 
275
275
  groups
276
276
  end
@@ -408,19 +408,19 @@ module Bundler
408
408
  when "~>"
409
409
  name = "~> #{ver}"
410
410
  bump = Resolver::Candidate.new(version.bump.to_s + ".A")
411
- PubGrub::VersionRange.new(:name => name, :min => ver, :max => bump, :include_min => true)
411
+ PubGrub::VersionRange.new(name: name, min: ver, max: bump, include_min: true)
412
412
  when ">"
413
- PubGrub::VersionRange.new(:min => platform_ver)
413
+ PubGrub::VersionRange.new(min: platform_ver)
414
414
  when ">="
415
- PubGrub::VersionRange.new(:min => ver, :include_min => true)
415
+ PubGrub::VersionRange.new(min: ver, include_min: true)
416
416
  when "<"
417
- PubGrub::VersionRange.new(:max => ver)
417
+ PubGrub::VersionRange.new(max: ver)
418
418
  when "<="
419
- PubGrub::VersionRange.new(:max => platform_ver, :include_max => true)
419
+ PubGrub::VersionRange.new(max: platform_ver, include_max: true)
420
420
  when "="
421
- PubGrub::VersionRange.new(:min => ver, :max => platform_ver, :include_min => true, :include_max => true)
421
+ PubGrub::VersionRange.new(min: ver, max: platform_ver, include_min: true, include_max: true)
422
422
  when "!="
423
- PubGrub::VersionRange.new(:min => ver, :max => platform_ver, :include_min => true, :include_max => true).invert
423
+ PubGrub::VersionRange.new(min: ver, max: platform_ver, include_min: true, include_max: true).invert
424
424
  else
425
425
  raise "bad version specifier: #{op}"
426
426
  end
@@ -3,22 +3,28 @@
3
3
  module Bundler
4
4
  module RubyDsl
5
5
  def ruby(*ruby_version)
6
- options = ruby_version.last.is_a?(Hash) ? ruby_version.pop : {}
6
+ options = ruby_version.pop if ruby_version.last.is_a?(Hash)
7
7
  ruby_version.flatten!
8
8
 
9
- raise GemfileError, "Please define :engine_version" if options[:engine] && options[:engine_version].nil?
10
- raise GemfileError, "Please define :engine" if options[:engine_version] && options[:engine].nil?
9
+ if options
10
+ patchlevel = options[:patchlevel]
11
+ engine = options[:engine]
12
+ engine_version = options[:engine_version]
11
13
 
12
- if options[:file]
13
- raise GemfileError, "Do not pass version argument when using :file option" unless ruby_version.empty?
14
- ruby_version << normalize_ruby_file(options[:file])
15
- end
14
+ raise GemfileError, "Please define :engine_version" if engine && engine_version.nil?
15
+ raise GemfileError, "Please define :engine" if engine_version && engine.nil?
16
+
17
+ if options[:file]
18
+ raise GemfileError, "Do not pass version argument when using :file option" unless ruby_version.empty?
19
+ ruby_version << normalize_ruby_file(options[:file])
20
+ end
16
21
 
17
- if options[:engine] == "ruby" && options[:engine_version] &&
18
- ruby_version != Array(options[:engine_version])
19
- raise GemfileEvalError, "ruby_version must match the :engine_version for MRI"
22
+ if engine == "ruby" && engine_version && ruby_version != Array(engine_version)
23
+ raise GemfileEvalError, "ruby_version must match the :engine_version for MRI"
24
+ end
20
25
  end
21
- @ruby_version = RubyVersion.new(ruby_version, options[:patchlevel], options[:engine], options[:engine_version])
26
+
27
+ @ruby_version = RubyVersion.new(ruby_version, patchlevel, engine, engine_version)
22
28
  end
23
29
 
24
30
  # Support the various file formats found in .ruby-version files.
@@ -32,8 +38,10 @@ module Bundler
32
38
  # ruby 2.5.1# close comment and extra spaces doesn't confuse
33
39
  #
34
40
  # Intentionally does not support `3.2.1@gemset` since rvm recommends using .ruby-gemset instead
41
+ #
42
+ # Loads the file relative to the dirname of the Gemfile itself.
35
43
  def normalize_ruby_file(filename)
36
- file_content = Bundler.read_file(Bundler.root.join(filename))
44
+ file_content = Bundler.read_file(gemfile.dirname.join(filename))
37
45
  # match "ruby-3.2.2" or "ruby 3.2.2" capturing version string up to the first space or comment
38
46
  if /^ruby(-|\s+)([^\s#]+)/.match(file_content)
39
47
  $2
@@ -49,7 +49,7 @@ module Bundler
49
49
  (\d+\.\d+\.\d+(?:\.\S+)?) # ruby version
50
50
  (?:p(-?\d+))? # optional patchlevel
51
51
  (?:\s\((\S+)\s(.+)\))? # optional engine info
52
- /xo.freeze
52
+ /xo
53
53
 
54
54
  # Returns a RubyVersion from the given string.
55
55
  # @param [String] the version string to match.
@@ -2,6 +2,8 @@
2
2
 
3
3
  require "pathname"
4
4
 
5
+ require "rubygems" unless defined?(Gem)
6
+
5
7
  require "rubygems/specification"
6
8
 
7
9
  # We can't let `Gem::Source` be autoloaded in the `Gem::Specification#source`
@@ -46,7 +48,7 @@ module Gem
46
48
 
47
49
  def full_gem_path
48
50
  if source.respond_to?(:root)
49
- Pathname.new(loaded_from).dirname.expand_path(source.root).to_s.tap {|x| x.untaint if RUBY_VERSION < "2.7" }
51
+ Pathname.new(loaded_from).dirname.expand_path(source.root).to_s
50
52
  else
51
53
  rg_full_gem_path
52
54
  end
@@ -76,7 +78,7 @@ module Gem
76
78
  end
77
79
  end
78
80
 
79
- remove_method :gem_dir if instance_methods(false).include?(:gem_dir)
81
+ remove_method :gem_dir
80
82
  def gem_dir
81
83
  full_gem_path
82
84
  end
@@ -117,17 +119,6 @@ module Gem
117
119
  gemfile
118
120
  end
119
121
 
120
- # Backfill missing YAML require when not defined. Fixed since 3.1.0.pre1.
121
- module YamlBackfiller
122
- def to_yaml(opts = {})
123
- Gem.load_yaml unless defined?(::YAML)
124
-
125
- super(opts)
126
- end
127
- end
128
-
129
- prepend YamlBackfiller
130
-
131
122
  def nondevelopment_dependencies
132
123
  dependencies - development_dependencies
133
124
  end
@@ -188,37 +179,7 @@ module Gem
188
179
  end
189
180
  end
190
181
 
191
- # comparison is done order independently since rubygems 3.2.0.rc.2
192
- unless Gem::Requirement.new("> 1", "< 2") == Gem::Requirement.new("< 2", "> 1")
193
- class Requirement
194
- module OrderIndependentComparison
195
- def ==(other)
196
- return unless Gem::Requirement === other
197
-
198
- if _requirements_sorted? && other._requirements_sorted?
199
- super
200
- else
201
- _with_sorted_requirements == other._with_sorted_requirements
202
- end
203
- end
204
-
205
- protected
206
-
207
- def _requirements_sorted?
208
- return @_requirements_sorted if defined?(@_requirements_sorted)
209
- strings = as_list
210
- @_requirements_sorted = strings == strings.sort
211
- end
212
-
213
- def _with_sorted_requirements
214
- @_with_sorted_requirements ||= _requirements_sorted? ? self : self.class.new(as_list.sort)
215
- end
216
- end
217
-
218
- prepend OrderIndependentComparison
219
- end
220
- end
221
-
182
+ # Requirements using lambda operator differentiate trailing zeros since rubygems 3.2.6
222
183
  if Gem::Requirement.new("~> 2.0").hash == Gem::Requirement.new("~> 2.0.0").hash
223
184
  class Requirement
224
185
  module CorrectHashForLambdaOperator
@@ -340,15 +301,28 @@ module Gem
340
301
  end
341
302
  end
342
303
 
343
- require "rubygems/util"
304
+ require "rubygems/name_tuple"
305
+
306
+ class NameTuple
307
+ # Versions of RubyGems before about 3.5.0 don't to_s the platform.
308
+ unless Gem::NameTuple.new("a", Gem::Version.new("1"), Gem::Platform.new("x86_64-linux")).platform.is_a?(String)
309
+ alias_method :initialize_with_platform, :initialize
344
310
 
345
- Util.singleton_class.module_eval do
346
- if Util.singleton_methods.include?(:glob_files_in_dir) # since 3.0.0.beta.2
347
- remove_method :glob_files_in_dir
311
+ def initialize(name, version, platform=Gem::Platform::RUBY)
312
+ if Gem::Platform === platform
313
+ initialize_with_platform(name, version, platform.to_s)
314
+ else
315
+ initialize_with_platform(name, version, platform)
316
+ end
317
+ end
348
318
  end
349
319
 
350
- def glob_files_in_dir(glob, base_path)
351
- Dir.glob(glob, :base => base_path).map! {|f| File.expand_path(f, base_path) }
320
+ def lock_name
321
+ if platform == Gem::Platform::RUBY
322
+ "#{name} (#{version})"
323
+ else
324
+ "#{name} (#{version}-#{platform})"
325
+ end
352
326
  end
353
327
  end
354
328
  end
@@ -20,7 +20,7 @@ module Bundler
20
20
  strict_rm_rf spec.extension_dir
21
21
 
22
22
  SharedHelpers.filesystem_access(gem_dir, :create) do
23
- FileUtils.mkdir_p gem_dir, :mode => 0o755
23
+ FileUtils.mkdir_p gem_dir, mode: 0o755
24
24
  end
25
25
 
26
26
  extract_files
@@ -46,7 +46,7 @@ module Bundler
46
46
  end
47
47
 
48
48
  def pre_install_checks
49
- super && validate_bundler_checksum(options[:bundler_expected_checksum])
49
+ super
50
50
  rescue Gem::FilePermissionError
51
51
  # Ignore permission checks in RubyGems. Instead, go on, and try to write
52
52
  # for real. We properly handle permission errors when they happen.
@@ -102,6 +102,10 @@ module Bundler
102
102
  end
103
103
  end
104
104
 
105
+ def gem_checksum
106
+ Checksum.from_gem_package(@package)
107
+ end
108
+
105
109
  private
106
110
 
107
111
  def prepare_extension_build(extension_dir)
@@ -129,59 +133,5 @@ module Bundler
129
133
  raise DirectoryRemovalError.new(e, "Could not delete previous installation of `#{dir}`")
130
134
  end
131
135
  end
132
-
133
- def validate_bundler_checksum(checksum)
134
- return true if Bundler.settings[:disable_checksum_validation]
135
- return true unless checksum
136
- return true unless source = @package.instance_variable_get(:@gem)
137
- return true unless source.respond_to?(:with_read_io)
138
- digest = source.with_read_io do |io|
139
- digest = SharedHelpers.digest(:SHA256).new
140
- digest << io.read(16_384) until io.eof?
141
- io.rewind
142
- send(checksum_type(checksum), digest)
143
- end
144
- unless digest == checksum
145
- raise SecurityError, <<-MESSAGE
146
- Bundler cannot continue installing #{spec.name} (#{spec.version}).
147
- The checksum for the downloaded `#{spec.full_name}.gem` does not match \
148
- the checksum given by the server. This means the contents of the downloaded \
149
- gem is different from what was uploaded to the server, and could be a potential security issue.
150
-
151
- To resolve this issue:
152
- 1. delete the downloaded gem located at: `#{spec.gem_dir}/#{spec.full_name}.gem`
153
- 2. run `bundle install`
154
-
155
- If you wish to continue installing the downloaded gem, and are certain it does not pose a \
156
- security issue despite the mismatching checksum, do the following:
157
- 1. run `bundle config set --local disable_checksum_validation true` to turn off checksum verification
158
- 2. run `bundle install`
159
-
160
- (More info: The expected SHA256 checksum was #{checksum.inspect}, but the \
161
- checksum for the downloaded gem was #{digest.inspect}.)
162
- MESSAGE
163
- end
164
- true
165
- end
166
-
167
- def checksum_type(checksum)
168
- case checksum.length
169
- when 64 then :hexdigest!
170
- when 44 then :base64digest!
171
- else raise InstallError, "The given checksum for #{spec.full_name} (#{checksum.inspect}) is not a valid SHA256 hexdigest nor base64digest"
172
- end
173
- end
174
-
175
- def hexdigest!(digest)
176
- digest.hexdigest!
177
- end
178
-
179
- def base64digest!(digest)
180
- if digest.respond_to?(:base64digest!)
181
- digest.base64digest!
182
- else
183
- [digest.digest!].pack("m0")
184
- end
185
- end
186
136
  end
187
137
  end