rubygems-update 3.3.26 → 3.4.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (292) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1178 -1088
  3. data/CONTRIBUTING.md +30 -7
  4. data/Manifest.txt +35 -32
  5. data/POLICIES.md +10 -8
  6. data/README.md +2 -2
  7. data/bin/gem +1 -4
  8. data/bin/update_rubygems +1 -1
  9. data/bundler/CHANGELOG.md +122 -1
  10. data/bundler/README.md +2 -2
  11. data/bundler/UPGRADING.md +1 -1
  12. data/bundler/bundler.gemspec +2 -2
  13. data/bundler/exe/bundle +1 -4
  14. data/bundler/lib/bundler/build_metadata.rb +2 -2
  15. data/bundler/lib/bundler/cli/add.rb +1 -1
  16. data/bundler/lib/bundler/cli/binstubs.rb +5 -1
  17. data/bundler/lib/bundler/cli/check.rb +1 -1
  18. data/bundler/lib/bundler/cli/common.rb +1 -0
  19. data/bundler/lib/bundler/cli/console.rb +2 -2
  20. data/bundler/lib/bundler/cli/doctor.rb +4 -6
  21. data/bundler/lib/bundler/cli/gem.rb +62 -40
  22. data/bundler/lib/bundler/cli/install.rb +2 -3
  23. data/bundler/lib/bundler/cli/lock.rb +8 -5
  24. data/bundler/lib/bundler/cli/open.rb +6 -4
  25. data/bundler/lib/bundler/cli/outdated.rb +1 -3
  26. data/bundler/lib/bundler/cli/viz.rb +1 -1
  27. data/bundler/lib/bundler/cli.rb +44 -2
  28. data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
  29. data/bundler/lib/bundler/compact_index_client/updater.rb +40 -39
  30. data/bundler/lib/bundler/constants.rb +1 -1
  31. data/bundler/lib/bundler/definition.rb +87 -51
  32. data/bundler/lib/bundler/dependency.rb +12 -11
  33. data/bundler/lib/bundler/digest.rb +1 -1
  34. data/bundler/lib/bundler/dsl.rb +3 -3
  35. data/bundler/lib/bundler/env.rb +1 -1
  36. data/bundler/lib/bundler/environment_preserver.rb +1 -0
  37. data/bundler/lib/bundler/errors.rb +1 -11
  38. data/bundler/lib/bundler/fetcher/compact_index.rb +9 -11
  39. data/bundler/lib/bundler/fetcher/dependency.rb +1 -1
  40. data/bundler/lib/bundler/fetcher/downloader.rb +2 -5
  41. data/bundler/lib/bundler/fetcher.rb +2 -6
  42. data/bundler/lib/bundler/force_platform.rb +18 -0
  43. data/bundler/lib/bundler/friendly_errors.rb +0 -3
  44. data/bundler/lib/bundler/gem_version_promoter.rb +52 -86
  45. data/bundler/lib/bundler/graph.rb +3 -3
  46. data/bundler/lib/bundler/index.rb +5 -13
  47. data/bundler/lib/bundler/injector.rb +1 -1
  48. data/bundler/lib/bundler/inline.rb +8 -10
  49. data/bundler/lib/bundler/installer/parallel_installer.rb +0 -31
  50. data/bundler/lib/bundler/installer/standalone.rb +11 -7
  51. data/bundler/lib/bundler/installer.rb +9 -23
  52. data/bundler/lib/bundler/lazy_specification.rb +37 -33
  53. data/bundler/lib/bundler/lockfile_parser.rb +5 -5
  54. data/bundler/lib/bundler/man/bundle-add.1 +1 -1
  55. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  56. data/bundler/lib/bundler/man/bundle-cache.1 +1 -1
  57. data/bundler/lib/bundler/man/bundle-check.1 +1 -1
  58. data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
  59. data/bundler/lib/bundler/man/bundle-config.1 +2 -2
  60. data/bundler/lib/bundler/man/bundle-config.1.ronn +1 -1
  61. data/bundler/lib/bundler/man/bundle-console.1 +1 -1
  62. data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
  63. data/bundler/lib/bundler/man/bundle-exec.1 +5 -5
  64. data/bundler/lib/bundler/man/bundle-exec.1.ronn +5 -5
  65. data/bundler/lib/bundler/man/bundle-gem.1 +27 -37
  66. data/bundler/lib/bundler/man/bundle-gem.1.ronn +5 -5
  67. data/bundler/lib/bundler/man/bundle-help.1 +1 -1
  68. data/bundler/lib/bundler/man/bundle-info.1 +1 -1
  69. data/bundler/lib/bundler/man/bundle-init.1 +1 -1
  70. data/bundler/lib/bundler/man/bundle-inject.1 +1 -1
  71. data/bundler/lib/bundler/man/bundle-install.1 +1 -30
  72. data/bundler/lib/bundler/man/bundle-install.1.ronn +0 -29
  73. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  74. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  75. data/bundler/lib/bundler/man/bundle-open.1 +22 -2
  76. data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
  77. data/bundler/lib/bundler/man/bundle-outdated.1 +1 -1
  78. data/bundler/lib/bundler/man/bundle-platform.1 +2 -2
  79. data/bundler/lib/bundler/man/bundle-platform.1.ronn +1 -1
  80. data/bundler/lib/bundler/man/bundle-plugin.1 +1 -1
  81. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  82. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  83. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  84. data/bundler/lib/bundler/man/bundle-update.1 +1 -1
  85. data/bundler/lib/bundler/man/bundle-version.1 +1 -1
  86. data/bundler/lib/bundler/man/bundle-viz.1 +1 -1
  87. data/bundler/lib/bundler/man/bundle.1 +1 -1
  88. data/bundler/lib/bundler/man/gemfile.5 +1 -1
  89. data/bundler/lib/bundler/mirror.rb +5 -7
  90. data/bundler/lib/bundler/plugin/index.rb +4 -4
  91. data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -4
  92. data/bundler/lib/bundler/resolver/base.rb +42 -15
  93. data/bundler/lib/bundler/resolver/candidate.rb +94 -0
  94. data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
  95. data/bundler/lib/bundler/resolver/package.rb +72 -0
  96. data/bundler/lib/bundler/resolver/root.rb +25 -0
  97. data/bundler/lib/bundler/resolver/spec_group.rb +26 -36
  98. data/bundler/lib/bundler/resolver.rb +314 -278
  99. data/bundler/lib/bundler/rubygems_ext.rb +11 -6
  100. data/bundler/lib/bundler/rubygems_gem_installer.rb +4 -2
  101. data/bundler/lib/bundler/rubygems_integration.rb +9 -13
  102. data/bundler/lib/bundler/runtime.rb +1 -5
  103. data/bundler/lib/bundler/settings.rb +0 -6
  104. data/bundler/lib/bundler/shared_helpers.rb +1 -0
  105. data/bundler/lib/bundler/source/git/git_proxy.rb +193 -67
  106. data/bundler/lib/bundler/source/git.rb +15 -17
  107. data/bundler/lib/bundler/source/metadata.rb +0 -1
  108. data/bundler/lib/bundler/source/path/installer.rb +1 -22
  109. data/bundler/lib/bundler/source/path.rb +5 -5
  110. data/bundler/lib/bundler/source/rubygems.rb +14 -68
  111. data/bundler/lib/bundler/source_list.rb +8 -2
  112. data/bundler/lib/bundler/spec_set.rb +7 -9
  113. data/bundler/lib/bundler/templates/Executable +1 -1
  114. data/bundler/lib/bundler/templates/Executable.bundler +4 -9
  115. data/bundler/lib/bundler/templates/Executable.standalone +2 -0
  116. data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  117. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +3 -0
  118. data/bundler/lib/bundler/templates/newgem/README.md.tt +6 -4
  119. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +2 -1
  120. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
  121. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  122. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  123. data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  124. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +10 -0
  125. data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
  126. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +8 -0
  127. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -2
  128. data/bundler/lib/bundler/ui/shell.rb +35 -12
  129. data/bundler/lib/bundler/ui/silent.rb +21 -5
  130. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
  131. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
  132. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
  133. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1350 -408
  134. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
  135. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
  136. data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  137. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  138. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  139. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  140. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +151 -0
  141. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  142. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  143. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  144. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  145. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +53 -0
  146. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  147. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  148. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +128 -0
  149. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +409 -0
  150. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +240 -0
  151. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  152. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  153. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +1 -1
  154. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +64 -16
  155. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
  156. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -1
  157. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +27 -7
  158. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -2
  159. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -1
  160. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
  161. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
  162. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -2
  163. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +13 -7
  164. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +10 -5
  165. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  166. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +1 -2
  167. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +2 -1
  168. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -2
  169. data/bundler/lib/bundler/vendored_persistent.rb +1 -33
  170. data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
  171. data/bundler/lib/bundler/version.rb +5 -1
  172. data/bundler/lib/bundler/worker.rb +5 -7
  173. data/bundler/lib/bundler.rb +20 -64
  174. data/lib/rubygems/command.rb +5 -1
  175. data/lib/rubygems/command_manager.rb +19 -6
  176. data/lib/rubygems/commands/build_command.rb +3 -0
  177. data/lib/rubygems/commands/fetch_command.rb +1 -1
  178. data/lib/rubygems/commands/install_command.rb +7 -3
  179. data/lib/rubygems/commands/owner_command.rb +1 -1
  180. data/lib/rubygems/commands/rdoc_command.rb +3 -2
  181. data/lib/rubygems/commands/setup_command.rb +2 -2
  182. data/lib/rubygems/commands/unpack_command.rb +1 -1
  183. data/lib/rubygems/commands/update_command.rb +1 -7
  184. data/lib/rubygems/config_file.rb +33 -0
  185. data/lib/rubygems/core_ext/kernel_gem.rb +0 -5
  186. data/lib/rubygems/core_ext/kernel_require.rb +116 -113
  187. data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
  188. data/lib/rubygems/defaults.rb +15 -1
  189. data/lib/rubygems/dependency.rb +4 -1
  190. data/lib/rubygems/dependency_installer.rb +24 -24
  191. data/lib/rubygems/exceptions.rb +1 -3
  192. data/lib/rubygems/ext/builder.rb +4 -5
  193. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +9 -5
  194. data/lib/rubygems/ext/cargo_builder.rb +144 -109
  195. data/lib/rubygems/ext/ext_conf_builder.rb +2 -0
  196. data/lib/rubygems/indexer.rb +1 -1
  197. data/lib/rubygems/installer.rb +5 -5
  198. data/lib/rubygems/optparse/lib/optparse.rb +20 -15
  199. data/lib/rubygems/package/tar_header.rb +11 -11
  200. data/lib/rubygems/platform.rb +1 -3
  201. data/lib/rubygems/request_set/gem_dependency_api.rb +104 -104
  202. data/lib/rubygems/requirement.rb +7 -7
  203. data/lib/rubygems/resolver/installer_set.rb +1 -1
  204. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +1 -1
  205. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
  206. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  207. data/lib/rubygems/security/policies.rb +40 -40
  208. data/lib/rubygems/security/trust_dir.rb +1 -1
  209. data/lib/rubygems/security.rb +3 -16
  210. data/lib/rubygems/source.rb +2 -2
  211. data/lib/rubygems/specification.rb +37 -49
  212. data/lib/rubygems/specification_policy.rb +14 -0
  213. data/lib/rubygems/stub_specification.rb +2 -2
  214. data/lib/rubygems/text.rb +1 -1
  215. data/lib/rubygems/tsort/lib/tsort.rb +308 -310
  216. data/lib/rubygems/update_suggestion.rb +69 -0
  217. data/lib/rubygems/util.rb +1 -5
  218. data/lib/rubygems/validator.rb +1 -1
  219. data/lib/rubygems.rb +29 -9
  220. data/rubygems-update.gemspec +2 -2
  221. data/test/rubygems/bundler_test_gem.rb +419 -0
  222. data/test/rubygems/helper.rb +7 -3
  223. data/test/rubygems/test_bundled_ca.rb +1 -1
  224. data/test/rubygems/test_exit.rb +6 -0
  225. data/test/rubygems/test_gem.rb +4 -421
  226. data/test/rubygems/test_gem_bundler_version_finder.rb +2 -1
  227. data/test/rubygems/test_gem_command_manager.rb +41 -1
  228. data/test/rubygems/test_gem_commands_build_command.rb +10 -0
  229. data/test/rubygems/test_gem_commands_install_command.rb +19 -0
  230. data/test/rubygems/test_gem_commands_setup_command.rb +1 -8
  231. data/test/rubygems/test_gem_commands_update_command.rb +6 -6
  232. data/test/rubygems/test_gem_config_file.rb +1 -1
  233. data/test/rubygems/test_gem_dependency.rb +2 -0
  234. data/test/rubygems/test_gem_ext_builder.rb +3 -3
  235. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +2 -4
  236. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.lock → ext/custom_name_lib/Cargo.lock} +22 -32
  237. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.toml → ext/custom_name_lib/Cargo.toml} +1 -1
  238. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{src → ext/custom_name_lib/src}/lib.rs +1 -1
  239. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +1 -0
  240. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +22 -32
  241. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
  242. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +12 -0
  243. data/test/rubygems/test_gem_ext_cargo_builder.rb +30 -42
  244. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +16 -16
  245. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +5 -20
  246. data/test/rubygems/test_gem_indexer.rb +39 -20
  247. data/test/rubygems/test_gem_installer.rb +69 -3
  248. data/test/rubygems/test_gem_package_tar_header.rb +13 -13
  249. data/test/rubygems/test_gem_platform.rb +59 -60
  250. data/test/rubygems/test_gem_remote_fetcher.rb +4 -4
  251. data/test/rubygems/test_gem_request_set.rb +2 -2
  252. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +4 -4
  253. data/test/rubygems/test_gem_requirement.rb +1 -1
  254. data/test/rubygems/test_gem_resolver_api_set.rb +12 -12
  255. data/test/rubygems/test_gem_resolver_api_specification.rb +19 -19
  256. data/test/rubygems/test_gem_resolver_git_specification.rb +1 -1
  257. data/test/rubygems/test_gem_security_policy.rb +10 -10
  258. data/test/rubygems/test_gem_security_trust_dir.rb +2 -2
  259. data/test/rubygems/test_gem_specification.rb +50 -37
  260. data/test/rubygems/test_gem_uninstaller.rb +1 -1
  261. data/test/rubygems/test_gem_update_suggestion.rb +208 -0
  262. data/test/rubygems/test_kernel.rb +10 -8
  263. data/test/rubygems/test_require.rb +69 -55
  264. metadata +39 -36
  265. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
  266. data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
  267. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  268. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
  269. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
  270. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
  271. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
  272. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
  273. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
  274. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
  275. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
  276. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
  277. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
  278. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
  279. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -149
  280. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  281. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
  282. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
  283. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
  284. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
  285. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
  286. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
  287. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
  288. data/bundler/lib/bundler/vendored_molinillo.rb +0 -4
  289. data/bundler/lib/bundler/version_ranges.rb +0 -122
  290. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +0 -21
  291. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +0 -21
  292. /data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +0 -0
