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
data/lib/rubygems.rb CHANGED
@@ -9,7 +9,7 @@
9
9
  require "rbconfig"
10
10
 
11
11
  module Gem
12
- VERSION = "3.5.3"
12
+ VERSION = "3.7.1"
13
13
  end
14
14
 
15
15
  # Must be first since it unloads the prelude from 1.9.2
@@ -18,6 +18,7 @@ require_relative "rubygems/compatibility"
18
18
  require_relative "rubygems/defaults"
19
19
  require_relative "rubygems/deprecate"
20
20
  require_relative "rubygems/errors"
21
+ require_relative "rubygems/target_rbconfig"
21
22
 
22
23
  ##
23
24
  # RubyGems is the Ruby standard for publishing and managing third party
@@ -106,7 +107,7 @@ require_relative "rubygems/errors"
106
107
  #
107
108
  # == License
108
109
  #
109
- # See {LICENSE.txt}[rdoc-ref:lib/rubygems/LICENSE.txt] for permissions.
110
+ # See {LICENSE.txt}[https://github.com/rubygems/rubygems/blob/master/LICENSE.txt] for permissions.
110
111
  #
111
112
  # Thanks!
112
113
  #
@@ -155,6 +156,13 @@ module Gem
155
156
  specifications/default
156
157
  ].freeze
157
158
 
159
+ ##
160
+ # The default value for SOURCE_DATE_EPOCH if not specified.
161
+ # We want a date after 1980-01-01, to prevent issues with Zip files.
162
+ # This particular timestamp is for 1980-01-02 00:00:00 GMT.
163
+
164
+ DEFAULT_SOURCE_DATE_EPOCH = 315_619_200
165
+
158
166
  @@win_platform = nil
159
167
 
160
168
  @configuration = nil
@@ -179,6 +187,8 @@ module Gem
179
187
 
180
188
  @discover_gems_on_require = true
181
189
 
190
+ @target_rbconfig = nil
191
+
182
192
  ##
183
193
  # Try to activate a gem containing +path+. Returns true if
184
194
  # activation succeeded or wasn't needed because it was already
@@ -239,6 +249,16 @@ module Gem
239
249
  find_spec_for_exe(name, exec_name, requirements).bin_file exec_name
240
250
  end
241
251
 
252
+ def self.find_and_activate_spec_for_exe(name, exec_name, requirements)
253
+ spec = find_spec_for_exe name, exec_name, requirements
254
+ Gem::LOADED_SPECS_MUTEX.synchronize do
255
+ spec.activate
256
+ finish_resolve
257
+ end
258
+ spec
259
+ end
260
+ private_class_method :find_and_activate_spec_for_exe
261
+
242
262
  def self.find_spec_for_exe(name, exec_name, requirements)
243
263
  raise ArgumentError, "you must supply exec_name" unless exec_name
244
264
 
@@ -263,6 +283,42 @@ module Gem
263
283
  end
264
284
  private_class_method :find_spec_for_exe
265
285
 
286
+ ##
287
+ # Find and load the full path to the executable for gem +name+. If the
288
+ # +exec_name+ is not given, an exception will be raised, otherwise the
289
+ # specified executable's path is returned. +requirements+ allows
290
+ # you to specify specific gem versions.
291
+ #
292
+ # A side effect of this method is that it will activate the gem that
293
+ # contains the executable.
294
+ #
295
+ # This method should *only* be used in bin stub files.
296
+
297
+ def self.activate_and_load_bin_path(name, exec_name = nil, *requirements)
298
+ spec = find_and_activate_spec_for_exe name, exec_name, requirements
299
+
300
+ if spec.name == "bundler"
301
+ # Old versions of Bundler need a workaround to support nested `bundle
302
+ # exec` invocations by overriding `Gem.activate_bin_path`. However,
303
+ # RubyGems now uses this new `Gem.activate_and_load_bin_path` helper in
304
+ # binstubs, which is of course not overridden in Bundler since it didn't
305
+ # exist at the time. So, include the override here to workaround that.
306
+ load ENV["BUNDLE_BIN_PATH"] if ENV["BUNDLE_BIN_PATH"] && spec.version <= "2.5.22"
307
+
308
+ # Make sure there's no version of Bundler in `$LOAD_PATH` that's different
309
+ # from the version we just activated. If that was the case (it happens
310
+ # when testing Bundler from ruby/ruby), we would load Bundler extensions
311
+ # to RubyGems from the copy in `$LOAD_PATH` but then load the binstub from
312
+ # an installed copy, causing those copies to be mixed and yet more
313
+ # redefinition warnings.
314
+ #
315
+ require_path = $LOAD_PATH.resolve_feature_path("bundler").last.delete_suffix("/bundler.rb")
316
+ Gem.load_bundler_extensions(spec.version) if spec.full_require_paths.include?(require_path)
317
+ end
318
+
319
+ load spec.bin_file(exec_name)
320
+ end
321
+
266
322
  ##
