rubygems-update 3.4.22 → 3.5.1

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 (540) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +105 -2
  3. data/Manifest.txt +46 -221
  4. data/README.md +1 -3
  5. data/bundler/CHANGELOG.md +63 -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 +254 -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 +46 -30
  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/.document +1 -0
  134. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  135. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +53 -6
  136. data/bundler/lib/bundler/vendor/fileutils/.document +1 -0
  137. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +8 -20
  138. data/bundler/lib/bundler/vendor/net-http-persistent/.document +1 -0
  139. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +3 -3
  140. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +2 -2
  141. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +1 -1
  142. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +34 -34
  143. data/bundler/lib/bundler/vendor/pub_grub/.document +1 -0
  144. data/bundler/lib/bundler/vendor/thor/.document +1 -0
  145. data/bundler/lib/bundler/vendor/tsort/.document +1 -0
  146. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +3 -0
  147. data/bundler/lib/bundler/vendor/uri/.document +1 -0
  148. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +256 -132
  149. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1 -0
  150. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +95 -31
  151. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  152. data/bundler/lib/bundler/vendored_net_http.rb +8 -0
  153. data/bundler/lib/bundler/vendored_persistent.rb +0 -4
  154. data/bundler/lib/bundler/vendored_timeout.rb +8 -0
  155. data/bundler/lib/bundler/version.rb +1 -1
  156. data/bundler/lib/bundler/vlad.rb +1 -1
  157. data/bundler/lib/bundler/yaml_serializer.rb +3 -3
  158. data/bundler/lib/bundler.rb +41 -32
  159. data/lib/rubygems/available_set.rb +4 -4
  160. data/lib/rubygems/basic_specification.rb +35 -37
  161. data/lib/rubygems/bundler_version_finder.rb +4 -4
  162. data/lib/rubygems/ci_detector.rb +75 -0
  163. data/lib/rubygems/command.rb +13 -15
  164. data/lib/rubygems/command_manager.rb +5 -4
  165. data/lib/rubygems/commands/build_command.rb +2 -2
  166. data/lib/rubygems/commands/cert_command.rb +1 -2
  167. data/lib/rubygems/commands/check_command.rb +4 -4
  168. data/lib/rubygems/commands/cleanup_command.rb +12 -14
  169. data/lib/rubygems/commands/contents_command.rb +4 -4
  170. data/lib/rubygems/commands/dependency_command.rb +4 -5
  171. data/lib/rubygems/commands/environment_command.rb +1 -3
  172. data/lib/rubygems/commands/exec_command.rb +1 -1
  173. data/lib/rubygems/commands/fetch_command.rb +2 -2
  174. data/lib/rubygems/commands/generate_index_command.rb +39 -74
  175. data/lib/rubygems/commands/help_command.rb +3 -3
  176. data/lib/rubygems/commands/info_command.rb +2 -2
  177. data/lib/rubygems/commands/install_command.rb +8 -16
  178. data/lib/rubygems/commands/list_command.rb +2 -2
  179. data/lib/rubygems/commands/lock_command.rb +1 -1
  180. data/lib/rubygems/commands/open_command.rb +1 -1
  181. data/lib/rubygems/commands/owner_command.rb +1 -1
  182. data/lib/rubygems/commands/pristine_command.rb +13 -15
  183. data/lib/rubygems/commands/push_command.rb +2 -2
  184. data/lib/rubygems/commands/query_command.rb +4 -5
  185. data/lib/rubygems/commands/rdoc_command.rb +2 -2
  186. data/lib/rubygems/commands/search_command.rb +2 -2
  187. data/lib/rubygems/commands/setup_command.rb +31 -34
  188. data/lib/rubygems/commands/sources_command.rb +12 -12
  189. data/lib/rubygems/commands/specification_command.rb +10 -10
  190. data/lib/rubygems/commands/stale_command.rb +1 -1
  191. data/lib/rubygems/commands/uninstall_command.rb +9 -10
  192. data/lib/rubygems/commands/unpack_command.rb +4 -4
  193. data/lib/rubygems/commands/update_command.rb +10 -12
  194. data/lib/rubygems/commands/which_command.rb +1 -1
  195. data/lib/rubygems/commands/yank_command.rb +1 -1
  196. data/lib/rubygems/compatibility.rb +5 -6
  197. data/lib/rubygems/config_file.rb +4 -4
  198. data/lib/rubygems/core_ext/kernel_gem.rb +0 -2
  199. data/lib/rubygems/core_ext/kernel_require.rb +19 -48
  200. data/lib/rubygems/core_ext/kernel_warn.rb +1 -1
  201. data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
  202. data/lib/rubygems/defaults.rb +15 -3
  203. data/lib/rubygems/dependency.rb +12 -14
  204. data/lib/rubygems/dependency_installer.rb +29 -30
  205. data/lib/rubygems/dependency_list.rb +1 -1
  206. data/lib/rubygems/deprecate.rb +16 -15
  207. data/lib/rubygems/doctor.rb +5 -5
  208. data/lib/rubygems/errors.rb +2 -6
  209. data/lib/rubygems/exceptions.rb +2 -1
  210. data/lib/rubygems/ext/builder.rb +15 -10
  211. data/lib/rubygems/ext/cargo_builder.rb +5 -5
  212. data/lib/rubygems/ext/ext_conf_builder.rb +1 -3
  213. data/lib/rubygems/gem_runner.rb +4 -4
  214. data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +3 -3
  215. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -3
  216. data/lib/rubygems/gemcutter_utilities.rb +18 -19
  217. data/lib/rubygems/install_update_options.rb +18 -19
  218. data/lib/rubygems/installer.rb +59 -33
  219. data/lib/rubygems/installer_uninstaller_utils.rb +0 -2
  220. data/lib/rubygems/local_remote_options.rb +7 -10
  221. data/lib/rubygems/name_tuple.rb +7 -9
  222. data/lib/rubygems/net/http.rb +3 -0
  223. data/lib/rubygems/net-http/.document +1 -0
  224. data/lib/rubygems/net-http/LICENSE.txt +22 -0
  225. data/lib/rubygems/net-http/lib/net/http/backward.rb +40 -0
  226. data/lib/rubygems/net-http/lib/net/http/exceptions.rb +34 -0
  227. data/lib/rubygems/net-http/lib/net/http/generic_request.rb +414 -0
  228. data/lib/rubygems/net-http/lib/net/http/header.rb +981 -0
  229. data/lib/rubygems/net-http/lib/net/http/proxy_delta.rb +17 -0
  230. data/lib/rubygems/net-http/lib/net/http/request.rb +88 -0
  231. data/lib/rubygems/net-http/lib/net/http/requests.rb +425 -0
  232. data/lib/rubygems/net-http/lib/net/http/response.rb +738 -0
  233. data/lib/rubygems/net-http/lib/net/http/responses.rb +1174 -0
  234. data/lib/rubygems/net-http/lib/net/http/status.rb +84 -0
  235. data/lib/rubygems/net-http/lib/net/http.rb +2496 -0
  236. data/lib/rubygems/net-http/lib/net/https.rb +23 -0
  237. data/lib/rubygems/net-protocol/.document +1 -0
  238. data/lib/rubygems/net-protocol/LICENSE.txt +22 -0
  239. data/lib/rubygems/net-protocol/lib/net/protocol.rb +544 -0
  240. data/lib/rubygems/optparse/lib/optparse.rb +39 -17
  241. data/lib/rubygems/package/old.rb +2 -2
  242. data/lib/rubygems/package/tar_header.rb +45 -39
  243. data/lib/rubygems/package/tar_reader/entry.rb +5 -4
  244. data/lib/rubygems/package/tar_reader.rb +5 -3
  245. data/lib/rubygems/package/tar_writer.rb +19 -17
  246. data/lib/rubygems/package.rb +27 -26
  247. data/lib/rubygems/package_task.rb +2 -2
  248. data/lib/rubygems/path_support.rb +9 -10
  249. data/lib/rubygems/platform.rb +60 -45
  250. data/lib/rubygems/query_utils.rb +7 -9
  251. data/lib/rubygems/remote_fetcher.rb +15 -15
  252. data/lib/rubygems/request/connection_pools.rb +3 -3
  253. data/lib/rubygems/request.rb +20 -17
  254. data/lib/rubygems/request_set/gem_dependency_api.rb +119 -122
  255. data/lib/rubygems/request_set/lockfile/parser.rb +9 -9
  256. data/lib/rubygems/request_set/lockfile/tokenizer.rb +20 -12
  257. data/lib/rubygems/request_set/lockfile.rb +6 -11
  258. data/lib/rubygems/request_set.rb +5 -5
  259. data/lib/rubygems/requirement.rb +7 -7
  260. data/lib/rubygems/resolv/.document +1 -0
  261. data/lib/rubygems/resolv/LICENSE.txt +22 -0
  262. data/lib/rubygems/resolv/lib/resolv.rb +3387 -0
  263. data/lib/rubygems/resolver/activation_request.rb +1 -3
  264. data/lib/rubygems/resolver/api_set/gem_parser.rb +7 -3
  265. data/lib/rubygems/resolver/best_set.rb +1 -1
  266. data/lib/rubygems/resolver/composed_set.rb +1 -1
  267. data/lib/rubygems/resolver/conflict.rb +4 -12
  268. data/lib/rubygems/resolver/index_set.rb +4 -4
  269. data/lib/rubygems/resolver/index_specification.rb +2 -2
  270. data/lib/rubygems/resolver/installer_set.rb +5 -6
  271. data/lib/rubygems/resolver/lock_set.rb +1 -1
  272. data/lib/rubygems/resolver/molinillo/.document +1 -0
  273. data/lib/rubygems/resolver.rb +3 -10
  274. data/lib/rubygems/s3_uri_signer.rb +6 -6
  275. data/lib/rubygems/safe_marshal/elements.rb +138 -0
  276. data/lib/rubygems/safe_marshal/reader.rb +306 -0
  277. data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
  278. data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +385 -0
  279. data/lib/rubygems/safe_marshal/visitors/visitor.rb +74 -0
  280. data/lib/rubygems/safe_marshal.rb +74 -0
  281. data/lib/rubygems/safe_yaml.rb +5 -28
  282. data/lib/rubygems/security/policies.rb +36 -38
  283. data/lib/rubygems/security/policy.rb +7 -11
  284. data/lib/rubygems/security/signer.rb +1 -1
  285. data/lib/rubygems/security/trust_dir.rb +3 -3
  286. data/lib/rubygems/security.rb +8 -22
  287. data/lib/rubygems/source/git.rb +1 -3
  288. data/lib/rubygems/source/installed.rb +0 -2
  289. data/lib/rubygems/source/local.rb +5 -8
  290. data/lib/rubygems/source/lock.rb +1 -3
  291. data/lib/rubygems/source/specific_file.rb +0 -1
  292. data/lib/rubygems/source/vendor.rb +0 -2
  293. data/lib/rubygems/source.rb +12 -12
  294. data/lib/rubygems/source_list.rb +4 -4
  295. data/lib/rubygems/spec_fetcher.rb +29 -29
  296. data/lib/rubygems/specification.rb +125 -138
  297. data/lib/rubygems/specification_policy.rb +55 -25
  298. data/lib/rubygems/stub_specification.rb +4 -5
  299. data/lib/rubygems/text.rb +1 -2
  300. data/lib/rubygems/timeout/.document +1 -0
  301. data/lib/rubygems/timeout/LICENSE.txt +22 -0
  302. data/lib/rubygems/timeout/lib/timeout.rb +199 -0
  303. data/lib/rubygems/timeout.rb +3 -0
  304. data/lib/rubygems/tsort/lib/tsort.rb +3 -0
  305. data/lib/rubygems/uninstaller.rb +7 -9
  306. data/lib/rubygems/update_suggestion.rb +5 -18
  307. data/lib/rubygems/uri_formatter.rb +1 -1
  308. data/lib/rubygems/user_interaction.rb +15 -21
  309. data/lib/rubygems/util/licenses.rb +65 -35
  310. data/lib/rubygems/util/list.rb +3 -1
  311. data/lib/rubygems/util.rb +2 -4
  312. data/lib/rubygems/validator.rb +5 -3
  313. data/lib/rubygems/version.rb +34 -28
  314. data/lib/rubygems/version_option.rb +2 -5
  315. data/lib/rubygems/yaml_serializer.rb +3 -3
  316. data/lib/rubygems.rb +37 -37
  317. data/rubygems-update.gemspec +4 -4
  318. data/setup.rb +2 -2
  319. metadata +50 -225
  320. data/lib/rubygems/indexer.rb +0 -428
  321. data/lib/rubygems/mock_gem_ui.rb +0 -86
  322. data/test/rubygems/alternate_cert.pem +0 -19
  323. data/test/rubygems/alternate_cert_32.pem +0 -19
  324. data/test/rubygems/alternate_key.pem +0 -27
  325. data/test/rubygems/bad_rake.rb +0 -3
  326. data/test/rubygems/bundler_test_gem.rb +0 -424
  327. data/test/rubygems/ca_cert.pem +0 -77
  328. data/test/rubygems/child_cert.pem +0 -19
  329. data/test/rubygems/child_cert_32.pem +0 -19
  330. data/test/rubygems/child_key.pem +0 -27
  331. data/test/rubygems/client.pem +0 -107
  332. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  333. data/test/rubygems/data/gem-private_key.pem +0 -27
  334. data/test/rubygems/data/gem-public_cert.pem +0 -20
  335. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  336. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  337. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  338. data/test/rubygems/encrypted_private_key.pem +0 -30
  339. data/test/rubygems/expired_cert.pem +0 -19
  340. data/test/rubygems/fake_certlib/openssl.rb +0 -9
  341. data/test/rubygems/foo/discover.rb +0 -1
  342. data/test/rubygems/future_cert.pem +0 -19
  343. data/test/rubygems/future_cert_32.pem +0 -19
  344. data/test/rubygems/good_rake.rb +0 -3
  345. data/test/rubygems/grandchild_cert.pem +0 -19
  346. data/test/rubygems/grandchild_cert_32.pem +0 -19
  347. data/test/rubygems/grandchild_key.pem +0 -27
  348. data/test/rubygems/helper.rb +0 -1649
  349. data/test/rubygems/installer_test_case.rb +0 -248
  350. data/test/rubygems/invalid_client.pem +0 -49
  351. data/test/rubygems/invalid_issuer_cert.pem +0 -20
  352. data/test/rubygems/invalid_issuer_cert_32.pem +0 -20
  353. data/test/rubygems/invalid_key.pem +0 -27
  354. data/test/rubygems/invalid_signer_cert.pem +0 -19
  355. data/test/rubygems/invalid_signer_cert_32.pem +0 -19
  356. data/test/rubygems/invalidchild_cert.pem +0 -19
  357. data/test/rubygems/invalidchild_cert_32.pem +0 -19
  358. data/test/rubygems/invalidchild_key.pem +0 -27
  359. data/test/rubygems/multifactor_auth_utilities.rb +0 -111
  360. data/test/rubygems/package/tar_test_case.rb +0 -175
  361. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  362. data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
  363. data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
  364. data/test/rubygems/plugin/exception/rubygems_plugin.rb +0 -4
  365. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -5
  366. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +0 -4
  367. data/test/rubygems/private3072_key.pem +0 -40
  368. data/test/rubygems/private_ec_key.pem +0 -9
  369. data/test/rubygems/private_key.pem +0 -27
  370. data/test/rubygems/public3072_cert.pem +0 -25
  371. data/test/rubygems/public_cert.pem +0 -20
  372. data/test/rubygems/public_cert_32.pem +0 -19
  373. data/test/rubygems/public_key.pem +0 -9
  374. data/test/rubygems/rubygems/commands/crash_command.rb +0 -5
  375. data/test/rubygems/rubygems_plugin.rb +0 -24
  376. data/test/rubygems/sff/discover.rb +0 -1
  377. data/test/rubygems/simple_gem.rb +0 -68
  378. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -9
  379. data/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec +0 -0
  380. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +0 -14
  381. data/test/rubygems/ssl_cert.pem +0 -80
  382. data/test/rubygems/ssl_key.pem +0 -27
  383. data/test/rubygems/test_bundled_ca.rb +0 -61
  384. data/test/rubygems/test_config.rb +0 -28
  385. data/test/rubygems/test_deprecate.rb +0 -158
  386. data/test/rubygems/test_exit.rb +0 -17
  387. data/test/rubygems/test_gem.rb +0 -1799
  388. data/test/rubygems/test_gem_available_set.rb +0 -130
  389. data/test/rubygems/test_gem_bundler_version_finder.rb +0 -127
  390. data/test/rubygems/test_gem_command.rb +0 -403
  391. data/test/rubygems/test_gem_command_manager.rb +0 -400
  392. data/test/rubygems/test_gem_commands_build_command.rb +0 -739
  393. data/test/rubygems/test_gem_commands_cert_command.rb +0 -866
  394. data/test/rubygems/test_gem_commands_check_command.rb +0 -68
  395. data/test/rubygems/test_gem_commands_cleanup_command.rb +0 -292
  396. data/test/rubygems/test_gem_commands_contents_command.rb +0 -271
  397. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -228
  398. data/test/rubygems/test_gem_commands_environment_command.rb +0 -169
  399. data/test/rubygems/test_gem_commands_exec_command.rb +0 -857
  400. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -258
  401. data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -81
  402. data/test/rubygems/test_gem_commands_help_command.rb +0 -94
  403. data/test/rubygems/test_gem_commands_info_command.rb +0 -70
  404. data/test/rubygems/test_gem_commands_install_command.rb +0 -1573
  405. data/test/rubygems/test_gem_commands_list_command.rb +0 -33
  406. data/test/rubygems/test_gem_commands_lock_command.rb +0 -67
  407. data/test/rubygems/test_gem_commands_mirror.rb +0 -20
  408. data/test/rubygems/test_gem_commands_open_command.rb +0 -101
  409. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -50
  410. data/test/rubygems/test_gem_commands_owner_command.rb +0 -503
  411. data/test/rubygems/test_gem_commands_pristine_command.rb +0 -708
  412. data/test/rubygems/test_gem_commands_push_command.rb +0 -603
  413. data/test/rubygems/test_gem_commands_query_command.rb +0 -858
  414. data/test/rubygems/test_gem_commands_search_command.rb +0 -16
  415. data/test/rubygems/test_gem_commands_server_command.rb +0 -20
  416. data/test/rubygems/test_gem_commands_setup_command.rb +0 -474
  417. data/test/rubygems/test_gem_commands_signin_command.rb +0 -259
  418. data/test/rubygems/test_gem_commands_signout_command.rb +0 -30
  419. data/test/rubygems/test_gem_commands_sources_command.rb +0 -534
  420. data/test/rubygems/test_gem_commands_specification_command.rb +0 -277
  421. data/test/rubygems/test_gem_commands_stale_command.rb +0 -43
  422. data/test/rubygems/test_gem_commands_uninstall_command.rb +0 -542
  423. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -224
  424. data/test/rubygems/test_gem_commands_update_command.rb +0 -836
  425. data/test/rubygems/test_gem_commands_which_command.rb +0 -85
  426. data/test/rubygems/test_gem_commands_yank_command.rb +0 -299
  427. data/test/rubygems/test_gem_config_file.rb +0 -551
  428. data/test/rubygems/test_gem_dependency.rb +0 -398
  429. data/test/rubygems/test_gem_dependency_installer.rb +0 -1190
  430. data/test/rubygems/test_gem_dependency_list.rb +0 -265
  431. data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -27
  432. data/test/rubygems/test_gem_doctor.rb +0 -195
  433. data/test/rubygems/test_gem_ext_builder.rb +0 -337
  434. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +0 -1
  435. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +0 -10
  436. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +0 -249
  437. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +0 -10
  438. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +0 -27
  439. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +0 -3
  440. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +0 -1
  441. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +0 -249
  442. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +0 -10
  443. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +0 -10
  444. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +0 -51
  445. data/test/rubygems/test_gem_ext_cargo_builder.rb +0 -167
  446. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +0 -34
  447. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -60
  448. data/test/rubygems/test_gem_ext_cmake_builder.rb +0 -84
  449. data/test/rubygems/test_gem_ext_configure_builder.rb +0 -80
  450. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -229
  451. data/test/rubygems/test_gem_ext_rake_builder.rb +0 -113
  452. data/test/rubygems/test_gem_gem_runner.rb +0 -119
  453. data/test/rubygems/test_gem_gemcutter_utilities.rb +0 -361
  454. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -60
  455. data/test/rubygems/test_gem_indexer.rb +0 -381
  456. data/test/rubygems/test_gem_install_update_options.rb +0 -208
  457. data/test/rubygems/test_gem_installer.rb +0 -2512
  458. data/test/rubygems/test_gem_local_remote_options.rb +0 -133
  459. data/test/rubygems/test_gem_name_tuple.rb +0 -43
  460. data/test/rubygems/test_gem_package.rb +0 -1306
  461. data/test/rubygems/test_gem_package_old.rb +0 -91
  462. data/test/rubygems/test_gem_package_tar_header.rb +0 -226
  463. data/test/rubygems/test_gem_package_tar_reader.rb +0 -150
  464. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -350
  465. data/test/rubygems/test_gem_package_tar_writer.rb +0 -331
  466. data/test/rubygems/test_gem_package_task.rb +0 -118
  467. data/test/rubygems/test_gem_path_support.rb +0 -139
  468. data/test/rubygems/test_gem_platform.rb +0 -497
  469. data/test/rubygems/test_gem_rdoc.rb +0 -137
  470. data/test/rubygems/test_gem_remote_fetcher.rb +0 -1227
  471. data/test/rubygems/test_gem_request.rb +0 -547
  472. data/test/rubygems/test_gem_request_connection_pools.rb +0 -152
  473. data/test/rubygems/test_gem_request_set.rb +0 -672
  474. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +0 -853
  475. data/test/rubygems/test_gem_request_set_lockfile.rb +0 -469
  476. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +0 -544
  477. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +0 -307
  478. data/test/rubygems/test_gem_requirement.rb +0 -505
  479. data/test/rubygems/test_gem_resolver.rb +0 -859
  480. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -43
  481. data/test/rubygems/test_gem_resolver_api_set.rb +0 -210
  482. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -167
  483. data/test/rubygems/test_gem_resolver_best_set.rb +0 -159
  484. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -44
  485. data/test/rubygems/test_gem_resolver_conflict.rb +0 -82
  486. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -83
  487. data/test/rubygems/test_gem_resolver_git_set.rb +0 -188
  488. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -114
  489. data/test/rubygems/test_gem_resolver_index_set.rb +0 -88
  490. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -93
  491. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -47
  492. data/test/rubygems/test_gem_resolver_installer_set.rb +0 -320
  493. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -44
  494. data/test/rubygems/test_gem_resolver_lock_set.rb +0 -62
  495. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -98
  496. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -19
  497. data/test/rubygems/test_gem_resolver_specification.rb +0 -63
  498. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -82
  499. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -82
  500. data/test/rubygems/test_gem_security.rb +0 -341
  501. data/test/rubygems/test_gem_security_policy.rb +0 -535
  502. data/test/rubygems/test_gem_security_signer.rb +0 -218
  503. data/test/rubygems/test_gem_security_trust_dir.rb +0 -99
  504. data/test/rubygems/test_gem_silent_ui.rb +0 -123
  505. data/test/rubygems/test_gem_source.rb +0 -254
  506. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -37
  507. data/test/rubygems/test_gem_source_git.rb +0 -310
  508. data/test/rubygems/test_gem_source_installed.rb +0 -35
  509. data/test/rubygems/test_gem_source_list.rb +0 -119
  510. data/test/rubygems/test_gem_source_local.rb +0 -107
  511. data/test/rubygems/test_gem_source_lock.rb +0 -113
  512. data/test/rubygems/test_gem_source_specific_file.rb +0 -76
  513. data/test/rubygems/test_gem_source_subpath_problem.rb +0 -50
  514. data/test/rubygems/test_gem_source_vendor.rb +0 -30
  515. data/test/rubygems/test_gem_spec_fetcher.rb +0 -338
  516. data/test/rubygems/test_gem_specification.rb +0 -3856
  517. data/test/rubygems/test_gem_stream_ui.rb +0 -255
  518. data/test/rubygems/test_gem_stub_specification.rb +0 -278
  519. data/test/rubygems/test_gem_text.rb +0 -103
  520. data/test/rubygems/test_gem_uninstaller.rb +0 -675
  521. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -31
  522. data/test/rubygems/test_gem_update_suggestion.rb +0 -209
  523. data/test/rubygems/test_gem_uri.rb +0 -41
  524. data/test/rubygems/test_gem_uri_formatter.rb +0 -27
  525. data/test/rubygems/test_gem_util.rb +0 -91
  526. data/test/rubygems/test_gem_validator.rb +0 -42
  527. data/test/rubygems/test_gem_version.rb +0 -305
  528. data/test/rubygems/test_gem_version_option.rb +0 -165
  529. data/test/rubygems/test_kernel.rb +0 -124
  530. data/test/rubygems/test_project_sanity.rb +0 -49
  531. data/test/rubygems/test_remote_fetch_error.rb +0 -20
  532. data/test/rubygems/test_require.rb +0 -732
  533. data/test/rubygems/test_rubygems.rb +0 -76
  534. data/test/rubygems/test_webauthn_listener.rb +0 -143
  535. data/test/rubygems/test_webauthn_listener_response.rb +0 -93
  536. data/test/rubygems/test_webauthn_poller.rb +0 -124
  537. data/test/rubygems/utilities.rb +0 -436
  538. data/test/rubygems/wrong_key_cert.pem +0 -19
  539. data/test/rubygems/wrong_key_cert_32.pem +0 -19
  540. data/test/test_changelog_generator.rb +0 -17