@@ -13,12 +13,12 @@ module Kernel
13
13
 
14
14
  # Make sure we have a reference to Ruby's original Kernel#require
15
15
  unless defined?(gem_original_require)
16
+ # :stopdoc:
16
17
  alias gem_original_require require
17
18
  private :gem_original_require
19
+ # :startdoc:
18
20
  end
19
21
 
20
- file = Gem::KERNEL_WARN_IGNORES_INTERNAL_ENTRIES ? "<internal:#{__FILE__}>" : __FILE__
21
- module_eval <<'RUBY', file, __LINE__ + 1 # rubocop:disable Style/EvalWithLocation
22
22
  ##
23
23
  # When RubyGems is required, Kernel#require is replaced with our own which
24
24
  # is capable of loading gems on demand.
@@ -33,142 +33,145 @@ module Kernel
33
33
  # The normal <tt>require</tt> functionality of returning false if
34
34
  # that file has already been loaded is preserved.
35
35
 
36
- def require(path)
37
- if RUBYGEMS_ACTIVATION_MONITOR.respond_to?(:mon_owned?)
38
- monitor_owned = RUBYGEMS_ACTIVATION_MONITOR.mon_owned?
39
- end
40
- RUBYGEMS_ACTIVATION_MONITOR.enter
41
-
42
- path = path.to_path if path.respond_to? :to_path
43
-
44
- if spec = Gem.find_unresolved_default_spec(path)
45
- # Ensure -I beats a default gem
46
- resolved_path = begin
47
- rp = nil
48
- load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths
49
- Gem.suffixes.each do |s|
50
- $LOAD_PATH[0...load_path_check_index].each do |lp|
51
- safe_lp = lp.dup.tap(&Gem::UNTAINT)
52
- begin
53
- if File.symlink? safe_lp # for backward compatibility
54
- next
36
+ def require(path) # :doc:
37
+ return gem_original_require(path) unless Gem.discover_gems_on_require
38
+
39
+ begin
40
+ if RUBYGEMS_ACTIVATION_MONITOR.respond_to?(:mon_owned?)
41
+ monitor_owned = RUBYGEMS_ACTIVATION_MONITOR.mon_owned?
42
+ end
43
+ RUBYGEMS_ACTIVATION_MONITOR.enter
44
+
45
+ path = path.to_path if path.respond_to? :to_path
46
+
47
+ if spec = Gem.find_unresolved_default_spec(path)
48
+ # Ensure -I beats a default gem
49
+ resolved_path = begin
50
+ rp = nil
51
+ load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths
52
+ Gem.suffixes.each do |s|
53
+ $LOAD_PATH[0...load_path_check_index].each do |lp|
54
+ safe_lp = lp.dup.tap(&Gem::UNTAINT)
55
+ begin
56
+ if File.symlink? safe_lp # for backward compatibility
57
+ next
58
+ end
59
+ rescue SecurityError
60
+ RUBYGEMS_ACTIVATION_MONITOR.exit
61
+ raise
55
62
  end