267
323
  # Find the full path to the executable for gem +name+. If the +exec_name+
268
324
  # is not given, an exception will be raised, otherwise the
@@ -275,12 +331,7 @@ module Gem
275
331
  # This method should *only* be used in bin stub files.
276
332
 
277
333
  def self.activate_bin_path(name, exec_name = nil, *requirements) # :nodoc:
278
- spec = find_spec_for_exe name, exec_name, requirements
279
- Gem::LOADED_SPECS_MUTEX.synchronize do
280
- spec.activate
281
- finish_resolve
282
- end
283
- spec.bin_file exec_name
334
+ find_and_activate_spec_for_exe(name, exec_name, requirements).bin_file exec_name
284
335
  end
285
336
 
286
337
  ##
@@ -396,6 +447,23 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
396
447
  paths.spec_cache_dir
397
448
  end
398
449
 
450
+ ##
451
+ # The RbConfig object for the deployment target platform.
452
+ #
453
+ # This is usually the same as the running platform, but may be
454
+ # different if you are cross-compiling.
455
+
456
+ def self.target_rbconfig
457
+ @target_rbconfig || Gem::TargetRbConfig.for_running_ruby
458
+ end
459
+
460
+ def self.set_target_rbconfig(rbconfig_path)
461
+ @target_rbconfig = Gem::TargetRbConfig.from_path(rbconfig_path)
462
+ Gem::Platform.local(refresh: true)
463
+ Gem.platforms << Gem::Platform.local unless Gem.platforms.include? Gem::Platform.local
464
+ @target_rbconfig
465
+ end
466
+
399
467
  ##
400
468
  # Quietly ensure the Gem directory +dir+ contains all the proper
401
469
  # subdirectories. If we can't create a directory due to a permission
@@ -450,7 +518,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
450
518
  # distinction as extensions cannot be shared between the two.
451
519
 
452
520
  def self.extension_api_version # :nodoc:
453
- if RbConfig::CONFIG["ENABLE_SHARED"] == "no"
521
+ if target_rbconfig["ENABLE_SHARED"] == "no"
454
522
  "#{ruby_api_version}-static"
455
523
  else
456
524
  ruby_api_version
@@ -476,9 +544,9 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
476
544
 
477
545
  gem_specifications = @gemdeps ? Gem.loaded_specs.values : Gem::Specification.stubs
478
546
 
479
- files.concat gem_specifications.map {|spec|
547
+ files.concat gem_specifications.flat_map {|spec|
480
548
  spec.matches_for_glob("#{glob}#{Gem.suffix_pattern}")
481
- }.flatten
549
+ }
482
550
 
483
551
  # $LOAD_PATH might contain duplicate entries or reference
484
552
  # the spec dirs directly, so we prune.
@@ -489,9 +557,9 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
489
557
 
490
558
  def self.find_files_from_load_path(glob) # :nodoc:
491
559
  glob_with_suffixes = "#{glob}#{Gem.suffix_pattern}"
492
- $LOAD_PATH.map do |load_path|
560
+ $LOAD_PATH.flat_map do |load_path|
493
561
  Gem::Util.glob_files_in_dir(glob_with_suffixes, load_path)
494
- end.flatten.select {|file| File.file? file }
562
+ end.select {|file| File.file? file }
495
563
  end
496
564
 
497
565
  ##
@@ -511,9 +579,9 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
511
579
 
512
580
  files = find_files_from_load_path glob if check_load_path
513
581
 