@@ -4,17 +4,12 @@ require "rubygems" unless defined?(Gem)
4
4
 
5
5
  module Bundler
6
6
  class RubygemsIntegration
7
- if defined?(Gem::Ext::Builder::CHDIR_MONITOR)
8
- EXT_LOCK = Gem::Ext::Builder::CHDIR_MONITOR
9
- else
10
- require "monitor"
7
+ require "monitor"
11
8
 
12
- EXT_LOCK = Monitor.new
13
- end
9
+ EXT_LOCK = Monitor.new
14
10
 
15
11
  def initialize
16
12
  @replaced_methods = {}
17
- backport_ext_builder_monitor
18
13
  end
19
14
 
20
15
  def version
@@ -43,18 +38,6 @@ module Bundler
43
38
  Gem.loaded_specs[name]
44
39
  end
45
40
 
46
- def add_to_load_path(paths)
47
- return Gem.add_to_load_path(*paths) if Gem.respond_to?(:add_to_load_path)
48
-
49
- if insert_index = Gem.load_path_insert_index
50
- # Gem directories must come after -I and ENV['RUBYLIB']
51
- $LOAD_PATH.insert(insert_index, *paths)
52
- else
53
- # We are probably testing in core, -I and RUBYLIB don't apply
54
- $LOAD_PATH.unshift(*paths)
55
- end
56
- end
57
-
58
41
  def mark_loaded(spec)