56
- rescue SecurityError
57
- RUBYGEMS_ACTIVATION_MONITOR.exit
58
- raise
59
- end
60
63
 
61
- full_path = File.expand_path(File.join(safe_lp, "#{path}#{s}"))
62
- if File.file?(full_path)
63
- rp = full_path
64
- break
64
+ full_path = File.expand_path(File.join(safe_lp, "#{path}#{s}"))
65
+ if File.file?(full_path)
66
+ rp = full_path
67
+ break
68
+ end
65
69
  end
70
+ break if rp
66
71
  end
67
- break if rp
72
+ rp
68
73
  end
69
- rp
70
- end
71
-
72
- begin
73
- Kernel.send(:gem, spec.name, Gem::Requirement.default_prerelease)
74
- rescue Exception
75
- RUBYGEMS_ACTIVATION_MONITOR.exit
76
- raise
77
- end unless resolved_path
78
- end
79
-
80
- # If there are no unresolved deps, then we can use just try
81
- # normal require handle loading a gem from the rescue below.
82
-
83
- if Gem::Specification.unresolved_deps.empty?
84
- RUBYGEMS_ACTIVATION_MONITOR.exit
85
- return gem_original_require(path)
86
- end
87
-
88
- # If +path+ is for a gem that has already been loaded, don't
89
- # bother trying to find it in an unresolved gem, just go straight
90
- # to normal require.
91
- #--
92
- # TODO request access to the C implementation of this to speed up RubyGems
93
-
94
- if Gem::Specification.find_active_stub_by_path(path)
95
- RUBYGEMS_ACTIVATION_MONITOR.exit
96
- return gem_original_require(path)
97
- end
98
74
 