514
- files.concat Gem::Specification.latest_specs(true).map {|spec|
582
+ files.concat Gem::Specification.latest_specs(true).flat_map {|spec|
515
583
  spec.matches_for_glob("#{glob}#{Gem.suffix_pattern}")
516
- }.flatten
584
+ }
517
585
 
518
586
  # $LOAD_PATH might contain duplicate entries or reference
519
587
  # the spec dirs directly, so we prune.
@@ -609,6 +677,30 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
609
677
  @safe_marshal_loaded = true
610
678
  end
611
679
 
680
+ ##
681
+ # Load Bundler extensions to RubyGems, making sure to avoid redefinition
682
+ # warnings in platform constants
683
+
684
+ def self.load_bundler_extensions(version)
685
+ return unless version <= "2.6.9"
686
+
687
+ previous_platforms = {}
688
+
689
+ platform_const_list = ["JAVA", "MSWIN", "MSWIN64", "MINGW", "X64_MINGW_LEGACY", "X64_MINGW", "UNIVERSAL_MINGW", "WINDOWS", "X64_LINUX", "X64_LINUX_MUSL"]
690
+
691
+ platform_const_list.each do |platform|
692
+ previous_platforms[platform] = Gem::Platform.const_get(platform)
693
+ Gem::Platform.send(:remove_const, platform)
694
+ end
695
+
696
+ require "bundler/rubygems_ext"
697
+
698
+ platform_const_list.each do |platform|
699
+ Gem::Platform.send(:remove_const, platform) if Gem::Platform.const_defined?(platform)
700
+ Gem::Platform.const_set(platform, previous_platforms[platform])
701
+ end
702
+ end
703
+
612
704
  ##
613
705
  # The file name and line number of the caller of the caller of this method.
614
706
  #
@@ -753,17 +845,14 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
753
845
  # Safely read a file in binary mode on all platforms.
754
846
 
755
847
  def self.read_binary(path)
756
- open_file(path, "rb+", &:read)
757
- rescue Errno::EACCES, Errno::EROFS
758
- open_file(path, "rb", &:read)
848
+ File.binread(path)
759
849
  end
760
850
 
761
851
  ##
762
852
  # Safely write a file in binary mode on all platforms.
853
+
763
854
  def self.write_binary(path, data)
764
- open_file(path, "wb") do |io|
765
- io.write data
766
- end
855
+ File.binwrite(path, data)
767
856
  rescue Errno::ENOSPC
768
857
  # If we ran out of space but the file exists, it's *guaranteed* to be corrupted.
769
858
  File.delete(path) if File.exist?(path)
@@ -771,26 +860,45 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
771
860
  end
772
861
 
773
862
  ##
774
- # Open a file with given flags, and on Windows protect access with flock
863
+ # Open a file with given flags
775
864
 
776
865
  def self.open_file(path, flags, &block)
777
- File.open(path, flags) do |io|
778
- if !java_platform? && win_platform?
779
- begin
866
+ File.open(path, flags, &block)
867
+ end
868
+
869
+ ##
870
+ # Open a file with given flags, and protect access with a file lock
871
+
872
+ def self.open_file_with_lock(path, &block)
873
+ file_lock = "#{path}.lock"
874
+ open_file_with_flock(file_lock, &block)
875
+ ensure
876
+ require "fileutils"
877
+ FileUtils.rm_f file_lock
878
+ end
879
+
880
+ ##
881
+ # Open a file with given flags, and protect access with flock
882
+
883
+ def self.open_file_with_flock(path, &block)
884
+ # read-write mode is used rather than read-only in order to support NFS
885
+ mode = IO::RDWR | IO::APPEND | IO::CREAT | IO::BINARY
886
+ mode |= IO::SHARE_DELETE if IO.const_defined?(:SHARE_DELETE)
887
+
888
+ File.open(path, mode) do |io|
889
+ begin
890
+ # Try to get a lock without blocking.
891
+ # If we do, the file is locked.
892
+ # Otherwise, explain why we're waiting and get a lock, but block this time.
893
+ if io.flock(File::LOCK_EX | File::LOCK_NB) != 0
894
+ warn "Waiting for another process to let go of lock: #{path}"
780
895
  io.flock(File::LOCK_EX)