59
42
  if spec.respond_to?(:activated=)
60
43
  current = Gem.loaded_specs[spec.name]
@@ -91,9 +74,9 @@ module Bundler
91
74
  def spec_matches_for_glob(spec, glob)
92
75
  return spec.matches_for_glob(glob) if spec.respond_to?(:matches_for_glob)
93
76
 
94
- spec.load_paths.map do |lp|
77
+ spec.load_paths.flat_map do |lp|
95
78
  Dir["#{lp}/#{glob}#{suffix_pattern}"]
96
- end.flatten(1)
79
+ end
97
80
  end
98
81
 
99
82
  def stub_set_spec(stub, spec)
@@ -116,16 +99,6 @@ module Bundler
116
99
  Gem::Util.inflate(obj)
117
100
  end
118
101
 
119
- def correct_for_windows_path(path)
120
- if Gem::Util.respond_to?(:correct_for_windows_path)
121
- Gem::Util.correct_for_windows_path(path)
122
- elsif path[0].chr == "/" && path[1].chr =~ /[a-z]/i && path[2].chr == ":"
123
- path[1..-1]
124
- else
125
- path
126
- end
127
- end
128
-
129
102
  def gem_dir
130
103
  Gem.dir
131
104
  end
@@ -161,7 +134,7 @@ module Bundler
161
134
  def spec_cache_dirs
