rubygems-update 3.5.3 → 3.7.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 (437) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1410 -686
  3. data/CODE_OF_CONDUCT.md +79 -28
  4. data/CONTRIBUTING.md +4 -226
  5. data/Manifest.txt +107 -83
  6. data/README.md +16 -11
  7. data/SECURITY.md +7 -0
  8. data/bundler/CHANGELOG.md +1525 -931
  9. data/bundler/README.md +9 -9
  10. data/bundler/bundler.gemspec +2 -2
  11. data/bundler/lib/bundler/build_metadata.rb +10 -11
  12. data/bundler/lib/bundler/checksum.rb +22 -12
  13. data/bundler/lib/bundler/cli/add.rb +3 -1
  14. data/bundler/lib/bundler/cli/binstubs.rb +1 -1
  15. data/bundler/lib/bundler/cli/check.rb +3 -3
  16. data/bundler/lib/bundler/cli/common.rb +1 -1
  17. data/bundler/lib/bundler/cli/config.rb +2 -2
  18. data/bundler/lib/bundler/cli/console.rb +8 -10
  19. data/bundler/lib/bundler/cli/doctor/diagnose.rb +167 -0
  20. data/bundler/lib/bundler/cli/doctor/ssl.rb +249 -0
  21. data/bundler/lib/bundler/cli/doctor.rb +27 -151
  22. data/bundler/lib/bundler/cli/exec.rb +1 -0
  23. data/bundler/lib/bundler/cli/fund.rb +1 -1
  24. data/bundler/lib/bundler/cli/gem.rb +74 -46
  25. data/bundler/lib/bundler/cli/info.rb +6 -6
  26. data/bundler/lib/bundler/cli/inject.rb +3 -3
  27. data/bundler/lib/bundler/cli/install.rb +19 -10
  28. data/bundler/lib/bundler/cli/issue.rb +3 -3
  29. data/bundler/lib/bundler/cli/lock.rb +32 -11
  30. data/bundler/lib/bundler/cli/outdated.rb +23 -23
  31. data/bundler/lib/bundler/cli/plugin.rb +3 -2
  32. data/bundler/lib/bundler/cli/pristine.rb +1 -1
  33. data/bundler/lib/bundler/cli/show.rb +3 -3
  34. data/bundler/lib/bundler/cli/update.rb +3 -3
  35. data/bundler/lib/bundler/cli.rb +75 -145
  36. data/bundler/lib/bundler/compact_index_client/cache.rb +48 -73
  37. data/bundler/lib/bundler/compact_index_client/cache_file.rb +0 -5
  38. data/bundler/lib/bundler/compact_index_client/parser.rb +84 -0
  39. data/bundler/lib/bundler/compact_index_client/updater.rb +6 -16
  40. data/bundler/lib/bundler/compact_index_client.rb +52 -85
  41. data/bundler/lib/bundler/constants.rb +8 -1
  42. data/bundler/lib/bundler/current_ruby.rb +48 -34
  43. data/bundler/lib/bundler/definition.rb +501 -328
  44. data/bundler/lib/bundler/dependency.rb +93 -47
  45. data/bundler/lib/bundler/dsl.rb +147 -103
  46. data/bundler/lib/bundler/endpoint_specification.rb +30 -3
  47. data/bundler/lib/bundler/env.rb +1 -1
  48. data/bundler/lib/bundler/environment_preserver.rb +5 -23
  49. data/bundler/lib/bundler/errors.rb +53 -5
  50. data/bundler/lib/bundler/feature_flag.rb +18 -18
  51. data/bundler/lib/bundler/fetcher/compact_index.rb +16 -25
  52. data/bundler/lib/bundler/fetcher/dependency.rb +2 -1
  53. data/bundler/lib/bundler/fetcher/downloader.rb +34 -8
  54. data/bundler/lib/bundler/fetcher.rb +63 -26
  55. data/bundler/lib/bundler/force_platform.rb +0 -2
  56. data/bundler/lib/bundler/friendly_errors.rb +3 -2
  57. data/bundler/lib/bundler/gem_helper.rb +1 -1
  58. data/bundler/lib/bundler/gem_version_promoter.rb +42 -40
  59. data/bundler/lib/bundler/index.rb +7 -2
  60. data/bundler/lib/bundler/injector.rb +14 -16
  61. data/bundler/lib/bundler/inline.rb +42 -17
  62. data/bundler/lib/bundler/installer/gem_installer.rb +4 -3
  63. data/bundler/lib/bundler/installer/parallel_installer.rb +3 -2
  64. data/bundler/lib/bundler/installer/standalone.rb +2 -5
  65. data/bundler/lib/bundler/installer.rb +22 -45
  66. data/bundler/lib/bundler/lazy_specification.rb +121 -48
  67. data/bundler/lib/bundler/lockfile_generator.rb +1 -1
  68. data/bundler/lib/bundler/lockfile_parser.rb +36 -9
  69. data/bundler/lib/bundler/man/bundle-add.1 +44 -27
  70. data/bundler/lib/bundler/man/bundle-add.1.ronn +52 -23
  71. data/bundler/lib/bundler/man/bundle-binstubs.1 +9 -6
  72. data/bundler/lib/bundler/man/bundle-binstubs.1.ronn +6 -3
  73. data/bundler/lib/bundler/man/bundle-cache.1 +32 -4
  74. data/bundler/lib/bundler/man/bundle-cache.1.ronn +31 -2
  75. data/bundler/lib/bundler/man/bundle-check.1 +7 -5
  76. data/bundler/lib/bundler/man/bundle-check.1.ronn +7 -2
  77. data/bundler/lib/bundler/man/bundle-clean.1 +3 -3
  78. data/bundler/lib/bundler/man/bundle-config.1 +180 -138
  79. data/bundler/lib/bundler/man/bundle-config.1.ronn +96 -99
  80. data/bundler/lib/bundler/man/bundle-console.1 +4 -6
  81. data/bundler/lib/bundler/man/bundle-console.1.ronn +2 -7
  82. data/bundler/lib/bundler/man/bundle-doctor.1 +46 -7
  83. data/bundler/lib/bundler/man/bundle-doctor.1.ronn +49 -5
  84. data/bundler/lib/bundler/man/bundle-env.1 +9 -0
  85. data/bundler/lib/bundler/man/bundle-env.1.ronn +10 -0
  86. data/bundler/lib/bundler/man/bundle-exec.1 +9 -6
  87. data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -3
  88. data/bundler/lib/bundler/man/bundle-fund.1 +22 -0
  89. data/bundler/lib/bundler/man/bundle-fund.1.ronn +25 -0
  90. data/bundler/lib/bundler/man/bundle-gem.1 +69 -28
  91. data/bundler/lib/bundler/man/bundle-gem.1.ronn +42 -6
  92. data/bundler/lib/bundler/man/bundle-help.1 +3 -3
  93. data/bundler/lib/bundler/man/bundle-info.1 +7 -4
  94. data/bundler/lib/bundler/man/bundle-info.1.ronn +6 -2
  95. data/bundler/lib/bundler/man/bundle-init.1 +5 -5
  96. data/bundler/lib/bundler/man/bundle-init.1.ronn +3 -2
  97. data/bundler/lib/bundler/man/bundle-inject.1 +13 -5
  98. data/bundler/lib/bundler/man/bundle-inject.1.ronn +10 -2
  99. data/bundler/lib/bundler/man/bundle-install.1 +20 -17
  100. data/bundler/lib/bundler/man/bundle-install.1.ronn +26 -23
  101. data/bundler/lib/bundler/man/bundle-issue.1 +45 -0
  102. data/bundler/lib/bundler/man/bundle-issue.1.ronn +37 -0
  103. data/bundler/lib/bundler/man/bundle-licenses.1 +9 -0
  104. data/bundler/lib/bundler/man/bundle-licenses.1.ronn +10 -0
  105. data/bundler/lib/bundler/man/bundle-list.1 +3 -3
  106. data/bundler/lib/bundler/man/bundle-list.1.ronn +4 -1
  107. data/bundler/lib/bundler/man/bundle-lock.1 +23 -8
  108. data/bundler/lib/bundler/man/bundle-lock.1.ronn +25 -4
  109. data/bundler/lib/bundler/man/bundle-open.1 +4 -4
  110. data/bundler/lib/bundler/man/bundle-open.1.ronn +2 -1
  111. data/bundler/lib/bundler/man/bundle-outdated.1 +10 -7
  112. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +8 -4
  113. data/bundler/lib/bundler/man/bundle-platform.1 +3 -3
  114. data/bundler/lib/bundler/man/bundle-plugin.1 +9 -6
  115. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +7 -3
  116. data/bundler/lib/bundler/man/bundle-pristine.1 +3 -3
  117. data/bundler/lib/bundler/man/bundle-pristine.1.ronn +1 -1
  118. data/bundler/lib/bundler/man/bundle-remove.1 +3 -3
  119. data/bundler/lib/bundler/man/bundle-remove.1.ronn +1 -1
  120. data/bundler/lib/bundler/man/bundle-show.1 +7 -4
  121. data/bundler/lib/bundler/man/bundle-show.1.ronn +4 -0
  122. data/bundler/lib/bundler/man/bundle-update.1 +17 -11
  123. data/bundler/lib/bundler/man/bundle-update.1.ronn +17 -9
  124. data/bundler/lib/bundler/man/bundle-version.1 +3 -3
  125. data/bundler/lib/bundler/man/bundle-viz.1 +6 -6
  126. data/bundler/lib/bundler/man/bundle-viz.1.ronn +7 -3
  127. data/bundler/lib/bundler/man/bundle.1 +3 -3
  128. data/bundler/lib/bundler/man/gemfile.5 +7 -5
  129. data/bundler/lib/bundler/man/gemfile.5.ronn +8 -2
  130. data/bundler/lib/bundler/man/index.txt +4 -0
  131. data/bundler/lib/bundler/match_metadata.rb +13 -0
  132. data/bundler/lib/bundler/match_platform.rb +31 -12
  133. data/bundler/lib/bundler/materialization.rb +59 -0
  134. data/bundler/lib/bundler/mirror.rb +3 -3
  135. data/bundler/lib/bundler/plugin/api/source.rb +5 -4
  136. data/bundler/lib/bundler/plugin/events.rb +24 -0
  137. data/bundler/lib/bundler/plugin/index.rb +5 -1
  138. data/bundler/lib/bundler/plugin/installer/path.rb +26 -0
  139. data/bundler/lib/bundler/plugin/installer.rb +37 -17
  140. data/bundler/lib/bundler/plugin/source_list.rb +4 -4
  141. data/bundler/lib/bundler/plugin.rb +21 -2
  142. data/bundler/lib/bundler/process_lock.rb +10 -14
  143. data/bundler/lib/bundler/remote_specification.rb +6 -1
  144. data/bundler/lib/bundler/resolver/base.rb +14 -3
  145. data/bundler/lib/bundler/resolver/candidate.rb +18 -27
  146. data/bundler/lib/bundler/resolver/package.rb +20 -3
  147. data/bundler/lib/bundler/resolver/spec_group.rb +22 -27
  148. data/bundler/lib/bundler/resolver/strategy.rb +40 -0
  149. data/bundler/lib/bundler/resolver.rb +114 -52
  150. data/bundler/lib/bundler/retry.rb +1 -1
  151. data/bundler/lib/bundler/ruby_dsl.rb +12 -3
  152. data/bundler/lib/bundler/ruby_version.rb +7 -1
  153. data/bundler/lib/bundler/rubygems_ext.rb +303 -150
  154. data/bundler/lib/bundler/rubygems_gem_installer.rb +40 -5
  155. data/bundler/lib/bundler/rubygems_integration.rb +40 -73
  156. data/bundler/lib/bundler/runtime.rb +48 -35
  157. data/bundler/lib/bundler/self_manager.rb +36 -26
  158. data/bundler/lib/bundler/settings/validator.rb +0 -23
  159. data/bundler/lib/bundler/settings.rb +36 -27
  160. data/bundler/lib/bundler/setup.rb +6 -0
  161. data/bundler/lib/bundler/shared_helpers.rb +45 -25
  162. data/bundler/lib/bundler/source/gemspec.rb +1 -4
  163. data/bundler/lib/bundler/source/git/git_proxy.rb +26 -9
  164. data/bundler/lib/bundler/source/git.rb +113 -41
  165. data/bundler/lib/bundler/source/metadata.rb +4 -3
  166. data/bundler/lib/bundler/source/path.rb +14 -18
  167. data/bundler/lib/bundler/source/rubygems/remote.rb +12 -4
  168. data/bundler/lib/bundler/source/rubygems.rb +54 -48
  169. data/bundler/lib/bundler/source.rb +2 -0
  170. data/bundler/lib/bundler/source_list.rb +54 -12
  171. data/bundler/lib/bundler/source_map.rb +1 -1
  172. data/bundler/lib/bundler/spec_set.rb +227 -103
  173. data/bundler/lib/bundler/stub_specification.rb +29 -2
  174. data/bundler/lib/bundler/templates/Executable +0 -11
  175. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +77 -29
  176. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +1 -3
  177. data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -3
  178. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +17 -15
  179. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +14 -12
  180. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +0 -5
  181. data/bundler/lib/bundler/ui/shell.rb +26 -4
  182. data/bundler/lib/bundler/ui/silent.rb +12 -1
  183. data/bundler/lib/bundler/uri_credentials_filter.rb +3 -3
  184. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +53 -3
  185. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  186. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +11 -0
  187. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +15 -13
  188. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
  189. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +2 -1
  190. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +134 -57
  191. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +4 -24
  192. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +1 -0
  193. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/strategy.rb +42 -0
  194. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +20 -8
  195. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +17 -29
  196. data/bundler/lib/bundler/vendor/securerandom/COPYING +56 -0
  197. data/bundler/lib/bundler/vendor/securerandom/lib/securerandom.rb +102 -0
  198. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +3 -5
  199. data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +11 -0
  200. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +1 -4
  201. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +2 -2
  202. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +2 -1
  203. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +9 -9
  204. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +1 -1
  205. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +5 -21
  206. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
  207. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  208. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +11 -0
  209. data/bundler/lib/bundler/vendor/uri/COPYING +56 -0
  210. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +43 -16
  211. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +3 -3
  212. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +1 -1
  213. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +28 -37
  214. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +2 -2
  215. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +16 -9
  216. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +26 -3
  217. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  218. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +9 -9
  219. data/bundler/lib/bundler/vendored_net_http.rb +20 -5
  220. data/bundler/lib/bundler/vendored_securerandom.rb +12 -0
  221. data/bundler/lib/bundler/vendored_timeout.rb +7 -3
  222. data/bundler/lib/bundler/vendored_uri.rb +18 -1
  223. data/bundler/lib/bundler/version.rb +10 -2
  224. data/bundler/lib/bundler/worker.rb +1 -1
  225. data/bundler/lib/bundler/yaml_serializer.rb +12 -7
  226. data/bundler/lib/bundler.rb +101 -61
  227. data/{bundler → doc/bundler}/UPGRADING.md +132 -127
  228. data/doc/rubygems/CONTRIBUTING.md +227 -0
  229. data/{POLICIES.md → doc/rubygems/POLICIES.md} +86 -17
  230. data/exe/update_rubygems +1 -1
  231. data/lib/rubygems/basic_specification.rb +50 -10
  232. data/lib/rubygems/bundler_version_finder.rb +1 -1
  233. data/lib/rubygems/command.rb +1 -4
  234. data/lib/rubygems/command_manager.rb +5 -6
  235. data/lib/rubygems/commands/build_command.rb +2 -11
  236. data/lib/rubygems/commands/cleanup_command.rb +3 -13
  237. data/lib/rubygems/commands/contents_command.rb +17 -10
  238. data/lib/rubygems/commands/environment_command.rb +5 -0
  239. data/lib/rubygems/commands/exec_command.rb +18 -11
  240. data/lib/rubygems/commands/fetch_command.rb +14 -0
  241. data/lib/rubygems/commands/help_command.rb +2 -2
  242. data/lib/rubygems/commands/install_command.rb +0 -4
  243. data/lib/rubygems/commands/pristine_command.rb +29 -19
  244. data/lib/rubygems/commands/push_command.rb +31 -6
  245. data/lib/rubygems/commands/rdoc_command.rb +3 -10
  246. data/lib/rubygems/commands/rebuild_command.rb +262 -0
  247. data/lib/rubygems/commands/setup_command.rb +13 -18
  248. data/lib/rubygems/commands/sources_command.rb +2 -2
  249. data/lib/rubygems/commands/uninstall_command.rb +9 -4
  250. data/lib/rubygems/commands/unpack_command.rb +0 -6
  251. data/lib/rubygems/commands/update_command.rb +13 -22
  252. data/lib/rubygems/config_file.rb +45 -16
  253. data/lib/rubygems/core_ext/kernel_require.rb +15 -3
  254. data/lib/rubygems/core_ext/kernel_warn.rb +2 -6
  255. data/lib/rubygems/defaults.rb +7 -7
  256. data/lib/rubygems/dependency.rb +12 -16
  257. data/lib/rubygems/dependency_list.rb +1 -1
  258. data/lib/rubygems/deprecate.rb +79 -77
  259. data/lib/rubygems/errors.rb +2 -1
  260. data/lib/rubygems/exceptions.rb +2 -9
  261. data/lib/rubygems/ext/builder.rb +21 -8
  262. data/lib/rubygems/ext/cargo_builder.rb +16 -26
  263. data/lib/rubygems/ext/cmake_builder.rb +7 -2
  264. data/lib/rubygems/ext/configure_builder.rb +7 -2
  265. data/lib/rubygems/ext/ext_conf_builder.rb +9 -5
  266. data/lib/rubygems/ext/rake_builder.rb +7 -4
  267. data/lib/rubygems/gem_runner.rb +9 -0
  268. data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +11 -4
  269. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -1
  270. data/lib/rubygems/gemcutter_utilities.rb +52 -26
  271. data/lib/rubygems/gemspec_helpers.rb +19 -0
  272. data/lib/rubygems/install_update_options.rb +5 -0
  273. data/lib/rubygems/installer.rb +76 -90
  274. data/lib/rubygems/local_remote_options.rb +8 -8
  275. data/lib/rubygems/package/tar_header.rb +31 -4
  276. data/lib/rubygems/package/tar_reader/entry.rb +1 -5
  277. data/lib/rubygems/package/tar_writer.rb +5 -4
  278. data/lib/rubygems/package.rb +13 -8
  279. data/lib/rubygems/platform.rb +148 -43
  280. data/lib/rubygems/psych_tree.rb +4 -0
  281. data/lib/rubygems/query_utils.rb +2 -2
  282. data/lib/rubygems/rdoc.rb +16 -3
  283. data/lib/rubygems/remote_fetcher.rb +6 -7
  284. data/lib/rubygems/request.rb +5 -5
  285. data/lib/rubygems/request_set/gem_dependency_api.rb +1 -1
  286. data/lib/rubygems/request_set.rb +4 -7
  287. data/lib/rubygems/requirement.rb +16 -12
  288. data/lib/rubygems/resolver/activation_request.rb +1 -1
  289. data/lib/rubygems/resolver/api_set/gem_parser.rb +2 -5
  290. data/lib/rubygems/resolver/api_set.rb +13 -8
  291. data/lib/rubygems/resolver/best_set.rb +1 -29
  292. data/lib/rubygems/resolver/composed_set.rb +3 -3
  293. data/lib/rubygems/resolver/git_set.rb +0 -1
  294. data/lib/rubygems/resolver/index_set.rb +2 -2
  295. data/lib/rubygems/resolver/source_set.rb +1 -1
  296. data/lib/rubygems/resolver/spec_specification.rb +7 -0
  297. data/lib/rubygems/resolver.rb +8 -8
  298. data/lib/rubygems/s3_uri_signer.rb +8 -6
  299. data/lib/rubygems/safe_marshal/reader.rb +31 -14
  300. data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +29 -16
  301. data/lib/rubygems/safe_yaml.rb +10 -1
  302. data/lib/rubygems/security.rb +1 -1
  303. data/lib/rubygems/source/git.rb +22 -17
  304. data/lib/rubygems/source/installed.rb +3 -1
  305. data/lib/rubygems/source/local.rb +8 -4
  306. data/lib/rubygems/source/specific_file.rb +5 -3
  307. data/lib/rubygems/source.rb +37 -29
  308. data/lib/rubygems/source_list.rb +1 -1
  309. data/lib/rubygems/spec_fetcher.rb +47 -15
  310. data/lib/rubygems/specification.rb +110 -183
  311. data/lib/rubygems/specification_policy.rb +33 -13
  312. data/lib/rubygems/specification_record.rb +212 -0
  313. data/lib/rubygems/stub_specification.rb +32 -10
  314. data/lib/rubygems/target_rbconfig.rb +50 -0
  315. data/lib/rubygems/uninstaller.rb +42 -22
  316. data/lib/rubygems/uri.rb +6 -6
  317. data/lib/rubygems/uri_formatter.rb +2 -1
  318. data/lib/rubygems/util/licenses.rb +118 -1
  319. data/lib/rubygems/util.rb +1 -1
  320. data/lib/rubygems/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +57 -0
  321. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/delegates/specification_provider.rb +11 -11
  322. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/action.rb +1 -1
  323. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
  324. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
  325. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
  326. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
  327. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/log.rb +1 -1
  328. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
  329. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/tag.rb +1 -1
  330. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/vertex.rb +1 -1
  331. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph.rb +2 -2
  332. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/errors.rb +1 -1
  333. data/lib/rubygems/vendor/molinillo/lib/molinillo/gem_metadata.rb +6 -0
  334. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/modules/specification_provider.rb +2 -2
  335. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/modules/ui.rb +1 -1
  336. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/resolution.rb +4 -4
  337. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/resolver.rb +1 -1
  338. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/state.rb +1 -1
  339. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo.rb +2 -2
  340. data/lib/rubygems/vendor/net-http/COPYING +56 -0
  341. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/generic_request.rb +9 -9
  342. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/header.rb +3 -3
  343. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/request.rb +3 -3
  344. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/requests.rb +35 -30
  345. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/response.rb +2 -2
  346. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/responses.rb +6 -6
  347. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/status.rb +1 -1
  348. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http.rb +149 -70
  349. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/https.rb +1 -1
  350. data/lib/rubygems/vendor/optparse/COPYING +56 -0
  351. data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/ac.rb +16 -0
  352. data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/kwargs.rb +8 -3
  353. data/lib/rubygems/vendor/optparse/lib/optparse/uri.rb +7 -0
  354. data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/version.rb +9 -0
  355. data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse.rb +158 -62
  356. data/lib/rubygems/vendor/resolv/COPYING +56 -0
  357. data/lib/rubygems/{resolv → vendor/resolv}/lib/resolv.rb +165 -69
  358. data/lib/rubygems/vendor/securerandom/COPYING +56 -0
  359. data/lib/rubygems/vendor/securerandom/lib/securerandom.rb +102 -0
  360. data/lib/rubygems/vendor/timeout/COPYING +56 -0
  361. data/lib/rubygems/{timeout → vendor/timeout}/lib/timeout.rb +10 -11
  362. data/lib/rubygems/{tsort → vendor/tsort}/lib/tsort.rb +2 -2
  363. data/lib/rubygems/vendor/uri/COPYING +56 -0
  364. data/lib/rubygems/vendor/uri/lib/uri/common.rb +880 -0
  365. data/lib/rubygems/vendor/uri/lib/uri/file.rb +100 -0
  366. data/lib/rubygems/vendor/uri/lib/uri/ftp.rb +267 -0
  367. data/lib/rubygems/vendor/uri/lib/uri/generic.rb +1579 -0
  368. data/lib/rubygems/vendor/uri/lib/uri/http.rb +125 -0
  369. data/lib/rubygems/vendor/uri/lib/uri/https.rb +23 -0
  370. data/lib/rubygems/vendor/uri/lib/uri/ldap.rb +261 -0
  371. data/lib/rubygems/vendor/uri/lib/uri/ldaps.rb +22 -0
  372. data/lib/rubygems/vendor/uri/lib/uri/mailto.rb +293 -0
  373. data/lib/rubygems/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
  374. data/lib/rubygems/vendor/uri/lib/uri/rfc3986_parser.rb +206 -0
  375. data/lib/rubygems/vendor/uri/lib/uri/version.rb +6 -0
  376. data/lib/rubygems/vendor/uri/lib/uri/ws.rb +83 -0
  377. data/lib/rubygems/vendor/uri/lib/uri/wss.rb +23 -0
  378. data/lib/rubygems/vendor/uri/lib/uri.rb +104 -0
  379. data/lib/rubygems/vendored_molinillo.rb +3 -0
  380. data/lib/rubygems/vendored_net_http.rb +5 -0
  381. data/lib/rubygems/vendored_optparse.rb +3 -0
  382. data/lib/rubygems/vendored_securerandom.rb +3 -0
  383. data/lib/rubygems/vendored_timeout.rb +5 -0
  384. data/lib/rubygems/vendored_tsort.rb +3 -0
  385. data/lib/rubygems/version.rb +26 -9
  386. data/lib/rubygems/yaml_serializer.rb +12 -7
  387. data/lib/rubygems.rb +160 -53
  388. data/rubygems-update.gemspec +11 -6
  389. data/setup.rb +1 -1
  390. metadata +124 -96
  391. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +0 -32
  392. data/bundler/lib/bundler/gem_helpers.rb +0 -127
  393. data/bundler/lib/bundler/templates/Executable.bundler +0 -109
  394. data/bundler/lib/bundler/vendor/fileutils/.document +0 -1
  395. data/bundler/lib/bundler/vendor/net-http-persistent/.document +0 -1
  396. data/bundler/lib/bundler/vendor/pub_grub/.document +0 -1
  397. data/bundler/lib/bundler/vendor/thor/.document +0 -1
  398. data/bundler/lib/bundler/vendor/tsort/.document +0 -1
  399. data/bundler/lib/bundler/vendor/uri/.document +0 -1
  400. data/lib/rubygems/net/http.rb +0 -3
  401. data/lib/rubygems/net-http/.document +0 -1
  402. data/lib/rubygems/net-http/LICENSE.txt +0 -22
  403. data/lib/rubygems/net-http/lib/net/http/backward.rb +0 -40
  404. data/lib/rubygems/net-protocol/.document +0 -1
  405. data/lib/rubygems/net-protocol/LICENSE.txt +0 -22
  406. data/lib/rubygems/optparse/.document +0 -1
  407. data/lib/rubygems/optparse/lib/optparse/uri.rb +0 -7
  408. data/lib/rubygems/optparse.rb +0 -3
  409. data/lib/rubygems/resolv/.document +0 -1
  410. data/lib/rubygems/resolv/LICENSE.txt +0 -22
  411. data/lib/rubygems/resolver/molinillo/.document +0 -1
  412. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  413. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  414. data/lib/rubygems/resolver/molinillo.rb +0 -3
  415. data/lib/rubygems/shellwords.rb +0 -3
  416. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA.pem +0 -21
  417. data/lib/rubygems/timeout/.document +0 -1
  418. data/lib/rubygems/timeout/LICENSE.txt +0 -22
  419. data/lib/rubygems/timeout.rb +0 -3
  420. data/lib/rubygems/tsort/.document +0 -1
  421. data/lib/rubygems/tsort/LICENSE.txt +0 -22
  422. data/lib/rubygems/tsort.rb +0 -3
  423. /data/{lib/rubygems/optparse → bundler/lib/bundler/vendor/fileutils}/COPYING +0 -0
  424. /data/{MAINTAINERS.txt → doc/MAINTAINERS.txt} +0 -0
  425. /data/{UPGRADING.md → doc/rubygems/UPGRADING.md} +0 -0
  426. /data/lib/rubygems/ssl_certs/rubygems.org/{GlobalSignRootCA_R3.pem → GlobalSign.pem} +0 -0
  427. /data/{bundler/lib/bundler/vendor/connection_pool → lib/rubygems/vendor}/.document +0 -0
  428. /data/lib/rubygems/{resolver → vendor}/molinillo/LICENSE +0 -0
  429. /data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/exceptions.rb +0 -0
  430. /data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/proxy_delta.rb +0 -0
  431. /data/{bundler/lib/bundler/vendor/fileutils → lib/rubygems/vendor/net-protocol}/LICENSE.txt +0 -0
  432. /data/lib/rubygems/{net-protocol → vendor/net-protocol}/lib/net/protocol.rb +0 -0
  433. /data/lib/rubygems/{optparse → vendor/optparse}/lib/optionparser.rb +0 -0
  434. /data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/date.rb +0 -0
  435. /data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/shellwords.rb +0 -0
  436. /data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/time.rb +0 -0
  437. /data/{bundler/lib/bundler/vendor/uri → lib/rubygems/vendor/tsort}/LICENSE.txt +0 -0