99
- # Attempt to find +path+ in any unresolved gems...
100
-
101
- found_specs = Gem::Specification.find_in_unresolved path
102
-
103
- # If there are no directly unresolved gems, then try and find +path+
104
- # in any gems that are available via the currently unresolved gems.
105
- # For example, given:
106
- #
107
- # a => b => c => d
108
- #
109
- # If a and b are currently active with c being unresolved and d.rb is
110
- # requested, then find_in_unresolved_tree will find d.rb in d because
111
- # it's a dependency of c.
112
- #
113
- if found_specs.empty?
114
- found_specs = Gem::Specification.find_in_unresolved_tree path
115
-
116
- found_specs.each do |found_spec|
117
- found_spec.activate
75
+ begin
76
+ Kernel.send(:gem, spec.name, Gem::Requirement.default_prerelease)
77
+ rescue Exception
78
+ RUBYGEMS_ACTIVATION_MONITOR.exit
79
+ raise
80
+ end unless resolved_path
118
81
  end
119
82
 
120
- # We found +path+ directly in an unresolved gem. Now we figure out, of
121
- # the possible found specs, which one we should activate.
122
- else
123
-
124
- # Check that all the found specs are just different
125
- # versions of the same gem
126
- names = found_specs.map(&:name).uniq
83
+ # If there are no unresolved deps, then we can use just try
84
+ # normal require handle loading a gem from the rescue below.
127
85
 