162
135
  @spec_cache_dirs ||= begin
163
136
  dirs = gem_path.map {|dir| File.join(dir, "specifications") }
164
- dirs << Gem.spec_cache_dir if Gem.respond_to?(:spec_cache_dir) # Not in RubyGems 2.0.3 or earlier
137
+ dirs << Gem.spec_cache_dir
165
138
  dirs.uniq.select {|dir| File.directory? dir }
166
139
  end
167
140
  end
@@ -183,18 +156,6 @@ module Bundler
183
156
  loaded_gem_paths.flatten
184
157
  end
185
158
 
186
- def load_plugins
187
- Gem.load_plugins if Gem.respond_to?(:load_plugins)
188
- end
189
-
190
- def load_plugin_files(files)
191
- Gem.load_plugin_files(files) if Gem.respond_to?(:load_plugin_files)
192
- end
193
-
194
- def load_env_plugins
195
- Gem.load_env_plugins if Gem.respond_to?(:load_env_plugins)
196
- end
197
-
198
159
  def ui=(obj)
199
160
  Gem::DefaultUserInteraction.ui = obj
200
161
  end
@@ -230,8 +191,7 @@ module Bundler
230
191
  if Gem.respond_to?(:discover_gems_on_require=)
231
192
  Gem.discover_gems_on_require = false