@@ -7,8 +7,8 @@ require_relative "../command"
7
7
  # RubyGems checkout or tarball.
8
8
 
9
9
  class Gem::Commands::SetupCommand < Gem::Command
10
- HISTORY_HEADER = %r{^#\s*[\d.a-zA-Z]+\s*/\s*\d{4}-\d{2}-\d{2}\s*$}
11
- VERSION_MATCHER = %r{^#\s*([\d.a-zA-Z]+)\s*/\s*\d{4}-\d{2}-\d{2}\s*$}
10
+ HISTORY_HEADER = %r{^##\s*[\d.a-zA-Z]+\s*/\s*\d{4}-\d{2}-\d{2}\s*$}
11
+ VERSION_MATCHER = %r{^##\s*([\d.a-zA-Z]+)\s*/\s*\d{4}-\d{2}-\d{2}\s*$}
12
12
 
13
13
  ENV_PATHS = %w[/usr/bin/env /bin/env].freeze
14
14
 
@@ -107,15 +107,6 @@ class Gem::Commands::SetupCommand < Gem::Command
107
107
  @verbose = nil
108
108
  end
109
109
 
110
- def check_ruby_version
111
- required_version = Gem::Requirement.new ">= 2.6.0"
112
-
113
- unless required_version.satisfied_by? Gem.ruby_version
114
- alert_error "Expected Ruby version #{required_version}, is #{Gem.ruby_version}"
115
- terminate_interaction 1
116
- end
117
- end
118
-
119
110
  def defaults_str # :nodoc:
120
111
  "--format-executable --document ri --regenerate-binstubs"
121
112
  end
@@ -148,8 +139,6 @@ By default, this RubyGems will install gem as:
148
139
  def execute
149
140
  @verbose = Gem.configuration.really_verbose
150
141
 
151
- check_ruby_version
152
-
153
142
  require "fileutils"
154
143
  if Gem.configuration.really_verbose
155
144
  extend FileUtils::Verbose
@@ -279,11 +268,7 @@ By default, this RubyGems will install gem as:
279
268
  File.open bin_cmd_file, "w" do |file|
280
269
  file.puts <<-TEXT
281
270
  @ECHO OFF
282
- IF NOT "%~f0" == "~f0" GOTO :WinNT
283
- @"#{File.basename(Gem.ruby).chomp('"')}" "#{dest_file}" %1 %2 %3 %4 %5 %6 %7 %8 %9
284
- GOTO :EOF
285
- :WinNT
286
- @"#{File.basename(Gem.ruby).chomp('"')}" "%~dpn0" %*
271
+ @"%~dp0#{File.basename(Gem.ruby).chomp('"')}" "%~dpn0" %*
287
272
  TEXT
288
273
  end
289
274
 
@@ -340,6 +325,8 @@ By default, this RubyGems will install gem as:
340
325
 
341
326
  require_relative "../rdoc"
342
327
 
328
+ return false unless defined?(Gem::RDoc)
329
+
343
330
  fake_spec = Gem::Specification.new "rubygems", Gem::VERSION
344
331
  def fake_spec.full_gem_path
345
332
  File.expand_path "../../..", __dir__
@@ -363,9 +350,15 @@ By default, this RubyGems will install gem as:
363
350
  def install_default_bundler_gem(bin_dir)
364
351
  current_default_spec = Gem::Specification.default_stubs.find {|s| s.name == "bundler" }
365
352
  specs_dir = if current_default_spec && default_dir == Gem.default_dir
353
+ all_specs_current_version = Gem::Specification.stubs.select {|s| s.full_name == current_default_spec.full_name }
354
+
366
355
  Gem::Specification.remove_spec current_default_spec
367
356
  loaded_from = current_default_spec.loaded_from
368
357
  File.delete(loaded_from)
358
+
359
+ # Remove previous default gem executables if they were not shadowed by a regular gem
360
+ FileUtils.rm_rf current_default_spec.full_gem_path if all_specs_current_version.size == 1
361
+
369
362
  File.dirname(loaded_from)
370
363
  else
371
364
  target_specs_dir = File.join(default_dir, "specifications", "default")
@@ -585,6 +578,8 @@ abort "#{deprecation_message}"
585
578
 
586
579
  args = %w[--all --only-executables --silent]
587
580
  args << "--bindir=#{bindir}"
581
+ args << "--install-dir=#{default_dir}"
582
+
588
583
  if options[:env_shebang]
589
584
  args << "--env-shebang"
590
585
  end
@@ -59,7 +59,7 @@ class Gem::Commands::SourcesCommand < Gem::Command
59
59
 
60
60
  say "#{source_uri} added to sources"
61
61
  end
62
- rescue URI::Error, ArgumentError
62
+ rescue Gem::URI::Error, ArgumentError
63
63
  say "#{source_uri} is not a URI"
64
64
  terminate_interaction 1
65
65
  rescue Gem::RemoteFetcher::FetchError => e
@@ -81,7 +81,7 @@ Do you want to add this source?
81
81
  end
82
82
 
83
83
  def check_rubygems_https(source_uri) # :nodoc:
84
- uri = URI source_uri
84
+ uri = Gem::URI source_uri
85
85
 
86
86
  if uri.scheme && uri.scheme.casecmp("http").zero? &&
87
87
  uri.host.casecmp("rubygems.org").zero?
@@ -157,9 +157,14 @@ that is a dependency of an existing gem. You can use the
157
157
 
158
158
  gem_specs = Gem::Specification.find_all_by_name(name, original_gem_version[name])
159
159
 
160
- say("Gem '#{name}' is not installed") if gem_specs.empty?
161
- gem_specs.each do |spec|
162
- deplist.add spec
160
+ if gem_specs.empty?
161
+ say("Gem '#{name}' is not installed")
162
+ else
163
+ gem_specs.reject!(&:default_gem?) if gem_specs.size > 1
164
+
165
+ gem_specs.each do |spec|
166
+ deplist.add spec
167
+ end
163
168
  end
164
169
  end
165
170
 
@@ -184,7 +189,7 @@ that is a dependency of an existing gem. You can use the
184
189
  rescue Gem::GemNotInHomeException => e
185
190
  spec = e.spec
186
191
  alert("In order to remove #{spec.name}, please execute:\n" \
187
- "\tgem uninstall #{spec.name} --install-dir=#{spec.installation_path}")
192
+ "\tgem uninstall #{spec.name} --install-dir=#{spec.base_dir}")
188
193
  rescue Gem::UninstallError => e
189
194
  spec = e.spec
190
195
  alert_error("Error: unable to successfully uninstall '#{spec.name}' which is " \
@@ -143,12 +143,6 @@ command help for an example.
143
143
  # get_path 'rake', '< 0.1' # nil
144
144
  # get_path 'rak' # nil (exact name required)
145
145
  #--
146
- # TODO: This should be refactored so that it's a general service. I don't
147
- # think any of our existing classes are the right place though. Just maybe
148
- # 'Cache'?
149
- #
150
- # TODO: It just uses Gem.dir for now. What's an easy way to get the list of
151
- # source directories?
152
146
 
153
147
  def get_path(dependency)
154
148
  return dependency.name if /\.gem$/i.match?(dependency.name)
@@ -197,18 +197,17 @@ command to remove old versions.
197
197
  yield
198
198
  else
199
199
  require "tmpdir"
200
- tmpdir = Dir.mktmpdir
201
- FileUtils.mv Gem.plugindir, tmpdir
200
+ Dir.mktmpdir("gem_update") do |tmpdir|
201
+ FileUtils.mv Gem.plugindir, tmpdir
202
202
 
203
- status = yield
203
+ status = yield
204
204
 
205
- if status
206
- FileUtils.rm_rf tmpdir
207
- else
208
- FileUtils.mv File.join(tmpdir, "plugins"), Gem.plugindir
209
- end
205
+ unless status
206
+ FileUtils.mv File.join(tmpdir, "plugins"), Gem.plugindir
207
+ end
210
208
 
211
- status
209
+ status
210
+ end
212
211
  end
213
212
  end
214
213
 
@@ -244,7 +243,7 @@ command to remove old versions.
244
243
 
245
244
  @installer = Gem::DependencyInstaller.new update_options
246
245
 
247
- say "Updating #{name}" unless options[:system] && options[:silent]
246
+ say "Updating #{name}" unless options[:system]
248
247
  begin
249
248
  @installer.install name, Gem::Requirement.new(version)
250
249
  rescue Gem::InstallError, Gem::DependencyError => e
@@ -282,7 +281,7 @@ command to remove old versions.
282
281
  check_oldest_rubygems version
283
282
 
284
283
  installed_gems = Gem::Specification.find_all_by_name "rubygems-update", requirement
285
- installed_gems = update_gem("rubygems-update", version) if installed_gems.empty? || installed_gems.first.version != version
284
+ installed_gems = update_gem("rubygems-update", requirement) if installed_gems.empty? || installed_gems.first.version != version
286
285
  return if installed_gems.empty?
287
286
 
288
287
  install_rubygems installed_gems.first
@@ -294,9 +293,7 @@ command to remove old versions.
294
293
  args << "--prefix" << Gem.prefix if Gem.prefix
295
294
  args << "--no-document" unless options[:document].include?("rdoc") || options[:document].include?("ri")
296
295
  args << "--no-format-executable" if options[:no_format_executable]
297
- args << "--previous-version" << Gem::VERSION if
298
- options[:system] == true ||
299
- Gem::Version.new(options[:system]) >= Gem::Version.new(2)
296
+ args << "--previous-version" << Gem::VERSION
300
297
  args
301
298
  end
302
299
 
@@ -320,16 +317,10 @@ command to remove old versions.
320
317
 
321
318
  #
322
319
  # Oldest version we support downgrading to. This is the version that
323
- # originally ships with the first patch version of each ruby, because we never
324
- # test each ruby against older rubygems, so we can't really guarantee it
325
- # works. Version list can be checked here: https://stdgems.org/rubygems
320
+ # originally ships with the oldest supported patch version of ruby.
326
321
  #
327
322
  def oldest_supported_version
328
323
  @oldest_supported_version ||=
329
- if Gem.ruby_version > Gem::Version.new("3.1.a")
330
- Gem::Version.new("3.3.3")
331
- else
332
- Gem::Version.new("3.2.3")
333
- end
324
+ Gem::Version.new("3.3.3")
334
325
  end
335
326
  end
@@ -47,6 +47,8 @@ class Gem::ConfigFile
47
47
  DEFAULT_CONCURRENT_DOWNLOADS = 8
48
48
  DEFAULT_CERT_EXPIRATION_LENGTH_DAYS = 365
49
49
  DEFAULT_IPV4_FALLBACK_ENABLED = false
50
+ # TODO: Use false as default value for this option in RubyGems 4.0
51
+ DEFAULT_INSTALL_EXTENSION_IN_LIB = true
50
52
 
51
53
  ##
52
54
  # For Ruby packagers to set configuration defaults. Set in
@@ -142,6 +144,11 @@ class Gem::ConfigFile
142
144
 
143
145
  attr_accessor :cert_expiration_length_days
144
146
 
147
+ ##
148
+ # Install extensions into lib as well as into the extension directory.
149
+
150
+ attr_accessor :install_extension_in_lib
151
+
145
152
  ##
146
153
  # == Experimental ==
147
154
  # Fallback to IPv4 when IPv6 is not reachable or slow (default: false)
@@ -183,6 +190,7 @@ class Gem::ConfigFile
183
190
  @update_sources = DEFAULT_UPDATE_SOURCES
184
191
  @concurrent_downloads = DEFAULT_CONCURRENT_DOWNLOADS
185
192
  @cert_expiration_length_days = DEFAULT_CERT_EXPIRATION_LENGTH_DAYS
193
+ @install_extension_in_lib = DEFAULT_INSTALL_EXTENSION_IN_LIB
186
194
  @ipv4_fallback_enabled = ENV["IPV4_FALLBACK_ENABLED"] == "true" || DEFAULT_IPV4_FALLBACK_ENABLED
187
195
 
188
196
  operating_system_config = Marshal.load Marshal.dump(OPERATING_SYSTEM_DEFAULTS)
@@ -202,21 +210,34 @@ class Gem::ConfigFile
202
210
  @hash = @hash.merge environment_config
203
211
  end
204
212
 
213
+ @hash.transform_keys! do |k|
214
+ # gemhome and gempath are not working with symbol keys
215
+ if %w[backtrace bulk_threshold verbose update_sources cert_expiration_length_days
216
+ install_extension_in_lib ipv4_fallback_enabled sources disable_default_gem_server
217
+ ssl_verify_mode ssl_ca_cert ssl_client_cert].include?(k)
218
+ k.to_sym
219
+ else
220
+ k
221
+ end
222
+ end
223
+
205
224
  # HACK: these override command-line args, which is bad
206
225
  @backtrace = @hash[:backtrace] if @hash.key? :backtrace
207
226
  @bulk_threshold = @hash[:bulk_threshold] if @hash.key? :bulk_threshold
208
- @home = @hash[:gemhome] if @hash.key? :gemhome
209
- @path = @hash[:gempath] if @hash.key? :gempath
210
- @update_sources = @hash[:update_sources] if @hash.key? :update_sources
211
227
  @verbose = @hash[:verbose] if @hash.key? :verbose
212
- @disable_default_gem_server = @hash[:disable_default_gem_server] if @hash.key? :disable_default_gem_server
213
- @sources = @hash[:sources] if @hash.key? :sources
228
+ @update_sources = @hash[:update_sources] if @hash.key? :update_sources
229
+ # TODO: We should handle concurrent_downloads same as other options
214
230
  @cert_expiration_length_days = @hash[:cert_expiration_length_days] if @hash.key? :cert_expiration_length_days
231
+ @install_extension_in_lib = @hash[:install_extension_in_lib] if @hash.key? :install_extension_in_lib
215
232
  @ipv4_fallback_enabled = @hash[:ipv4_fallback_enabled] if @hash.key? :ipv4_fallback_enabled
216
233
 
217
- @ssl_verify_mode = @hash[:ssl_verify_mode] if @hash.key? :ssl_verify_mode
218
- @ssl_ca_cert = @hash[:ssl_ca_cert] if @hash.key? :ssl_ca_cert
219
- @ssl_client_cert = @hash[:ssl_client_cert] if @hash.key? :ssl_client_cert
234
+ @home = @hash[:gemhome] if @hash.key? :gemhome
235
+ @path = @hash[:gempath] if @hash.key? :gempath
236
+ @sources = @hash[:sources] if @hash.key? :sources
237
+ @disable_default_gem_server = @hash[:disable_default_gem_server] if @hash.key? :disable_default_gem_server
238
+ @ssl_verify_mode = @hash[:ssl_verify_mode] if @hash.key? :ssl_verify_mode
239
+ @ssl_ca_cert = @hash[:ssl_ca_cert] if @hash.key? :ssl_ca_cert
240
+ @ssl_client_cert = @hash[:ssl_client_cert] if @hash.key? :ssl_client_cert
220
241
 
221
242
  @api_keys = nil
222
243
  @rubygems_api_key = nil
@@ -464,6 +485,9 @@ if you believe they were disclosed to a third party.
464
485
  yaml_hash[:concurrent_downloads] =
465
486
  @hash.fetch(:concurrent_downloads, DEFAULT_CONCURRENT_DOWNLOADS)
466
487
 
488
+ yaml_hash[:install_extension_in_lib] =
489
+ @hash.fetch(:install_extension_in_lib, DEFAULT_INSTALL_EXTENSION_IN_LIB)
490
+
467
491
  yaml_hash[:ssl_verify_mode] =
468
492
  @hash[:ssl_verify_mode] if @hash.key? :ssl_verify_mode
469
493
 
@@ -498,12 +522,12 @@ if you believe they were disclosed to a third party.
498
522
 
499
523
  # Return the configuration information for +key+.
500
524
  def [](key)
501
- @hash[key.to_s]
525
+ @hash[key] || @hash[key.to_s]
502
526
  end
503
527
 
504
528
  # Set configuration option +key+ to +value+.
505
529
  def []=(key, value)
506
- @hash[key.to_s] = value
530
+ @hash[key] = value
507
531
  end
508
532
 
509
533
  def ==(other) # :nodoc:
@@ -531,8 +555,13 @@ if you believe they were disclosed to a third party.
531
555
  require_relative "yaml_serializer"
532
556
 
533
557
  content = Gem::YAMLSerializer.load(yaml)
558
+ deep_transform_config_keys!(content)
559
+ end
534
560
 
535
- content.transform_keys! do |k|
561
+ private
562
+
563
+ def self.deep_transform_config_keys!(config)
564
+ config.transform_keys! do |k|
536
565
  if k.match?(/\A:(.*)\Z/)
537
566
  k[1..-1].to_sym
538
567
  elsif k.include?("__") || k.match?(%r{/\Z})
@@ -546,7 +575,7 @@ if you believe they were disclosed to a third party.
546
575
  end
547
576
  end
548
577
 
549
- content.transform_values! do |v|
578
+ config.transform_values! do |v|
550
579
  if v.is_a?(String)
551
580
  if v.match?(/\A:(.*)\Z/)
552
581
  v[1..-1].to_sym
@@ -559,18 +588,18 @@ if you believe they were disclosed to a third party.
559
588
  else
560
589
  v
561
590
  end
562
- elsif v.is_a?(Hash) && v.empty?
591
+ elsif v.empty?
563
592
  nil
593
+ elsif v.is_a?(Hash)
594
+ deep_transform_config_keys!(v)
564
595
  else
565
596
  v
566
597
  end
567
598
  end
568
599
 
569
- content
600
+ config
570
601
  end
571
602
 
572
- private
573
-
574
603
  def set_config_file_name(args)
575
604
  @config_file_name = ENV["GEMRC"]
576
605
  need_config_file_name = false
@@ -39,7 +39,14 @@ module Kernel
39
39
  RUBYGEMS_ACTIVATION_MONITOR.synchronize do
40
40
  path = File.path(path)
41
41
 
42
- if spec = Gem.find_unresolved_default_spec(path)
42
+ # If +path+ belongs to a default gem, we activate it and then go straight
43
+ # to normal require
44
+
45
+ if spec = Gem.find_default_spec(path)
46
+ name = spec.name
47
+
48
+ next if Gem.loaded_specs[name]
49
+
43
50
  # Ensure -I beats a default gem
44
51
  resolved_path = begin
45
52
  rp = nil
@@ -57,8 +64,13 @@ module Kernel
57
64
  rp
58
65
  end
59
66
 
60
- Kernel.send(:gem, spec.name, Gem::Requirement.default_prerelease) unless
61
- resolved_path
67
+ next if resolved_path
68
+
69
+ Kernel.send(:gem, name, Gem::Requirement.default_prerelease)
70
+
71
+ Gem.load_bundler_extensions(Gem.loaded_specs[name].version) if name == "bundler"
72
+
73
+ next
62
74
  end
63
75
 
64
76
  # If there are no unresolved deps, then we can use just try
@@ -13,11 +13,7 @@ module Kernel
13
13
 
14
14
  module_function define_method(:warn) {|*messages, **kw|
15
15
  unless uplevel = kw[:uplevel]
16
- if Gem.java_platform? && RUBY_VERSION < "3.1"
17
- return original_warn.bind(self).call(*messages)
18
- else
19
- return original_warn.bind(self).call(*messages, **kw)
20
- end
16
+ return original_warn.bind_call(self, *messages, **kw)
21
17
  end
22
18
 
23
19
  # Ensure `uplevel` fits a `long`
@@ -44,6 +40,6 @@ module Kernel
44
40
  kw[:uplevel] = start
45
41
  end
46
42
 
47
- original_warn.bind(self).call(*messages, **kw)
43
+ original_warn.bind_call(self, *messages, **kw)
48
44
  }
49
45
  end
@@ -24,7 +24,7 @@ module Gem
24
24
  default_spec_cache_dir = File.join Gem.user_home, ".gem", "specs"
25
25
 
26
26
  unless File.exist?(default_spec_cache_dir)
27
- default_spec_cache_dir = File.join Gem.data_home, "gem", "specs"
27
+ default_spec_cache_dir = File.join Gem.cache_home, "gem", "specs"
28
28
  end
29
29
 
30
30
  default_spec_cache_dir
@@ -112,7 +112,7 @@ module Gem
112
112
  # The path to standard location of the user's configuration directory.
113
113
 
114
114
  def self.config_home
115
- @config_home ||= (ENV["XDG_CONFIG_HOME"] || File.join(Gem.user_home, ".config"))
115
+ @config_home ||= ENV["XDG_CONFIG_HOME"] || File.join(Gem.user_home, ".config")
116
116
  end
117
117
 
118
118
  ##
@@ -145,21 +145,21 @@ module Gem
145
145
  # The path to standard location of the user's cache directory.
146
146
 
147
147
  def self.cache_home
148
- @cache_home ||= (ENV["XDG_CACHE_HOME"] || File.join(Gem.user_home, ".cache"))
148
+ @cache_home ||= ENV["XDG_CACHE_HOME"] || File.join(Gem.user_home, ".cache")
149
149
  end
150
150
 
151
151
  ##
152
152
  # The path to standard location of the user's data directory.
153
153
 
154
154
  def self.data_home
155
- @data_home ||= (ENV["XDG_DATA_HOME"] || File.join(Gem.user_home, ".local", "share"))
155
+ @data_home ||= ENV["XDG_DATA_HOME"] || File.join(Gem.user_home, ".local", "share")
156
156
  end
157
157
 
158
158
  ##
159
159
  # The path to standard location of the user's state directory.
160
160
 
161
161
  def self.state_home
162
- @state_home ||= (ENV["XDG_STATE_HOME"] || File.join(Gem.user_home, ".local", "state"))
162
+ @state_home ||= ENV["XDG_STATE_HOME"] || File.join(Gem.user_home, ".local", "state")
163
163
  end
164
164
 
165
165
  ##
@@ -239,7 +239,7 @@ module Gem
239
239
  # Enables automatic installation into user directory
240
240
 
241
241
  def self.default_user_install # :nodoc:
242
- if !ENV.key?("GEM_HOME") && (File.exist?(Gem.dir) && !File.writable?(Gem.dir))
242
+ if !ENV.key?("GEM_HOME") && File.exist?(Gem.dir) && !File.writable?(Gem.dir)
243
243
  Gem.ui.say "Defaulting to user installation because default installation directory (#{Gem.dir}) is not writable."
244
244
  return true
245
245
  end
@@ -251,7 +251,7 @@ module Gem
251
251
  # Install extensions into lib as well as into the extension directory.
252
252
 
253
253
  def self.install_extension_in_lib # :nodoc:
254
- true
254
+ Gem.configuration.install_extension_in_lib
255
255
  end
256
256
 
257
257
  ##
@@ -271,15 +271,7 @@ class Gem::Dependency
271
271
  end
272
272
 
273
273
  def matching_specs(platform_only = false)
274
- env_req = Gem.env_requirement(name)
275
- matches = Gem::Specification.stubs_for(name).find_all do |spec|
276
- requirement.satisfied_by?(spec.version) && env_req.satisfied_by?(spec.version)
277
- end.map(&:to_spec)
278
-
279
- if prioritizes_bundler?
280
- require_relative "bundler_version_finder"
281
- Gem::BundlerVersionFinder.prioritize!(matches)
282
- end
274
+ matches = Gem::Specification.find_all_by_name(name, requirement)
283
275
 
284
276
  if platform_only
285
277
  matches.reject! do |spec|
@@ -287,7 +279,7 @@ class Gem::Dependency
287
279
  end
288
280
  end
289
281
 
290
- matches
282
+ matches.reject(&:ignored?)
291
283
  end
292
284
 
293
285
  ##
@@ -297,10 +289,6 @@ class Gem::Dependency
297
289
  @requirement.specific?
298
290
  end
299
291
 
300
- def prioritizes_bundler?
301
- name == "bundler" && !specific?
302
- end
303
-
304
292
  def to_specs
305
293
  matches = matching_specs true
306
294
 
@@ -328,9 +316,9 @@ class Gem::Dependency
328
316
  return active if active
329
317
 
330
318
  unless prerelease?
331
- # Move prereleases to the end of the list for >= 0 requirements
319
+ # Consider prereleases only as a fallback
332
320
  pre, matches = matches.partition {|spec| spec.version.prerelease? }
333
- matches += pre if requirement == Gem::Requirement.default
321
+ matches = pre if matches.empty?
334
322
  end
335
323
 
336
324
  matches.first
@@ -349,4 +337,12 @@ class Gem::Dependency
349
337
  :released
350
338
  end
351
339
  end
340
+
341
+ def encode_with(coder) # :nodoc:
342
+ coder.add "name", @name
343
+ coder.add "requirement", @requirement
344
+ coder.add "type", @type
345
+ coder.add "prerelease", @prerelease
346
+ coder.add "version_requirements", @version_requirements
347
+ end
352
348
  end
@@ -6,7 +6,7 @@
6
6
  # See LICENSE.txt for permissions.
7
7
  #++
8
8
 
9
- require_relative "tsort"
9
+ require_relative "vendored_tsort"
10
10
  require_relative "deprecate"
11
11
 
12
12
  ##