128
- if names.size > 1
86
+ if Gem::Specification.unresolved_deps.empty?
129
87
  RUBYGEMS_ACTIVATION_MONITOR.exit
130
- raise Gem::LoadError, "#{path} found in multiple gems: #{names.join ', '}"
88
+ return gem_original_require(path)
131
89
  end
132
90
 
133
- # Ok, now find a gem that has no conflicts, starting
134
- # at the highest version.
135
- valid = found_specs.find {|s| !s.has_conflicts? }
91
+ # If +path+ is for a gem that has already been loaded, don't
92
+ # bother trying to find it in an unresolved gem, just go straight
93
+ # to normal require.
94
+ #--
95
+ # TODO request access to the C implementation of this to speed up RubyGems
136
96
 
137
- unless valid
138
- le = Gem::LoadError.new "unable to find a version of '#{names.first}' to activate"
139
- le.name = names.first
97
+ if Gem::Specification.find_active_stub_by_path(path)
140
98
  RUBYGEMS_ACTIVATION_MONITOR.exit
141
- raise le
99
+ return gem_original_require(path)
142
100
  end
143
101
 
144
- valid.activate
145
- end
102
+ # Attempt to find +path+ in any unresolved gems...
103
+
104
+ found_specs = Gem::Specification.find_in_unresolved path
105
+
106
+ # If there are no directly unresolved gems, then try and find +path+
107
+ # in any gems that are available via the currently unresolved gems.
108
+ # For example, given:
109
+ #
110
+ # a => b => c => d
111
+ #
112
+ # If a and b are currently active with c being unresolved and d.rb is
113
+ # requested, then find_in_unresolved_tree will find d.rb in d because
114
+ # it's a dependency of c.
115
+ #
116
+ if found_specs.empty?
117
+ found_specs = Gem::Specification.find_in_unresolved_tree path
118
+
119
+ found_specs.each do |found_spec|
120
+ found_spec.activate
121
+ end
146
122
 
147
- RUBYGEMS_ACTIVATION_MONITOR.exit
148
- return gem_original_require(path)
149
- rescue LoadError => load_error
150
- RUBYGEMS_ACTIVATION_MONITOR.enter
123
+ # We found +path+ directly in an unresolved gem. Now we figure out, of
124
+ # the possible found specs, which one we should activate.
125
+ else
151
126
 