232
193
  else
233
- kernel = (class << ::Kernel; self; end)
234
- [kernel, ::Kernel].each do |k|
194
+ [::Kernel.singleton_class, ::Kernel].each do |k|
235
195
  if k.private_method_defined?(:gem_original_require)
236
196
  redefine_method(k, :require, k.instance_method(:gem_original_require))
237
197
  end
@@ -240,12 +200,9 @@ module Bundler
240
200
  end
241
201
 
242
202
  def replace_gem(specs, specs_by_name)
243
- reverse_rubygems_kernel_mixin
244
-
245
203
  executables = nil
246
204
 
247
- kernel = (class << ::Kernel; self; end)
248
- [kernel, ::Kernel].each do |kernel_class|
205
+ [::Kernel.singleton_class, ::Kernel].each do |kernel_class|
249
206
  redefine_method(kernel_class, :gem) do |dep, *reqs|
250
207
  if executables&.include?(File.basename(caller.first.split(":").first))
251
208
  break
@@ -358,6 +315,14 @@ module Bundler
358
315
  def replace_entrypoints(specs)
359
316
  specs_by_name = add_default_gems_to(specs)
360
317
 
318
+ reverse_rubygems_kernel_mixin
319
+ begin
320
+ # bundled_gems only provide with Ruby 3.3 or later
321
+ require "bundled_gems"
322
+ rescue LoadError
323
+ else
324
+ Gem::BUNDLED_GEMS.replace_require(specs) if Gem::BUNDLED_GEMS.respond_to?(:replace_require)
325
+ end
361
326
  replace_gem(specs, specs_by_name)
362
327
  stub_rubygems(specs)
363
328
  replace_bin_path(specs_by_name)
@@ -447,30 +412,28 @@ module Bundler
447
412
  Gem::Specification.all = specs
448
413
  end
449
414
 
450
- def fetch_specs(remote, name)
415
+ def fetch_specs(remote, name, fetcher)
451
416
  require "rubygems/remote_fetcher"
452
417
  path = remote.uri.to_s + "#{name}.#{Gem.marshal_version}.gz"
453
- fetcher = gem_remote_fetcher
454
- fetcher.headers = { "X-Gemfile-Source" => remote.original_uri.to_s } if remote.original_uri
455
418
  string = fetcher.fetch_path(path)
456
- Bundler.safe_load_marshal(string)
419
+ specs = Bundler.safe_load_marshal(string)
420
+ raise MarshalError, "Specs #{name} from #{remote} is expected to be an Array but was unexpected class #{specs.class}" unless specs.is_a?(Array)
421
+ specs
457
422
  rescue Gem::RemoteFetcher::FetchError
458
423
  # it's okay for prerelease to fail
459
424
  raise unless name == "prerelease_specs"
460
425
  end
461
426
 
462
- def fetch_all_remote_specs(remote)
463
- specs = fetch_specs(remote, "specs")
464
- pres = fetch_specs(remote, "prerelease_specs") || []
427
+ def fetch_all_remote_specs(remote, gem_remote_fetcher)
428
+ specs = fetch_specs(remote, "specs", gem_remote_fetcher)
429
+ pres = fetch_specs(remote, "prerelease_specs", gem_remote_fetcher) || []
465
430
 
466
431
  specs.concat(pres)
467
432
  end
468
433
 
469
- def download_gem(spec, uri, cache_dir)
434
+ def download_gem(spec, uri, cache_dir, fetcher)
470
435
  require "rubygems/remote_fetcher"
471
436
  uri = Bundler.settings.mirror_for(uri)
472
- fetcher = gem_remote_fetcher
473
- fetcher.headers = { "X-Gemfile-Source" => spec.remote.original_uri.to_s } if spec.remote.original_uri
474
437
  Bundler::Retry.new("download gem from #{uri}").attempts do
475
438
  gem_file_name = spec.file_name
476
439
  local_gem_path = File.join cache_dir, gem_file_name
@@ -478,7 +441,6 @@ module Bundler
478
441
 
479
442
  begin
480
443
  remote_gem_path = uri + "gems/#{gem_file_name}"
481
- remote_gem_path = remote_gem_path.to_s if provides?("< 3.2.0.rc.1")
482
444
 
483
445
  SharedHelpers.filesystem_access(local_gem_path) do
484
446
  fetcher.cache_update_path remote_gem_path, local_gem_path
@@ -497,12 +459,6 @@ module Bundler
497
459
  raise Bundler::HTTPError, "Could not download gem from #{uri} due to underlying error <#{e.message}>"
498
460
  end
499
461
 
500
- def gem_remote_fetcher
501
- require "rubygems/remote_fetcher"
502
- proxy = Gem.configuration[:http_proxy]
503
- Gem::RemoteFetcher.new(proxy)
504
- end
505
-
506
462
  def build(spec, skip_validation = false)
507
463
  require "rubygems/package"
508
464
  Gem::Package.build(spec, skip_validation)
@@ -518,25 +474,6 @@ module Bundler
518
474
  end
519
475
  end
520
476
 