781
- rescue Errno::ENOSYS, Errno::ENOTSUP
782
896
  end
897
+ io.puts(Process.pid)
898
+ rescue Errno::ENOSYS, Errno::ENOTSUP
783
899
  end
784
900
  yield io
785
901
  end
786
- rescue Errno::ENOLCK # NFS
787
- if Thread.main != Thread.current
788
- raise
789
- else
790
- File.open(path, flags) do |io|
791
- yield io
792
- end
793
- end
794
902
  end
795
903
 
796
904
  ##
@@ -810,7 +918,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
810
918
  # Returns a String containing the API compatibility version of Ruby
811
919
 
812
920
  def self.ruby_api_version
813
- @ruby_api_version ||= RbConfig::CONFIG["ruby_version"].dup
921
+ @ruby_api_version ||= target_rbconfig["ruby_version"].dup
814
922
  end
815
923
 
816
924
  def self.env_requirement(gem_name)
@@ -1012,6 +1120,13 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1012
1120
  RUBY_PLATFORM.include?("solaris")
1013
1121
  end
1014
1122
 
1123
+ ##
1124
+ # Is this platform FreeBSD
1125
+
1126
+ def self.freebsd_platform?
1127
+ RbConfig::CONFIG["host_os"].to_s.include?("bsd")
1128
+ end
1129
+
1015
1130
  ##
1016
1131
  # Load +plugins+ as Ruby files
1017
1132
 
@@ -1112,8 +1227,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1112
1227
 
1113
1228
  ##
1114
1229
  # If the SOURCE_DATE_EPOCH environment variable is set, returns it's value.
1115
- # Otherwise, returns the time that +Gem.source_date_epoch_string+ was
1116
- # first called in the same format as SOURCE_DATE_EPOCH.
1230
+ # Otherwise, returns DEFAULT_SOURCE_DATE_EPOCH as a string.
1117
1231
  #
1118
1232
  # NOTE(@duckinator): The implementation is a tad weird because we want to:
1119
1233
  # 1. Make builds reproducible by default, by having this function always
@@ -1128,15 +1242,12 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1128
1242
  # https://reproducible-builds.org/specs/source-date-epoch/
1129
1243
 
1130
1244
  def self.source_date_epoch_string
1131
- # The value used if $SOURCE_DATE_EPOCH is not set.
1132
- @default_source_date_epoch ||= Time.now.to_i.to_s
1133
-
1134
1245
  specified_epoch = ENV["SOURCE_DATE_EPOCH"]
1135
1246
 
1136
1247
  # If it's empty or just whitespace, treat it like it wasn't set at all.
1137
1248
  specified_epoch = nil if !specified_epoch.nil? && specified_epoch.strip.empty?
1138
1249
 
1139
- epoch = specified_epoch || @default_source_date_epoch
1250
+ epoch = specified_epoch || DEFAULT_SOURCE_DATE_EPOCH.to_s
1140
1251
 
1141
1252
  epoch.strip
1142
1253
  end
@@ -1216,9 +1327,16 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1216
1327
  ##
1217
1328
  # Find a Gem::Specification of default gem from +path+
1218
1329
 
1330
+ def find_default_spec(path)
1331
+ @path_to_default_spec_map[path]
1332
+ end
1333
+
1334
+ ##
1335
+ # Find an unresolved Gem::Specification of default gem from +path+
1336
+
1219
1337
  def find_unresolved_default_spec(path)
1220
1338
  default_spec = @path_to_default_spec_map[path]
1221
- return default_spec if default_spec && loaded_specs[default_spec.name] != default_spec
1339
+ default_spec if default_spec && loaded_specs[default_spec.name] != default_spec
1222
1340
  end
1223
1341
 
1224
1342
  ##
@@ -1344,17 +1462,6 @@ begin
1344
1462
  rescue LoadError
1345
1463
  end
1346
1464
 