152
- begin
153
- if load_error.path == path and Gem.try_activate(path)
154
- require_again = true
127
+ # Check that all the found specs are just different
128
+ # versions of the same gem
129
+ names = found_specs.map(&:name).uniq
130
+
131
+ if names.size > 1
132
+ RUBYGEMS_ACTIVATION_MONITOR.exit
133
+ raise Gem::LoadError, "#{path} found in multiple gems: #{names.join ', '}"
134
+ end
135
+
136
+ # Ok, now find a gem that has no conflicts, starting
137
+ # at the highest version.
138
+ valid = found_specs.find {|s| !s.has_conflicts? }
139
+
140
+ unless valid
141
+ le = Gem::LoadError.new "unable to find a version of '#{names.first}' to activate"
142
+ le.name = names.first
143
+ RUBYGEMS_ACTIVATION_MONITOR.exit
144
+ raise le
145
+ end
146
+
147
+ valid.activate
155
148
  end
156
- ensure
149
+
157
150
  RUBYGEMS_ACTIVATION_MONITOR.exit
158
- end
151
+ return gem_original_require(path)
152
+ rescue LoadError => load_error
153
+ if load_error.path == path
154
+ RUBYGEMS_ACTIVATION_MONITOR.enter
155
+
156
+ begin
157
+ require_again = Gem.try_activate(path)
158
+ ensure
159
+ RUBYGEMS_ACTIVATION_MONITOR.exit
160
+ end
159
161
 
160
- return gem_original_require(path) if require_again
162
+ return gem_original_require(path) if require_again
163
+ end
161
164
 
162
- raise load_error
163
- ensure
164
- if RUBYGEMS_ACTIVATION_MONITOR.respond_to?(:mon_owned?)
165
- if monitor_owned != (ow = RUBYGEMS_ACTIVATION_MONITOR.mon_owned?)
166
- STDERR.puts [$$, Thread.current, $!, $!.backtrace].inspect if $!
167
- raise "CRITICAL: RUBYGEMS_ACTIVATION_MONITOR.owned?: before #{monitor_owned} -> after #{ow}"
165
+ raise load_error
166
+ ensure
167
+ if RUBYGEMS_ACTIVATION_MONITOR.respond_to?(:mon_owned?)
168
+ if monitor_owned != (ow = RUBYGEMS_ACTIVATION_MONITOR.mon_owned?)
169
+ STDERR.puts [$$, Thread.current, $!, $!.backtrace].inspect if $!
170
+ raise "CRITICAL: RUBYGEMS_ACTIVATION_MONITOR.owned?: before #{monitor_owned} -> after #{ow}"
171
+ end
168
172
  end
169
173
  end
170
174
  end
171
- RUBY
172
175
 
173
176
  private :require
174
177
 
@@ -1,54 +1,50 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # `uplevel` keyword argument of Kernel#warn is available since ruby 2.5.
4
- if RUBY_VERSION >= "2.5" && !Gem::KERNEL_WARN_IGNORES_INTERNAL_ENTRIES
3
+ module Kernel
4
+ rubygems_path = "#{__dir__}/" # Frames to be skipped start with this path.
5
5
 
6
- module Kernel
7
- rubygems_path = "#{__dir__}/" # Frames to be skipped start with this path.
6
+ original_warn = instance_method(:warn)
8
7
 
9
- original_warn = instance_method(:warn)
8
+ remove_method :warn
10
9
 
10
+ class << self
11
11
  remove_method :warn
12
+ end
12
13
 
13
- class << self
14
- remove_method :warn
14
+ module_function define_method(:warn) {|*messages, **kw|
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
15
21
  end
16
22
 
17
- module_function define_method(:warn) {|*messages, **kw|
18
- unless uplevel = kw[:uplevel]
19
- if Gem.java_platform? && RUBY_VERSION < "3.1"
20
- return original_warn.bind(self).call(*messages)
21
- else
22
- return original_warn.bind(self).call(*messages, **kw)
23
+ # Ensure `uplevel` fits a `long`
24
+ uplevel, = [uplevel].pack("l!").unpack("l!")
25
+
26
+ if uplevel >= 0
27
+ start = 0
28
+ while uplevel >= 0
29
+ loc, = caller_locations(start, 1)
30
+ unless loc
31
+ # No more backtrace
32
+ start += uplevel
33
+ break
23
34
  end
24
- end
25
35
 
26
- # Ensure `uplevel` fits a `long`
27
- uplevel, = [uplevel].pack("l!").unpack("l!")
28
-
29
- if uplevel >= 0
30
- start = 0
31
- while uplevel >= 0
32
- loc, = caller_locations(start, 1)
33
- unless loc
34
- # No more backtrace
35
- start += uplevel
36
- break
37
- end
36
+ start += 1
38
37
 
39
- start += 1
40
-
41
- if path = loc.path
42
- unless path.start_with?(rubygems_path) || path.start_with?("<internal:")
43
- # Non-rubygems frames
44
- uplevel -= 1
45
- end
38
+ if path = loc.path
39
+ unless path.start_with?(rubygems_path) || path.start_with?("<internal:")
40
+ # Non-rubygems frames
41
+ uplevel -= 1
46
42
  end
47
43
  end
48
- kw[:uplevel] = start
49
44
  end
45
+ kw[:uplevel] = start
46
+ end
50
47
 
51
- original_warn.bind(self).call(*messages, **kw)
52
- }
53
- end
48
+ original_warn.bind(self).call(*messages, **kw)
49
+ }
54
50
  end