521
- def backport_ext_builder_monitor
522
- # So we can avoid requiring "rubygems/ext" in its entirety
523
- Gem.module_eval <<-RUBY, __FILE__, __LINE__ + 1
524
- module Ext
525
- end
526
- RUBY
527
-
528
- require "rubygems/ext/builder"
529
-
530
- Gem::Ext::Builder.class_eval do
531
- unless const_defined?(:CHDIR_MONITOR)
532
- const_set(:CHDIR_MONITOR, EXT_LOCK)
533
- end
534
-
535
- remove_const(:CHDIR_MUTEX) if const_defined?(:CHDIR_MUTEX)
536
- const_set(:CHDIR_MUTEX, const_get(:CHDIR_MONITOR))
537
- end
538
- end
539
-
540
477
  def find_bundler(version)
541
478
  find_name("bundler").find {|s| s.version.to_s == version }
542
479
  end
@@ -545,14 +482,8 @@ module Bundler
545
482
  Gem::Specification.stubs_for(name).map(&:to_spec)
546
483
  end
547
484
 
548
- if Gem::Specification.respond_to?(:default_stubs)
549
- def default_stubs
550
- Gem::Specification.default_stubs("*.gemspec")
551
- end
552
- else
553
- def default_stubs
554
- Gem::Specification.send(:default_stubs, "*.gemspec")
555
- end
485
+ def default_stubs
486
+ Gem::Specification.default_stubs("*.gemspec")
556
487
  end
557
488
  end
558
489
 
@@ -28,11 +28,11 @@ module Bundler
28
28
  spec.load_paths.reject {|path| $LOAD_PATH.include?(path) }
29
29
  end.reverse.flatten
30
30
 
31
- Bundler.rubygems.add_to_load_path(load_paths)
31
+ Gem.add_to_load_path(*load_paths)
32
32
 
33
33
  setup_manpath
34
34
 
35
- lock(:preserve_unknown_sections => true)
35
+ lock(preserve_unknown_sections: true)
36
36
 
37
37
  self
38
38
  end
@@ -9,17 +9,23 @@ module Bundler
9
9
  def restart_with_locked_bundler_if_needed
10
10
  return unless needs_switching? && installed?
11
11
 
12
- restart_with(lockfile_version)
12
+ restart_with(restart_version)
13
13
  end
14
14
 
15
15
  def install_locked_bundler_and_restart_with_it_if_needed
16
16
  return unless needs_switching?
17
17
 
18
- Bundler.ui.info \
19
- "Bundler #{current_version} is running, but your lockfile was generated with #{lockfile_version}. " \
20
- "Installing Bundler #{lockfile_version} and restarting using that version."
18
+ if restart_version == lockfile_version
19
+ Bundler.ui.info \
20
+ "Bundler #{current_version} is running, but your lockfile was generated with #{lockfile_version}. " \
21
+ "Installing Bundler #{lockfile_version} and restarting using that version."
22
+ else
23
+ Bundler.ui.info \
24
+ "Bundler #{current_version} is running, but your configuration was #{restart_version}. " \
25
+ "Installing Bundler #{restart_version} and restarting using that version."
26
+ end
21
27
 
22
- install_and_restart_with(lockfile_version)
28
+ install_and_restart_with(restart_version)
23
29
  end
24
30
 
25
31
  def update_bundler_and_restart_with_it_if_needed(target)
@@ -79,7 +85,8 @@ module Bundler
79
85
  autoswitching_applies? &&
80
86
  released?(lockfile_version) &&
81
87
  !running?(lockfile_version) &&
82
- !updating?
88
+ !updating? &&
89
+ Bundler.settings[:version] != "system"
83
90
  end
84
91
 
85
92
  def autoswitching_applies?
@@ -151,7 +158,7 @@ module Bundler
151
158
  def installed?
152
159
  Bundler.configure
153
160
 
154
- Bundler.rubygems.find_bundler(lockfile_version.to_s)
161
+ Bundler.rubygems.find_bundler(restart_version.to_s)
155
162
  end
156
163
 
157
164
  def current_version
@@ -166,5 +173,14 @@ module Bundler
166
173
  rescue ArgumentError
167
174
  @lockfile_version = nil
168
175
  end
176
+
177
+ def restart_version
178
+ return @restart_version if defined?(@restart_version)
179
+ # BUNDLE_VERSION=x.y.z
180
+ @restart_version = Gem::Version.new(Bundler.settings[:version])
181
+ rescue ArgumentError
182
+ # BUNDLE_VERSION=lockfile
183
+ @restart_version = lockfile_version
184
+ end
169
185
  end
170
186
  end
@@ -46,6 +46,20 @@ module Bundler
46
46
  update_requires_all_flag
47
47
  ].freeze
48
48
 
49
+ REMEMBERED_KEYS = %w[
50
+ bin
51
+ cache_all
52
+ clean
53
+ deployment
54
+ frozen
55
+ no_prune
56
+ path
57
+ shebang
58
+ path.system
59
+ without
60
+ with
61
+ ].freeze
62
+
49
63
  NUMBER_KEYS = %w[
50
64
  jobs
51
65
  redirect
@@ -74,6 +88,7 @@ module Bundler
74
88
  shebang
75
89
  system_bindir
76
90
  trust-policy
91
+ version
77
92
  ].freeze
78
93
 
79
94
  DEFAULT_CONFIG = {
@@ -83,6 +98,7 @@ module Bundler
83
98
  "BUNDLE_REDIRECT" => 5,
84
99
  "BUNDLE_RETRY" => 3,
85
100
  "BUNDLE_TIMEOUT" => 10,
101
+ "BUNDLE_VERSION" => "lockfile",
86
102
  }.freeze
87
103
 
88
104
  def initialize(root = nil)
@@ -113,7 +129,7 @@ module Bundler
113
129
  end
114
130
 
115
131
  def set_command_option(key, value)
116
- if Bundler.feature_flag.forget_cli_options?
132
+ if !is_remembered(key) || Bundler.feature_flag.forget_cli_options?
117
133
  temporary(key => value)
118
134
  value
119
135
  else
@@ -319,11 +335,11 @@ module Bundler
319
335
 
320
336
  def configs
321
337
  @configs ||= {
322
- :temporary => @temporary,
323
- :local => @local_config,
324
- :env => @env_config,
325
- :global => @global_config,
326
- :default => DEFAULT_CONFIG,
338
+ temporary: @temporary,
339
+ local: @local_config,
340
+ env: @env_config,
341
+ global: @global_config,
342
+ default: DEFAULT_CONFIG,
327
343
  }
328
344
  end
329
345
 
@@ -372,6 +388,10 @@ module Bundler
372
388
  ARRAY_KEYS.include?(self.class.key_to_s(key))
373
389
  end
374
390
 
391
+ def is_remembered(key)
392
+ REMEMBERED_KEYS.include?(self.class.key_to_s(key))
393
+ end
394
+
375
395
  def is_credential(key)
376
396
  key == "gem.push_key"
377
397
  end
@@ -507,7 +527,7 @@ module Bundler
507
527
  (https?.*?) # URI