1347
- # TruffleRuby >= 24 defines REUSE_AS_BINARY_ON_TRUFFLERUBY in defaults/truffleruby.
1348
- # However, TruffleRuby < 24 defines REUSE_AS_BINARY_ON_TRUFFLERUBY directly in its copy
1349
- # of lib/rubygems/platform.rb, so it is not defined if RubyGems is updated (gem update --system).
1350
- # Instead, we define it here in that case, similar to bundler/lib/bundler/rubygems_ext.rb.
1351
- # We must define it here and not in platform.rb because platform.rb is loaded before defaults/truffleruby.
1352
- class Gem::Platform
1353
- if RUBY_ENGINE == "truffleruby" && !defined?(REUSE_AS_BINARY_ON_TRUFFLERUBY)
1354
- REUSE_AS_BINARY_ON_TRUFFLERUBY = %w[libv8 libv8-node sorbet-static].freeze
1355
- end
1356
- end
1357
-
1358
1465
  ##
1359
1466
  # Loads the default specs.
1360
1467
  Gem::Specification.load_defaults
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "rubygems-update"
5
- s.version = "3.5.3"
5
+ s.version = "3.7.1"
6
6
  s.authors = ["Jim Weirich", "Chad Fowler", "Eric Hodel", "Luis Lavena", "Aaron Patterson", "Samuel Giddins", "André Arko", "Evan Phoenix", "Hiroshi SHIBATA"]
7
7
  s.email = ["", "", "drbrain@segment7.net", "luislavena@gmail.com", "aaron@tenderlovemaking.com", "segiddins@segiddins.me", "andre@arko.net", "evan@phx.io", "hsbt@ruby-lang.org"]
8
8
 
@@ -14,7 +14,12 @@ Gem::Specification.new do |s|
14
14
  repository of Gems that allows you to publish a Gem that can be shared and used by other
15
15
  developers. See our guide on publishing a Gem at guides.rubygems.org"
16
16
  s.homepage = "https://guides.rubygems.org"
17
- s.metadata = { "source_code_uri" => "https://github.com/rubygems/rubygems" }
17
+ s.metadata = {
18
+ "source_code_uri" => "https://github.com/rubygems/rubygems",
19
+ "bug_tracker_uri" => "https://github.com/rubygems/rubygems/issues",
20
+ "changelog_uri" => "https://github.com/rubygems/rubygems/blob/master/CHANGELOG.md",
21
+ "funding_uri" => "https://rubycentral.org/#/portal/signup",
22
+ }
18
23
  s.licenses = ["Ruby", "MIT"]
19
24
 
20
25
  s.files = File.read(File.expand_path("Manifest.txt", __dir__)).split
@@ -23,15 +28,15 @@ Gem::Specification.new do |s|
23
28
  s.require_paths = ["hide_lib_for_update"]
24
29
  s.rdoc_options = ["--main", "README.md", "--title=RubyGems Update Documentation"]
25
30
  s.extra_rdoc_files = [
26
- "LICENSE.txt", "MAINTAINERS.txt",
31
+ "LICENSE.txt", "doc/MAINTAINERS.txt",
27
32
  "MIT.txt", "Manifest.txt", "README.md",
28
- "UPGRADING.md", "POLICIES.md", "CODE_OF_CONDUCT.md",
29
- "CONTRIBUTING.md",
33
+ "doc/rubygems/UPGRADING.md", "doc/rubygems/POLICIES.md", "CODE_OF_CONDUCT.md",
34
+ "doc/rubygems/CONTRIBUTING.md",
30
35
  "bundler/LICENSE.md", "bundler/README.md",
31
36
  "hide_lib_for_update/note.txt", *Dir["bundler/lib/bundler/man/*.1", base: __dir__]
32
37
  ]
33
38
 
34
- s.required_ruby_version = Gem::Requirement.new(">= 3.0.0")
39
+ s.required_ruby_version = Gem::Requirement.new(">= 3.2.0")
35
40
  s.required_rubygems_version = Gem::Requirement.new(">= 0")
36
41
 
37
42
  s.specification_version = 4
data/setup.rb CHANGED
@@ -7,7 +7,7 @@
7
7
  # See LICENSE.txt for permissions.
8
8
  #++
9
9
 
10
- abort "RubyGems only supports Ruby 3.0 or higher" if RUBY_VERSION < "3.0.0"
10
+ abort "RubyGems only supports Ruby 3.2 or higher" if RUBY_VERSION < "3.2.0"
11
11
 
12
12
  # Make sure rubygems isn't already loaded.
13
13
  if ENV["RUBYOPT"] || defined? Gem