@@ -133,6 +133,13 @@ module Gem
133
133
  @config_file ||= find_config_file.tap(&Gem::UNTAINT)
134
134
  end
135
135
 
136
+ ##
137
+ # The path to standard location of the user's state file.
138
+
139
+ def self.state_file
140
+ @state_file ||= File.join(Gem.state_home, "gem", "last_update_check").tap(&Gem::UNTAINT)
141
+ end
142
+
136
143
  ##
137
144
  # The path to standard location of the user's cache directory.
138
145
 
@@ -147,6 +154,13 @@ module Gem
147
154
  @data_home ||= (ENV["XDG_DATA_HOME"] || File.join(Gem.user_home, ".local", "share"))
148
155
  end
149
156
 
157
+ ##
158
+ # The path to standard location of the user's state directory.
159
+
160
+ def self.state_home
161
+ @data_home ||= (ENV["XDG_STATE_HOME"] || File.join(Gem.user_home, ".local", "state"))
162
+ end
163
+
150
164
  ##
151
165
  # How String Gem paths should be split. Overridable for esoteric platforms.
152
166
 
@@ -171,7 +185,7 @@ module Gem
171
185
  def self.default_exec_format
172
186
  exec_format = RbConfig::CONFIG["ruby_install_name"].sub("ruby", "%s") rescue "%s"
173
187
 
174
- unless exec_format =~ /%s/
188
+ unless exec_format.include?("%s")
175
189
  raise Gem::Exception,
176
190
  "[BUG] invalid exec_format #{exec_format.inspect}, no %s"
177
191
  end
@@ -277,7 +277,10 @@ class Gem::Dependency
277
277
  requirement.satisfied_by?(spec.version) && env_req.satisfied_by?(spec.version)
278
278
  end.map(&:to_spec)
279
279
 
280
- Gem::BundlerVersionFinder.prioritize!(matches) if prioritizes_bundler?
280
+ if prioritizes_bundler?
281
+ require_relative "bundler_version_finder"
282
+ Gem::BundlerVersionFinder.prioritize!(matches)
283
+ end
281
284
 
282
285
  if platform_only
283
286
  matches.reject! do |spec|
@@ -16,16 +16,16 @@ class Gem::DependencyInstaller
16
16
  extend Gem::Deprecate
17
17
 
18
18
  DEFAULT_OPTIONS = { # :nodoc:
19
- :env_shebang => false,
20
- :document => %w[ri],
21
- :domain => :both, # HACK dup
22
- :force => false,
23
- :format_executable => false, # HACK dup
19
+ :env_shebang => false,
20
+ :document => %w[ri],
21
+ :domain => :both, # HACK dup
22
+ :force => false,
23
+ :format_executable => false, # HACK dup
24
24
  :ignore_dependencies => false,
25
- :prerelease => false,
26
- :security_policy => nil, # HACK NoSecurity requires OpenSSL. AlmostNo? Low?
27
- :wrappers => true,
28
- :build_args => nil,
25
+ :prerelease => false,
26
+ :security_policy => nil, # HACK NoSecurity requires OpenSSL. AlmostNo? Low?
27
+ :wrappers => true,
28
+ :build_args => nil,
29
29
  :build_docs_in_background => false,
30
30
  :install_as_default => false,
31
31
  }.freeze
@@ -230,22 +230,22 @@ class Gem::DependencyInstaller
230
230
  @installed_gems = []
231
231
 