508
528
  (\.#{Regexp.union(PER_URI_OPTIONS)})? # optional suffix key
509
529
  \z
510
- /ix.freeze
530
+ /ix
511
531
 
512
532
  def self.key_for(key)
513
533
  key = normalize_uri(key).to_s if key.is_a?(String) && key.start_with?("http", "mirror.http")
@@ -12,7 +12,10 @@ if Bundler::SharedHelpers.in_bundle?
12
12
  Bundler.ui.error e.message
13
13
  Bundler.ui.warn e.backtrace.join("\n") if ENV["DEBUG"]
14
14
  if e.is_a?(Bundler::GemNotFound)
15
- suggested_cmd = "bundle install"
15
+ default_bundle = Gem.bin_path("bundler", "bundle")
16
+ current_bundle = Bundler::SharedHelpers.bundle_bin_path
17
+ suggested_bundle = default_bundle == current_bundle ? "bundle" : current_bundle
18
+ suggested_cmd = "#{suggested_bundle} install"
16
19
  original_gemfile = Bundler.original_env["BUNDLE_GEMFILE"]
17
20
  suggested_cmd += " --gemfile #{original_gemfile}" if original_gemfile
18
21
  Bundler.ui.warn "Run `#{suggested_cmd}` to install missing gems."
@@ -13,13 +13,13 @@ module Bundler
13
13
  def root
14
14
  gemfile = find_gemfile
15
15
  raise GemfileNotFound, "Could not locate Gemfile" unless gemfile
16
- Pathname.new(gemfile).tap {|x| x.untaint if RUBY_VERSION < "2.7" }.expand_path.parent
16
+ Pathname.new(gemfile).expand_path.parent
17
17
  end
18
18
 
19
19
  def default_gemfile
20
20
  gemfile = find_gemfile
21
21
  raise GemfileNotFound, "Could not locate Gemfile" unless gemfile
22
- Pathname.new(gemfile).tap {|x| x.untaint if RUBY_VERSION < "2.7" }.expand_path
22
+ Pathname.new(gemfile).expand_path
23
23
  end
24
24
 
25
25
  def default_lockfile
@@ -28,7 +28,7 @@ module Bundler
28
28
  case gemfile.basename.to_s
29
29
  when "gems.rb" then Pathname.new(gemfile.sub(/.rb$/, ".locked"))
30
30
  else Pathname.new("#{gemfile}.lock")
31
- end.tap {|x| x.untaint if RUBY_VERSION < "2.7" }
31
+ end
32
32
  end
33
33
 
34
34
  def default_bundle_dir
@@ -100,7 +100,7 @@ module Bundler
100
100
  #
101
101
  # @see {Bundler::PermissionError}
102
102
  def filesystem_access(path, action = :write, &block)
103
- yield(path.dup.tap {|x| x.untaint if RUBY_VERSION < "2.7" })
103
+ yield(path.dup)
104
104
  rescue Errno::EACCES
105
105
  raise PermissionError.new(path, action)
106
106
  rescue Errno::EAGAIN
@@ -117,16 +117,18 @@ module Bundler
117
117
  raise GenericSystemCallError.new(e, "There was an error accessing `#{path}`.")
118
118
  end
119
119
 
120
- def major_deprecation(major_version, message, print_caller_location: false)
120
+ def major_deprecation(major_version, message, removed_message: nil, print_caller_location: false)
121
121
  if print_caller_location
122
122
  caller_location = caller_locations(2, 2).first
123
- message = "#{message} (called at #{caller_location.path}:#{caller_location.lineno})"
123
+ suffix = " (called at #{caller_location.path}:#{caller_location.lineno})"
124
+ message += suffix
125
+ removed_message += suffix if removed_message
124
126
  end
125
127
 
126
128
  bundler_major_version = Bundler.bundler_major_version
127
129
  if bundler_major_version > major_version
128
130
  require_relative "errors"
129
- raise DeprecatedError, "[REMOVED] #{message}"
131
+ raise DeprecatedError, "[REMOVED] #{removed_message || message}"
130
132
  end
131
133
 
132
134
  return unless bundler_major_version >= major_version && prints_major_deprecations?
@@ -193,6 +195,21 @@ module Bundler
193
195
  Digest(name)
194
196
  end
195
197
 
198
+ def checksum_for_file(path, digest)
199
+ return unless path.file?
200
+ # This must use File.read instead of Digest.file().hexdigest
201
+ # because we need to preserve \n line endings on windows when calculating
202
+ # the checksum
203
+ SharedHelpers.filesystem_access(path, :read) do
204
+ File.open(path, "rb") do |f|
205
+ digest = SharedHelpers.digest(digest).new
206
+ buf = String.new(capacity: 16_384, encoding: Encoding::BINARY)
207
+ digest << buf while f.read(16_384, buf)
208
+ digest.hexdigest
209
+ end
210
+ end
211
+ end
212
+
196
213
  def write_to_gemfile(gemfile_path, contents)
197
214
  filesystem_access(gemfile_path) {|g| File.open(g, "w") {|file| file.puts contents } }
198
215
  end
@@ -250,7 +267,7 @@ module Bundler
250
267
 
251
268
  def search_up(*names)
252
269
  previous = nil
253
- current = File.expand_path(SharedHelpers.pwd).tap {|x| x.untaint if RUBY_VERSION < "2.7" }
270
+ current = File.expand_path(SharedHelpers.pwd)
254
271
 
255
272
  until !File.directory?(current) || current == previous
256
273
  if ENV["BUNDLER_SPEC_RUN"]
@@ -287,6 +304,13 @@ module Bundler
287
304
  public :set_env
288
305
 
289
306
  def set_bundle_variables
307
+ Bundler::SharedHelpers.set_env "BUNDLE_BIN_PATH", bundle_bin_path
308
+ Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", find_gemfile.to_s
309
+ Bundler::SharedHelpers.set_env "BUNDLER_VERSION", Bundler::VERSION
310
+ Bundler::SharedHelpers.set_env "BUNDLER_SETUP", File.expand_path("setup", __dir__)
311
+ end
312
+
313
+ def bundle_bin_path
290
314
  # bundler exe & lib folders have same root folder, typical gem installation
291
315
  exe_file = File.expand_path("../../exe/bundle", __dir__)
292
316
 
@@ -296,11 +320,9 @@ module Bundler
296
320
  # bundler is a default gem, exe path is separate
297
321
  exe_file = Bundler.rubygems.bin_path("bundler", "bundle", VERSION) unless File.exist?(exe_file)
298
322
 
299
- Bundler::SharedHelpers.set_env "BUNDLE_BIN_PATH", exe_file
300
- Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", find_gemfile.to_s
301
- Bundler::SharedHelpers.set_env "BUNDLER_VERSION", Bundler::VERSION
302
- Bundler::SharedHelpers.set_env "BUNDLER_SETUP", File.expand_path("setup", __dir__) unless RUBY_VERSION < "2.7"
323
+ exe_file
303
324
  end
325
+ public :bundle_bin_path
304
326
 
305
327
  def set_path
306
328
  validate_bundle_path
@@ -312,7 +334,7 @@ module Bundler
312
334
  def set_rubyopt
313
335
  rubyopt = [ENV["RUBYOPT"]].compact
314
336
  setup_require = "-r#{File.expand_path("setup", __dir__)}"
315
- return if !rubyopt.empty? && rubyopt.first =~ /#{Regexp.escape(setup_require)}/
337
+ return if !rubyopt.empty? && rubyopt.first.include?(setup_require)
316
338
  rubyopt.unshift setup_require
317
339
  Bundler::SharedHelpers.set_env "RUBYOPT", rubyopt.join(" ")
318
340
  end
@@ -80,14 +80,14 @@ module Bundler
80
80
 
81
81
  def current_branch
82
82
  @current_branch ||= with_path do
83
- git_local("rev-parse", "--abbrev-ref", "HEAD", :dir => path).strip
83
+ git_local("rev-parse", "--abbrev-ref", "HEAD", dir: path).strip
84
84
  end
85
85
  end
86
86
 
87
87
  def contains?(commit)
88
88
  allowed_with_path do
89
- result, status = git_null("branch", "--contains", commit, :dir => path)
90
- status.success? && result =~ /^\* (.*)$/
89
+ result, status = git_null("branch", "--contains", commit, dir: path)
90
+ status.success? && result.match?(/^\* (.*)$/)
91
91
  end
92
92
  end
93
93
 
@@ -132,18 +132,18 @@ module Bundler
132
132
 
133
133
  ref = @commit_ref || (locked_to_full_sha? && @revision)
134
134
  if ref
135
- git "config", "uploadpack.allowAnySHA1InWant", "true", :dir => path.to_s if @commit_ref.nil? && needs_allow_any_sha1_in_want?
135
+ git "config", "uploadpack.allowAnySHA1InWant", "true", dir: path.to_s if @commit_ref.nil? && needs_allow_any_sha1_in_want?
136
136
 
137
- git "fetch", "--force", "--quiet", *extra_fetch_args(ref), :dir => destination
137
+ git "fetch", "--force", "--quiet", *extra_fetch_args(ref), dir: destination
138
138
  end
139
139
 
140
- git "reset", "--hard", @revision, :dir => destination
140
+ git "reset", "--hard", @revision, dir: destination
141
141
 
142
142
  if submodules
143
- git_retry "submodule", "update", "--init", "--recursive", :dir => destination
143
+ git_retry "submodule", "update", "--init", "--recursive", dir: destination
144
144
  elsif Gem::Version.create(version) >= Gem::Version.create("2.9.0")
145
145
  inner_command = "git -C $toplevel submodule deinit --force $sm_path"
146
- git_retry "submodule", "foreach", "--quiet", inner_command, :dir => destination
146
+ git_retry "submodule", "foreach", "--quiet", inner_command, dir: destination
147
147
  end
148
148
  end
149
149
 
@@ -266,32 +266,32 @@ module Bundler
266
266
  def git_null(*command, dir: nil)
267
267
  check_allowed(command)
268
268
 
269
- capture(command, dir, :ignore_err => true)
269
+ capture(command, dir, ignore_err: true)
270
270
  end
271
271
 
272
272
  def git_retry(*command, dir: nil)
273
273
  command_with_no_credentials = check_allowed(command)
274
274
 
275
275
  Bundler::Retry.new("`#{command_with_no_credentials}` at #{dir || SharedHelpers.pwd}").attempts do
276
- git(*command, :dir => dir)
276
+ git(*command, dir: dir)
277
277
  end
278
278
  end
279
279
 
280
280
  def git(*command, dir: nil)
281
- run_command(*command, :dir => dir) do |unredacted_command|
281
+ run_command(*command, dir: dir) do |unredacted_command|
282
282
  check_allowed(unredacted_command)
283
283
  end
284
284
  end
285
285
 
286
286
  def git_local(*command, dir: nil)
287
- run_command(*command, :dir => dir) do |unredacted_command|
287
+ run_command(*command, dir: dir) do |unredacted_command|
288
288
  redact_and_check_presence(unredacted_command)
289
289
  end
290
290
  end
291
291
 
292
292
  def has_revision_cached?
293
293
  return unless @revision && path.exist?
294
- git("cat-file", "-e", @revision, :dir => path)
294
+ git("cat-file", "-e", @revision, dir: path)
295
295
  true
296
296
  rescue GitError
297
297
  false
@@ -314,7 +314,7 @@ module Bundler
314
314
  end
315
315
 
316
316
  def verify(reference)
317
- git("rev-parse", "--verify", reference, :dir => path).strip
317
+ git("rev-parse", "--verify", reference, dir: path).strip
318
318
  end
319
319
 
320
320
  # Adds credentials to the URI
@@ -398,7 +398,7 @@ module Bundler
398
398
  if Bundler.feature_flag.bundler_3_mode? || supports_minus_c?
399
399
  ["git", "-C", dir.to_s, *cmd]
400
400
  else
401
- ["git", *cmd, { :chdir => dir.to_s }]
401
+ ["git", *cmd, { chdir: dir.to_s }]
402
402
  end
403
403
  end
404
404
 
@@ -11,6 +11,7 @@ module Bundler
11
11
 
12
12
  def initialize(options)
13
13
  @options = options
14
+ @checksum_store = Checksum::Store.new
14
15
  @glob = options["glob"] || DEFAULT_GLOB
15
16
 
16
17
  @allow_cached = false
@@ -19,7 +20,7 @@ module Bundler
19
20
  # Stringify options that could be set as symbols
20
21
  %w[ref branch tag revision].each {|k| options[k] = options[k].to_s if options[k] }
21
22
 
22
- @uri = URINormalizer.normalize_suffix(options["uri"] || "", :trailing_slash => false)
23
+ @uri = URINormalizer.normalize_suffix(options["uri"] || "", trailing_slash: false)
23
24
  @safe_uri = URICredentialsFilter.credential_filtered_uri(@uri)
24
25
  @branch = options["branch"]
25
26
  @ref = options["ref"] || options["branch"] || options["tag"]
@@ -197,7 +198,7 @@ module Bundler
197
198
  @copied = true
198
199
  end
199
200
 
200
- generate_bin_options = { :disable_extensions => !Bundler.rubygems.spec_missing_extensions?(spec), :build_args => options[:build_args] }
201
+ generate_bin_options = { disable_extensions: !Bundler.rubygems.spec_missing_extensions?(spec), build_args: options[:build_args] }
201
202
  generate_bin(spec, generate_bin_options)
202
203
 
203
204
  requires_checkout? ? spec.post_install_message : nil
@@ -359,7 +360,7 @@ module Bundler
359
360
 
360
361
  def load_gemspec(file)
361
362
  stub = Gem::StubSpecification.gemspec_stub(file, install_path.parent, install_path.parent)
362
- stub.full_gem_path = Pathname.new(file).dirname.expand_path(root).to_s.tap {|x| x.untaint if RUBY_VERSION < "2.7" }
363
+ stub.full_gem_path = Pathname.new(file).dirname.expand_path(root).to_s
363
364
  StubSpecification.from_stub(stub)
364
365
  end
365
366