232
232
  options = {
233
- :bin_dir => @bin_dir,
234
- :build_args => @build_args,
235
- :document => @document,
236
- :env_shebang => @env_shebang,
237
- :force => @force,
238
- :format_executable => @format_executable,
233
+ :bin_dir => @bin_dir,
234
+ :build_args => @build_args,
235
+ :document => @document,
236
+ :env_shebang => @env_shebang,
237
+ :force => @force,
238
+ :format_executable => @format_executable,
239
239
  :ignore_dependencies => @ignore_dependencies,
240
- :prerelease => @prerelease,
241
- :security_policy => @security_policy,
242
- :user_install => @user_install,
243
- :wrappers => @wrappers,
244
- :build_root => @build_root,
245
- :install_as_default => @install_as_default,
246
- :dir_mode => @dir_mode,
247
- :data_mode => @data_mode,
248
- :prog_mode => @prog_mode,
240
+ :prerelease => @prerelease,
241
+ :security_policy => @security_policy,
242
+ :user_install => @user_install,
243
+ :wrappers => @wrappers,
244
+ :build_root => @build_root,
245
+ :install_as_default => @install_as_default,
246
+ :dir_mode => @dir_mode,
247
+ :data_mode => @data_mode,
248
+ :prog_mode => @prog_mode,
249
249
  }
250
250
  options[:install_dir] = @install_dir if @only_install_dir
251
251
 
@@ -221,14 +221,12 @@ class Gem::SystemExitException < SystemExit
221
221
  ##
222
222
  # The exit code for the process
223
223
 
224
- attr_accessor :exit_code
224
+ alias exit_code status
225
225
 
226
226
  ##
227
227
  # Creates a new SystemExitException with the given +exit_code+
228
228
 
229
229
  def initialize(exit_code)
230
- @exit_code = exit_code
231
-
232
230
  super exit_code, "Exiting RubyGems with exit_code #{exit_code}"
233
231
  end
234
232
  end
@@ -17,7 +17,7 @@ class Gem::Ext::Builder
17
17
  $1.downcase
18
18
  end
19
19
 
20
- def self.make(dest_path, results, make_dir = Dir.pwd, sitedir = nil)
20
+ def self.make(dest_path, results, make_dir = Dir.pwd, sitedir = nil, targets = ["clean", "", "install"])
21
21
  unless File.exist? File.join(make_dir, "Makefile")
22
22
  raise Gem::InstallError, "Makefile not found"
23
23
  end
@@ -26,7 +26,7 @@ class Gem::Ext::Builder
26
26
  RbConfig::CONFIG["configure_args"] =~ /with-make-prog\=(\w+)/
27
27
  make_program_name = ENV["MAKE"] || ENV["make"] || $1
28
28
  unless make_program_name
29
- make_program_name = (/mswin/ =~ RUBY_PLATFORM) ? "nmake" : "make"
29
+ make_program_name = (RUBY_PLATFORM.include?("mswin")) ? "nmake" : "make"
30
30
  end
31
31
  make_program = Shellwords.split(make_program_name)
32
32
 
@@ -40,7 +40,7 @@ class Gem::Ext::Builder
40
40
  env << "sitelibdir=%s" % sitedir
41
41
  end
42
42
 
43
- ["clean", "", "install"].each do |target|
43
+ targets.each do |target|
44
44
  # Pass DESTDIR via command line to override what's in MAKEFLAGS
45
45
  cmd = [
46
46
  *make_program,
@@ -131,8 +131,7 @@ class Gem::Ext::Builder
131
131
  when /CMakeLists.txt/ then
132
132
  Gem::Ext::CmakeBuilder
133
133
  when /Cargo.toml/ then
134
- # We use the spec name here to ensure we invoke the correct init function later
135
- Gem::Ext::CargoBuilder.new(@spec)
134
+ Gem::Ext::CargoBuilder.new
136
135
  else
137
136
  build_error("No builder for extension '#{extension}'")
138
137
  end
@@ -3,20 +3,24 @@
3
3
  class Gem::Ext::CargoBuilder < Gem::Ext::Builder
4
4
  # Converts Ruby link flags into something cargo understands
5
5
  class LinkFlagConverter
6
+ FILTERED_PATTERNS = [
7
+ /compress-debug-sections/, # Not supported by all linkers, and not required for Rust
8
+ ].freeze
9
+
6
10
  def self.convert(arg)
11
+ return [] if FILTERED_PATTERNS.any? {|p| p.match?(arg) }
12
+
7
13
  case arg.chomp
8
14
  when /^-L\s*(.+)$/
9
15
  ["-L", "native=#{$1}"]
10
16
  when /^--library=(\w+\S+)$/, /^-l\s*(\w+\S+)$/
11
17
  ["-l", $1]
12
- when /^-l\s*:lib(\S+).a$/
13
- ["-l", "static=#{$1}"]
14
- when /^-l\s*:lib(\S+).(so|dylib|dll)$/
15
- ["-l", "dylib=#{$1}"]
18
+ when /^-l\s*([^:\s])+/ # -lfoo, but not -l:libfoo.a
19
+ ["-l", $1]
16
20
  when /^-F\s*(.*)$/
17
21
  ["-l", "framework=#{$1}"]
18
22
  else
19
- ["-C", "link_arg=#{arg}"]
23
+ ["-C", "link-args=#{arg}"]
20
24
  end
21
25
  end
22
26
  end