rubygems-update 3.5.5 → 3.6.9

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 (413) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +606 -1
  3. data/CODE_OF_CONDUCT.md +79 -28
  4. data/Manifest.txt +114 -73
  5. data/README.md +16 -11
  6. data/bundler/CHANGELOG.md +506 -6
  7. data/bundler/README.md +2 -2
  8. data/bundler/bundler.gemspec +2 -2
  9. data/bundler/lib/bundler/build_metadata.rb +2 -2
  10. data/bundler/lib/bundler/checksum.rb +22 -12
  11. data/bundler/lib/bundler/cli/add.rb +3 -1
  12. data/bundler/lib/bundler/cli/binstubs.rb +1 -1
  13. data/bundler/lib/bundler/cli/check.rb +3 -3
  14. data/bundler/lib/bundler/cli/console.rb +8 -10
  15. data/bundler/lib/bundler/cli/doctor/diagnose.rb +167 -0
  16. data/bundler/lib/bundler/cli/doctor/ssl.rb +249 -0
  17. data/bundler/lib/bundler/cli/doctor.rb +27 -151
  18. data/bundler/lib/bundler/cli/exec.rb +1 -0
  19. data/bundler/lib/bundler/cli/fund.rb +1 -1
  20. data/bundler/lib/bundler/cli/gem.rb +13 -17
  21. data/bundler/lib/bundler/cli/info.rb +6 -6
  22. data/bundler/lib/bundler/cli/inject.rb +3 -3
  23. data/bundler/lib/bundler/cli/install.rb +14 -5
  24. data/bundler/lib/bundler/cli/issue.rb +3 -3
  25. data/bundler/lib/bundler/cli/lock.rb +32 -11
  26. data/bundler/lib/bundler/cli/outdated.rb +22 -22
  27. data/bundler/lib/bundler/cli/plugin.rb +3 -2
  28. data/bundler/lib/bundler/cli/pristine.rb +1 -1
  29. data/bundler/lib/bundler/cli/show.rb +3 -3
  30. data/bundler/lib/bundler/cli.rb +51 -107
  31. data/bundler/lib/bundler/compact_index_client/cache.rb +48 -73
  32. data/bundler/lib/bundler/compact_index_client/cache_file.rb +0 -5
  33. data/bundler/lib/bundler/compact_index_client/parser.rb +84 -0
  34. data/bundler/lib/bundler/compact_index_client/updater.rb +2 -12
  35. data/bundler/lib/bundler/compact_index_client.rb +51 -80
  36. data/bundler/lib/bundler/constants.rb +8 -1
  37. data/bundler/lib/bundler/current_ruby.rb +23 -33
  38. data/bundler/lib/bundler/definition.rb +485 -313
  39. data/bundler/lib/bundler/dependency.rb +92 -46
  40. data/bundler/lib/bundler/dsl.rb +135 -101
  41. data/bundler/lib/bundler/endpoint_specification.rb +30 -3
  42. data/bundler/lib/bundler/env.rb +1 -1
  43. data/bundler/lib/bundler/environment_preserver.rb +5 -23
  44. data/bundler/lib/bundler/errors.rb +53 -5
  45. data/bundler/lib/bundler/feature_flag.rb +3 -6
  46. data/bundler/lib/bundler/fetcher/compact_index.rb +16 -25
  47. data/bundler/lib/bundler/fetcher/downloader.rb +1 -1
  48. data/bundler/lib/bundler/fetcher.rb +14 -7
  49. data/bundler/lib/bundler/force_platform.rb +0 -2
  50. data/bundler/lib/bundler/friendly_errors.rb +1 -1
  51. data/bundler/lib/bundler/gem_helper.rb +1 -1
  52. data/bundler/lib/bundler/gem_helpers.rb +36 -19
  53. data/bundler/lib/bundler/gem_version_promoter.rb +42 -40
  54. data/bundler/lib/bundler/injector.rb +14 -16
  55. data/bundler/lib/bundler/inline.rb +42 -17
  56. data/bundler/lib/bundler/installer/gem_installer.rb +4 -3
  57. data/bundler/lib/bundler/installer/parallel_installer.rb +3 -2
  58. data/bundler/lib/bundler/installer/standalone.rb +2 -5
  59. data/bundler/lib/bundler/installer.rb +17 -41
  60. data/bundler/lib/bundler/lazy_specification.rb +117 -46
  61. data/bundler/lib/bundler/lockfile_generator.rb +1 -1
  62. data/bundler/lib/bundler/lockfile_parser.rb +18 -7
  63. data/bundler/lib/bundler/man/bundle-add.1 +44 -27
  64. data/bundler/lib/bundler/man/bundle-add.1.ronn +52 -23
  65. data/bundler/lib/bundler/man/bundle-binstubs.1 +9 -6
  66. data/bundler/lib/bundler/man/bundle-binstubs.1.ronn +6 -3
  67. data/bundler/lib/bundler/man/bundle-cache.1 +32 -4
  68. data/bundler/lib/bundler/man/bundle-cache.1.ronn +31 -2
  69. data/bundler/lib/bundler/man/bundle-check.1 +7 -5
  70. data/bundler/lib/bundler/man/bundle-check.1.ronn +7 -2
  71. data/bundler/lib/bundler/man/bundle-clean.1 +3 -3
  72. data/bundler/lib/bundler/man/bundle-config.1 +11 -15
  73. data/bundler/lib/bundler/man/bundle-config.1.ronn +12 -15
  74. data/bundler/lib/bundler/man/bundle-console.1 +4 -6
  75. data/bundler/lib/bundler/man/bundle-console.1.ronn +2 -7
  76. data/bundler/lib/bundler/man/bundle-doctor.1 +4 -4
  77. data/bundler/lib/bundler/man/bundle-doctor.1.ronn +1 -1
  78. data/bundler/lib/bundler/man/bundle-env.1 +9 -0
  79. data/bundler/lib/bundler/man/bundle-env.1.ronn +10 -0
  80. data/bundler/lib/bundler/man/bundle-exec.1 +9 -6
  81. data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -3
  82. data/bundler/lib/bundler/man/bundle-fund.1 +22 -0
  83. data/bundler/lib/bundler/man/bundle-fund.1.ronn +25 -0
  84. data/bundler/lib/bundler/man/bundle-gem.1 +25 -7
  85. data/bundler/lib/bundler/man/bundle-gem.1.ronn +38 -6
  86. data/bundler/lib/bundler/man/bundle-help.1 +3 -3
  87. data/bundler/lib/bundler/man/bundle-info.1 +7 -4
  88. data/bundler/lib/bundler/man/bundle-info.1.ronn +6 -2
  89. data/bundler/lib/bundler/man/bundle-init.1 +5 -5
  90. data/bundler/lib/bundler/man/bundle-init.1.ronn +3 -2
  91. data/bundler/lib/bundler/man/bundle-inject.1 +12 -4
  92. data/bundler/lib/bundler/man/bundle-inject.1.ronn +9 -1
  93. data/bundler/lib/bundler/man/bundle-install.1 +19 -16
  94. data/bundler/lib/bundler/man/bundle-install.1.ronn +24 -20
  95. data/bundler/lib/bundler/man/bundle-issue.1 +45 -0
  96. data/bundler/lib/bundler/man/bundle-issue.1.ronn +37 -0
  97. data/bundler/lib/bundler/man/bundle-licenses.1 +9 -0
  98. data/bundler/lib/bundler/man/bundle-licenses.1.ronn +10 -0
  99. data/bundler/lib/bundler/man/bundle-list.1 +3 -3
  100. data/bundler/lib/bundler/man/bundle-list.1.ronn +4 -1
  101. data/bundler/lib/bundler/man/bundle-lock.1 +23 -8
  102. data/bundler/lib/bundler/man/bundle-lock.1.ronn +25 -4
  103. data/bundler/lib/bundler/man/bundle-open.1 +4 -4
  104. data/bundler/lib/bundler/man/bundle-open.1.ronn +2 -1
  105. data/bundler/lib/bundler/man/bundle-outdated.1 +10 -7
  106. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +8 -4
  107. data/bundler/lib/bundler/man/bundle-platform.1 +3 -3
  108. data/bundler/lib/bundler/man/bundle-plugin.1 +9 -6
  109. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +7 -3
  110. data/bundler/lib/bundler/man/bundle-pristine.1 +3 -3
  111. data/bundler/lib/bundler/man/bundle-pristine.1.ronn +1 -1
  112. data/bundler/lib/bundler/man/bundle-remove.1 +3 -3
  113. data/bundler/lib/bundler/man/bundle-remove.1.ronn +1 -1
  114. data/bundler/lib/bundler/man/bundle-show.1 +7 -4
  115. data/bundler/lib/bundler/man/bundle-show.1.ronn +4 -0
  116. data/bundler/lib/bundler/man/bundle-update.1 +15 -9
  117. data/bundler/lib/bundler/man/bundle-update.1.ronn +14 -6
  118. data/bundler/lib/bundler/man/bundle-version.1 +3 -3
  119. data/bundler/lib/bundler/man/bundle-viz.1 +6 -6
  120. data/bundler/lib/bundler/man/bundle-viz.1.ronn +7 -3
  121. data/bundler/lib/bundler/man/bundle.1 +3 -3
  122. data/bundler/lib/bundler/man/gemfile.5 +7 -5
  123. data/bundler/lib/bundler/man/gemfile.5.ronn +8 -2
  124. data/bundler/lib/bundler/man/index.txt +4 -0
  125. data/bundler/lib/bundler/match_metadata.rb +13 -0
  126. data/bundler/lib/bundler/materialization.rb +59 -0
  127. data/bundler/lib/bundler/mirror.rb +3 -3
  128. data/bundler/lib/bundler/plugin/api/source.rb +5 -4
  129. data/bundler/lib/bundler/plugin/events.rb +24 -0
  130. data/bundler/lib/bundler/plugin/index.rb +5 -1
  131. data/bundler/lib/bundler/plugin/installer/path.rb +26 -0
  132. data/bundler/lib/bundler/plugin/installer.rb +37 -17
  133. data/bundler/lib/bundler/plugin/source_list.rb +4 -4
  134. data/bundler/lib/bundler/plugin.rb +21 -2
  135. data/bundler/lib/bundler/process_lock.rb +10 -14
  136. data/bundler/lib/bundler/remote_specification.rb +6 -1
  137. data/bundler/lib/bundler/resolver/base.rb +14 -3
  138. data/bundler/lib/bundler/resolver/candidate.rb +18 -27
  139. data/bundler/lib/bundler/resolver/package.rb +20 -3
  140. data/bundler/lib/bundler/resolver/spec_group.rb +22 -27
  141. data/bundler/lib/bundler/resolver/strategy.rb +40 -0
  142. data/bundler/lib/bundler/resolver.rb +114 -50
  143. data/bundler/lib/bundler/retry.rb +1 -1
  144. data/bundler/lib/bundler/ruby_dsl.rb +12 -3
  145. data/bundler/lib/bundler/ruby_version.rb +7 -1
  146. data/bundler/lib/bundler/rubygems_ext.rb +282 -125
  147. data/bundler/lib/bundler/rubygems_gem_installer.rb +40 -5
  148. data/bundler/lib/bundler/rubygems_integration.rb +29 -67
  149. data/bundler/lib/bundler/runtime.rb +48 -35
  150. data/bundler/lib/bundler/self_manager.rb +27 -7
  151. data/bundler/lib/bundler/settings.rb +32 -21
  152. data/bundler/lib/bundler/setup.rb +6 -0
  153. data/bundler/lib/bundler/shared_helpers.rb +39 -21
  154. data/bundler/lib/bundler/source/gemspec.rb +1 -4
  155. data/bundler/lib/bundler/source/git/git_proxy.rb +23 -6
  156. data/bundler/lib/bundler/source/git.rb +113 -41
  157. data/bundler/lib/bundler/source/metadata.rb +4 -3
  158. data/bundler/lib/bundler/source/path.rb +7 -18
  159. data/bundler/lib/bundler/source/rubygems/remote.rb +12 -4
  160. data/bundler/lib/bundler/source/rubygems.rb +54 -48
  161. data/bundler/lib/bundler/source.rb +2 -0
  162. data/bundler/lib/bundler/source_list.rb +53 -7
  163. data/bundler/lib/bundler/spec_set.rb +187 -88
  164. data/bundler/lib/bundler/stub_specification.rb +29 -2
  165. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +77 -29
  166. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +1 -3
  167. data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -3
  168. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +15 -15
  169. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -7
  170. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +0 -5
  171. data/bundler/lib/bundler/ui/shell.rb +24 -2
  172. data/bundler/lib/bundler/ui/silent.rb +12 -1
  173. data/bundler/lib/bundler/uri_credentials_filter.rb +3 -3
  174. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +53 -3
  175. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  176. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +11 -0
  177. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +15 -13
  178. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +68 -30
  179. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +4 -24
  180. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +1 -0
  181. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/strategy.rb +42 -0
  182. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +20 -8
  183. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +17 -29
  184. data/bundler/lib/bundler/vendor/securerandom/COPYING +56 -0
  185. data/bundler/lib/bundler/vendor/securerandom/lib/securerandom.rb +102 -0
  186. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +3 -5
  187. data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +11 -0
  188. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +1 -4
  189. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +2 -2
  190. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +2 -1
  191. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +9 -9
  192. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +1 -1
  193. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +5 -21
  194. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
  195. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  196. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +11 -0
  197. data/bundler/lib/bundler/vendor/uri/COPYING +56 -0
  198. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +43 -16
  199. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +3 -3
  200. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +1 -1
  201. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +28 -37
  202. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +2 -2
  203. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +16 -9
  204. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +26 -3
  205. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  206. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +9 -9
  207. data/bundler/lib/bundler/vendored_net_http.rb +20 -5
  208. data/bundler/lib/bundler/vendored_securerandom.rb +12 -0
  209. data/bundler/lib/bundler/vendored_timeout.rb +7 -3
  210. data/bundler/lib/bundler/vendored_uri.rb +18 -1
  211. data/bundler/lib/bundler/version.rb +1 -1
  212. data/bundler/lib/bundler/yaml_serializer.rb +12 -7
  213. data/bundler/lib/bundler.rb +89 -51
  214. data/{CONTRIBUTING.md → doc/rubygems/CONTRIBUTING.md} +10 -14
  215. data/{POLICIES.md → doc/rubygems/POLICIES.md} +81 -12
  216. data/exe/update_rubygems +1 -1
  217. data/lib/rubygems/basic_specification.rb +43 -10
  218. data/lib/rubygems/bundler_version_finder.rb +1 -1
  219. data/lib/rubygems/command.rb +1 -4
  220. data/lib/rubygems/command_manager.rb +5 -6
  221. data/lib/rubygems/commands/build_command.rb +2 -11
  222. data/lib/rubygems/commands/cleanup_command.rb +3 -13
  223. data/lib/rubygems/commands/contents_command.rb +17 -10
  224. data/lib/rubygems/commands/environment_command.rb +5 -0
  225. data/lib/rubygems/commands/exec_command.rb +18 -11
  226. data/lib/rubygems/commands/fetch_command.rb +14 -0
  227. data/lib/rubygems/commands/help_command.rb +2 -2
  228. data/lib/rubygems/commands/install_command.rb +0 -4
  229. data/lib/rubygems/commands/pristine_command.rb +30 -17
  230. data/lib/rubygems/commands/push_command.rb +31 -6
  231. data/lib/rubygems/commands/rdoc_command.rb +3 -10
  232. data/lib/rubygems/commands/rebuild_command.rb +262 -0
  233. data/lib/rubygems/commands/setup_command.rb +11 -16
  234. data/lib/rubygems/commands/sources_command.rb +2 -2
  235. data/lib/rubygems/commands/uninstall_command.rb +9 -4
  236. data/lib/rubygems/commands/unpack_command.rb +0 -6
  237. data/lib/rubygems/commands/update_command.rb +10 -17
  238. data/lib/rubygems/config_file.rb +45 -16
  239. data/lib/rubygems/core_ext/kernel_warn.rb +2 -6
  240. data/lib/rubygems/defaults.rb +6 -6
  241. data/lib/rubygems/dependency.rb +12 -16
  242. data/lib/rubygems/dependency_list.rb +1 -1
  243. data/lib/rubygems/deprecate.rb +79 -77
  244. data/lib/rubygems/errors.rb +2 -1
  245. data/lib/rubygems/exceptions.rb +2 -9
  246. data/lib/rubygems/ext/builder.rb +21 -8
  247. data/lib/rubygems/ext/cargo_builder.rb +12 -26
  248. data/lib/rubygems/ext/cmake_builder.rb +7 -2
  249. data/lib/rubygems/ext/configure_builder.rb +7 -2
  250. data/lib/rubygems/ext/ext_conf_builder.rb +9 -5
  251. data/lib/rubygems/ext/rake_builder.rb +7 -4
  252. data/lib/rubygems/gem_runner.rb +9 -0
  253. data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +1 -1
  254. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -1
  255. data/lib/rubygems/gemcutter_utilities.rb +52 -26
  256. data/lib/rubygems/gemspec_helpers.rb +19 -0
  257. data/lib/rubygems/install_update_options.rb +5 -0
  258. data/lib/rubygems/installer.rb +31 -40
  259. data/lib/rubygems/local_remote_options.rb +8 -8
  260. data/lib/rubygems/package/tar_header.rb +31 -4
  261. data/lib/rubygems/package/tar_reader/entry.rb +1 -5
  262. data/lib/rubygems/package/tar_writer.rb +5 -4
  263. data/lib/rubygems/package.rb +13 -8
  264. data/lib/rubygems/platform.rb +7 -5
  265. data/lib/rubygems/psych_tree.rb +4 -0
  266. data/lib/rubygems/query_utils.rb +2 -2
  267. data/lib/rubygems/rdoc.rb +16 -3
  268. data/lib/rubygems/remote_fetcher.rb +3 -4
  269. data/lib/rubygems/request.rb +5 -5
  270. data/lib/rubygems/request_set/gem_dependency_api.rb +1 -1
  271. data/lib/rubygems/request_set.rb +1 -1
  272. data/lib/rubygems/requirement.rb +16 -12
  273. data/lib/rubygems/resolver/activation_request.rb +1 -1
  274. data/lib/rubygems/resolver/api_set/gem_parser.rb +2 -5
  275. data/lib/rubygems/resolver/api_set.rb +13 -8
  276. data/lib/rubygems/resolver/best_set.rb +0 -28
  277. data/lib/rubygems/resolver/composed_set.rb +3 -3
  278. data/lib/rubygems/resolver/git_set.rb +0 -1
  279. data/lib/rubygems/resolver/index_set.rb +2 -2
  280. data/lib/rubygems/resolver/spec_specification.rb +7 -0
  281. data/lib/rubygems/resolver.rb +7 -7
  282. data/lib/rubygems/s3_uri_signer.rb +3 -3
  283. data/lib/rubygems/safe_marshal/reader.rb +31 -14
  284. data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +29 -16
  285. data/lib/rubygems/safe_yaml.rb +10 -1
  286. data/lib/rubygems/security.rb +1 -1
  287. data/lib/rubygems/source/git.rb +22 -17
  288. data/lib/rubygems/source/installed.rb +3 -1
  289. data/lib/rubygems/source/local.rb +8 -4
  290. data/lib/rubygems/source/specific_file.rb +5 -3
  291. data/lib/rubygems/source.rb +10 -8
  292. data/lib/rubygems/source_list.rb +1 -1
  293. data/lib/rubygems/spec_fetcher.rb +47 -15
  294. data/lib/rubygems/specification.rb +107 -180
  295. data/lib/rubygems/specification_policy.rb +33 -13
  296. data/lib/rubygems/specification_record.rb +212 -0
  297. data/lib/rubygems/stub_specification.rb +32 -10
  298. data/lib/rubygems/target_rbconfig.rb +50 -0
  299. data/lib/rubygems/uninstaller.rb +42 -22
  300. data/lib/rubygems/uri.rb +6 -6
  301. data/lib/rubygems/util/licenses.rb +97 -1
  302. data/lib/rubygems/util.rb +1 -1
  303. data/lib/rubygems/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +57 -0
  304. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/delegates/specification_provider.rb +11 -11
  305. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/action.rb +1 -1
  306. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
  307. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
  308. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
  309. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
  310. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/log.rb +1 -1
  311. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
  312. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/tag.rb +1 -1
  313. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/vertex.rb +1 -1
  314. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph.rb +2 -2
  315. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/errors.rb +1 -1
  316. data/lib/rubygems/vendor/molinillo/lib/molinillo/gem_metadata.rb +6 -0
  317. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/modules/specification_provider.rb +2 -2
  318. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/modules/ui.rb +1 -1
  319. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/resolution.rb +4 -4
  320. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/resolver.rb +1 -1
  321. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/state.rb +1 -1
  322. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo.rb +2 -2
  323. data/lib/rubygems/vendor/net-http/COPYING +56 -0
  324. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/generic_request.rb +9 -9
  325. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/header.rb +3 -3
  326. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/request.rb +3 -3
  327. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/requests.rb +35 -30
  328. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/response.rb +2 -2
  329. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/responses.rb +6 -6
  330. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/status.rb +1 -1
  331. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http.rb +135 -51
  332. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/https.rb +1 -1
  333. data/lib/rubygems/vendor/optparse/COPYING +56 -0
  334. data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/ac.rb +16 -0
  335. data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/kwargs.rb +8 -3
  336. data/lib/rubygems/vendor/optparse/lib/optparse/uri.rb +7 -0
  337. data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/version.rb +9 -0
  338. data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse.rb +158 -62
  339. data/lib/rubygems/vendor/resolv/COPYING +56 -0
  340. data/lib/rubygems/{resolv → vendor/resolv}/lib/resolv.rb +117 -49
  341. data/lib/rubygems/vendor/securerandom/COPYING +56 -0
  342. data/lib/rubygems/vendor/securerandom/lib/securerandom.rb +102 -0
  343. data/lib/rubygems/vendor/timeout/.document +1 -0
  344. data/lib/rubygems/vendor/timeout/COPYING +56 -0
  345. data/lib/rubygems/{timeout → vendor/timeout}/lib/timeout.rb +10 -11
  346. data/lib/rubygems/vendor/tsort/.document +1 -0
  347. data/lib/rubygems/{tsort → vendor/tsort}/lib/tsort.rb +2 -2
  348. data/lib/rubygems/vendor/uri/.document +1 -0
  349. data/lib/rubygems/vendor/uri/COPYING +56 -0
  350. data/lib/rubygems/vendor/uri/lib/uri/common.rb +880 -0
  351. data/lib/rubygems/vendor/uri/lib/uri/file.rb +100 -0
  352. data/lib/rubygems/vendor/uri/lib/uri/ftp.rb +267 -0
  353. data/lib/rubygems/vendor/uri/lib/uri/generic.rb +1579 -0
  354. data/lib/rubygems/vendor/uri/lib/uri/http.rb +125 -0
  355. data/lib/rubygems/vendor/uri/lib/uri/https.rb +23 -0
  356. data/lib/rubygems/vendor/uri/lib/uri/ldap.rb +261 -0
  357. data/lib/rubygems/vendor/uri/lib/uri/ldaps.rb +22 -0
  358. data/lib/rubygems/vendor/uri/lib/uri/mailto.rb +293 -0
  359. data/lib/rubygems/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
  360. data/lib/rubygems/vendor/uri/lib/uri/rfc3986_parser.rb +206 -0
  361. data/lib/rubygems/vendor/uri/lib/uri/version.rb +6 -0
  362. data/lib/rubygems/vendor/uri/lib/uri/ws.rb +83 -0
  363. data/lib/rubygems/vendor/uri/lib/uri/wss.rb +23 -0
  364. data/lib/rubygems/vendor/uri/lib/uri.rb +104 -0
  365. data/lib/rubygems/vendored_molinillo.rb +3 -0
  366. data/lib/rubygems/vendored_net_http.rb +5 -0
  367. data/lib/rubygems/vendored_optparse.rb +3 -0
  368. data/lib/rubygems/vendored_securerandom.rb +3 -0
  369. data/lib/rubygems/vendored_timeout.rb +5 -0
  370. data/lib/rubygems/vendored_tsort.rb +3 -0
  371. data/lib/rubygems/version.rb +26 -9
  372. data/lib/rubygems/yaml_serializer.rb +12 -7
  373. data/lib/rubygems.rb +82 -47
  374. data/rubygems-update.gemspec +11 -6
  375. data/setup.rb +1 -1
  376. metadata +131 -86
  377. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +0 -32
  378. data/lib/rubygems/net/http.rb +0 -3
  379. data/lib/rubygems/net-http/LICENSE.txt +0 -22
  380. data/lib/rubygems/net-http/lib/net/http/backward.rb +0 -40
  381. data/lib/rubygems/net-protocol/LICENSE.txt +0 -22
  382. data/lib/rubygems/optparse/lib/optparse/uri.rb +0 -7
  383. data/lib/rubygems/optparse.rb +0 -3
  384. data/lib/rubygems/resolv/LICENSE.txt +0 -22
  385. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  386. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  387. data/lib/rubygems/resolver/molinillo.rb +0 -3
  388. data/lib/rubygems/shellwords.rb +0 -3
  389. data/lib/rubygems/timeout/LICENSE.txt +0 -22
  390. data/lib/rubygems/timeout.rb +0 -3
  391. data/lib/rubygems/tsort/LICENSE.txt +0 -22
  392. data/lib/rubygems/tsort.rb +0 -3
  393. /data/{lib/rubygems/optparse → bundler/lib/bundler/vendor/fileutils}/COPYING +0 -0
  394. /data/{lib/rubygems/net-http → bundler/lib/bundler/vendor/securerandom}/.document +0 -0
  395. /data/{MAINTAINERS.txt → doc/MAINTAINERS.txt} +0 -0
  396. /data/{bundler → doc/bundler}/UPGRADING.md +0 -0
  397. /data/{UPGRADING.md → doc/rubygems/UPGRADING.md} +0 -0
  398. /data/lib/rubygems/{net-protocol → vendor/molinillo}/.document +0 -0
  399. /data/lib/rubygems/{resolver → vendor}/molinillo/LICENSE +0 -0
  400. /data/lib/rubygems/{optparse → vendor/net-http}/.document +0 -0
  401. /data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/exceptions.rb +0 -0
  402. /data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/proxy_delta.rb +0 -0
  403. /data/lib/rubygems/{resolv → vendor/net-protocol}/.document +0 -0
  404. /data/{bundler/lib/bundler/vendor/fileutils → lib/rubygems/vendor/net-protocol}/LICENSE.txt +0 -0
  405. /data/lib/rubygems/{net-protocol → vendor/net-protocol}/lib/net/protocol.rb +0 -0
  406. /data/lib/rubygems/{resolver/molinillo → vendor/optparse}/.document +0 -0
  407. /data/lib/rubygems/{optparse → vendor/optparse}/lib/optionparser.rb +0 -0
  408. /data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/date.rb +0 -0
  409. /data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/shellwords.rb +0 -0
  410. /data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/time.rb +0 -0
  411. /data/lib/rubygems/{timeout → vendor/resolv}/.document +0 -0
  412. /data/lib/rubygems/{tsort → vendor/securerandom}/.document +0 -0
  413. /data/{bundler/lib/bundler/vendor/uri → lib/rubygems/vendor/tsort}/LICENSE.txt +0 -0
@@ -147,6 +147,12 @@ module Bundler
147
147
  end
148
148
  end
149
149
 
150
+ def installed_to?(destination)
151
+ # if copy_to is interrupted, it may leave a partially installed directory that
152
+ # contains .git but no other files -- consider this not to be installed
153
+ Dir.exist?(destination) && (Dir.children(destination) - [".git"]).any?
154
+ end
155
+
150
156
  private
151
157
 
152
158
  def git_remote_fetch(args)
@@ -179,9 +185,18 @@ module Bundler
179
185
  _, err, status = capture(command, nil)
180
186
  return extra_ref if status.success?
181
187
 
182
- if err.include?("Could not find remote branch")
188
+ if err.include?("Could not find remote branch") || # git up to 2.49
189
+ err.include?("Remote branch #{branch_option} not found") # git 2.49 or higher
183
190
  raise MissingGitRevisionError.new(command_with_no_credentials, nil, explicit_ref, credential_filtered_uri)
184
191
  else
192
+ idx = command.index("--depth")
193
+ if idx
194
+ command.delete_at(idx)
195
+ command.delete_at(idx)
196
+ command_with_no_credentials = check_allowed(command)
197
+
198
+ err += "Retrying without --depth argument."
199
+ end
185
200
  raise GitCommandError.new(command_with_no_credentials, path, err)
186
201
  end
187
202
  end
@@ -248,7 +263,7 @@ module Bundler
248
263
  end
249
264
 
250
265
  def not_pinned?
251
- branch || tag || ref.nil?
266
+ branch_option || ref.nil?
252
267
  end
253
268
 
254
269
  def pinned_to_full_sha?
@@ -320,12 +335,10 @@ module Bundler
320
335
  # Adds credentials to the URI
321
336
  def configured_uri
322
337
  if /https?:/.match?(uri)
323
- remote = Bundler::URI(uri)
338
+ remote = Gem::URI(uri)
324
339
  config_auth = Bundler.settings[remote.to_s] || Bundler.settings[remote.host]
325
340
  remote.userinfo ||= config_auth
326
341
  remote.to_s
327
- elsif File.exist?(uri)
328
- "file://#{uri}"
329
342
  else
330
343
  uri.to_s
331
344
  end
@@ -414,7 +427,7 @@ module Bundler
414
427
  # anyways.
415
428
  return args if @revision
416
429
 
417
- args += ["--branch", branch || tag] if branch || tag
430
+ args += ["--branch", branch_option] if branch_option
418
431
  args
419
432
  end
420
433
 
@@ -430,6 +443,10 @@ module Bundler
430
443
  extra_args
431
444
  end
432
445
 
446
+ def branch_option
447
+ branch || tag
448
+ end
449
+
433
450
  def full_clone?
434
451
  depth.nil?
435
452
  end
@@ -32,6 +32,20 @@ module Bundler
32
32
  @local = false
33
33
  end
34
34
 
35
+ def remote!
36
+ return if @allow_remote
37
+
38
+ @local_specs = nil
39
+ @allow_remote = true
40
+ end
41
+
42
+ def cached!
43
+ return if @allow_cached
44
+
45
+ @local_specs = nil
46
+ @allow_cached = true
47
+ end
48
+
35
49
  def self.from_lock(options)
36
50
  new(options.merge("uri" => options.delete("remote")))
37
51
  end
@@ -56,13 +70,13 @@ module Bundler
56
70
  end
57
71
 
58
72
  def hash
59
- [self.class, uri, ref, branch, name, version, glob, submodules].hash
73
+ [self.class, uri, ref, branch, name, glob, submodules].hash
60
74
  end
61
75
 
62
76
  def eql?(other)
63
77
  other.is_a?(Git) && uri == other.uri && ref == other.ref &&
64
78
  branch == other.branch && name == other.name &&
65
- version == other.version && glob == other.glob &&
79
+ glob == other.glob &&
66
80
  submodules == other.submodules
67
81
  end
68
82
 
@@ -88,7 +102,7 @@ module Bundler
88
102
  end
89
103
 
90
104
  def identifier
91
- uri_with_specifiers([humanized_ref, cached_revision, glob_for_display])
105
+ uri_with_specifiers([humanized_ref, locked_revision, glob_for_display])
92
106
  end
93
107
 
94
108
  def uri_with_specifiers(specifiers)
@@ -150,7 +164,8 @@ module Bundler
150
164
  "does not exist. Run `bundle config unset local.#{override_for(original_path)}` to remove the local override"
151
165
  end
152
166
 
153
- set_local!(path)
167
+ @local = true
168
+ set_paths!(path)
154
169
 
155
170
  # Create a new git proxy without the cached revision
156
171
  # so the Gemfile.lock always picks up the new revision.
@@ -161,10 +176,10 @@ module Bundler
161
176
  "#{current_branch} but Gemfile specifies #{branch}"
162
177
  end
163
178
 
164
- changed = cached_revision && cached_revision != revision
179
+ changed = locked_revision && locked_revision != revision
165
180
 
166
- if !Bundler.settings[:disable_local_revision_check] && changed && !@unlocked && !git_proxy.contains?(cached_revision)
167
- raise GitError, "The Gemfile lock is pointing to revision #{shortref_for_display(cached_revision)} " \
181
+ if !Bundler.settings[:disable_local_revision_check] && changed && !@unlocked && !git_proxy.contains?(locked_revision)
182
+ raise GitError, "The Gemfile lock is pointing to revision #{shortref_for_display(locked_revision)} " \
168
183
  "but the current branch in your local override for #{name} does not contain such commit. " \
169
184
  "Please make sure your branch is up to date."
170
185
  end
@@ -173,13 +188,11 @@ module Bundler
173
188
  end
174
189
 
175
190
  def specs(*)
176
- set_local!(app_cache_path) if has_app_cache? && !local?
191
+ set_cache_path!(app_cache_path) if use_app_cache?
177
192
 
178
193
  if requires_checkout? && !@copied
179
- fetch
180
- git_proxy.copy_to(install_path, submodules)
181
- serialize_gemspecs_in(install_path)
182
- @copied = true
194
+ fetch unless use_app_cache?
195
+ checkout
183
196
  end
184
197
 
185
198
  local_specs
@@ -192,27 +205,25 @@ module Bundler
192
205
  print_using_message "Using #{version_message(spec, options[:previous_spec])} from #{self}"
193
206
 
194
207
  if (requires_checkout? && !@copied) || force
195
- Bundler.ui.debug " * Checking out revision: #{ref}"
196
- git_proxy.copy_to(install_path, submodules)
197
- serialize_gemspecs_in(install_path)
198
- @copied = true
208
+ checkout
199
209
  end
200
210
 
201
- generate_bin_options = { disable_extensions: !Bundler.rubygems.spec_missing_extensions?(spec), build_args: options[:build_args] }
211
+ generate_bin_options = { disable_extensions: !spec.missing_extensions?, build_args: options[:build_args] }
202
212
  generate_bin(spec, generate_bin_options)
203
213
 
204
214
  requires_checkout? ? spec.post_install_message : nil
205
215
  end
206
216
 
217
+ def migrate_cache(custom_path = nil, local: false)
218
+ if local
219
+ cache_to(custom_path, try_migrate: false)
220
+ else
221
+ cache_to(custom_path, try_migrate: true)
222
+ end
223
+ end
224
+
207
225
  def cache(spec, custom_path = nil)
208
- app_cache_path = app_cache_path(custom_path)
209
- return unless Bundler.feature_flag.cache_all?
210
- return if path == app_cache_path
211
- cached!
212
- FileUtils.rm_rf(app_cache_path)
213
- git_proxy.checkout if requires_checkout?
214
- git_proxy.copy_to(app_cache_path, @submodules)
215
- serialize_gemspecs_in(app_cache_path)
226
+ cache_to(custom_path, try_migrate: false)
216
227
  end
217
228
 
218
229
  def load_spec_files
@@ -235,7 +246,7 @@ module Bundler
235
246
  end
236
247
 
237
248
  def app_cache_dirname
238
- "#{base_name}-#{shortref_for_path(cached_revision || revision)}"
249
+ "#{base_name}-#{shortref_for_path(locked_revision || revision)}"
239
250
  end
240
251
 
241
252
  def revision
@@ -256,6 +267,43 @@ module Bundler
256
267
 
257
268
  private
258
269
 
270
+ def cache_to(custom_path, try_migrate: false)
271
+ return unless Bundler.feature_flag.cache_all?
272
+
273
+ app_cache_path = app_cache_path(custom_path)
274
+
275
+ migrate = try_migrate ? bare_repo?(app_cache_path) : false
276
+
277
+ set_cache_path!(nil) if migrate
278
+
279
+ return if cache_path == app_cache_path
280
+
281
+ cached!
282
+ FileUtils.rm_rf(app_cache_path)
283
+ git_proxy.checkout if migrate || requires_checkout?
284
+ git_proxy.copy_to(app_cache_path, @submodules)
285
+ serialize_gemspecs_in(app_cache_path)
286
+ end
287
+
288
+ def checkout
289
+ Bundler.ui.debug " * Checking out revision: #{ref}"
290
+ if use_app_cache? && !bare_repo?(app_cache_path)
291
+ SharedHelpers.filesystem_access(install_path.dirname) do |p|
292
+ FileUtils.mkdir_p(p)
293
+ end
294
+ FileUtils.cp_r("#{app_cache_path}/.", install_path)
295
+ else
296
+ if use_app_cache? && bare_repo?(app_cache_path)
297
+ Bundler.ui.warn "Installing from cache in old \"bare repository\" format for compatibility. " \
298
+ "Please run `bundle cache` and commit the updated cache to migrate to the new format and get rid of this warning."
299
+ end
300
+
301
+ git_proxy.copy_to(install_path, submodules)
302
+ end
303
+ serialize_gemspecs_in(install_path)
304
+ @copied = true
305
+ end
306
+
259
307
  def humanized_ref
260
308
  if local?
261
309
  path
@@ -278,28 +326,45 @@ module Bundler
278
326
  # The gemspecs we cache should already be evaluated.
279
327
  spec = Bundler.load_gemspec(spec_path)
280
328
  next unless spec
281
- Bundler.rubygems.set_installed_by_version(spec)
329
+ spec.installed_by_version = Gem::VERSION
282
330
  Bundler.rubygems.validate(spec)
283
331
  File.open(spec_path, "wb") {|file| file.write(spec.to_ruby) }
284
332
  end
285
333
  end
286
334
 
287
- def set_local!(path)
288
- @local = true
289
- @local_specs = @git_proxy = nil
290
- @cache_path = @install_path = path
335
+ def set_paths!(path)
336
+ set_cache_path!(path)
337
+ set_install_path!(path)
338
+ end
339
+
340
+ def set_cache_path!(path)
341
+ @git_proxy = nil
342
+ @cache_path = path
343
+ end
344
+
345
+ def set_install_path!(path)
346
+ @local_specs = nil
347
+ @install_path = path
291
348
  end
292
349
 
293
350
  def has_app_cache?
294
- cached_revision && super
351
+ locked_revision && super
352
+ end
353
+
354
+ def use_app_cache?
355
+ has_app_cache? && !local?
295
356
  end
296
357
 
297
358
  def requires_checkout?
298
- allow_git_ops? && !local? && !cached_revision_checked_out?
359
+ allow_git_ops? && !local? && !locked_revision_checked_out?
360
+ end
361
+
362
+ def locked_revision_checked_out?
363
+ locked_revision && locked_revision == revision && installed?
299
364
  end
300
365
 
301
- def cached_revision_checked_out?
302
- cached_revision && cached_revision == revision && install_path.exist?
366
+ def installed?
367
+ git_proxy.installed_to?(install_path)
303
368
  end
304
369
 
305
370
  def base_name
@@ -326,7 +391,7 @@ module Bundler
326
391
  if %r{^\w+://(\w+@)?}.match?(uri)
327
392
  # Downcase the domain component of the URI
328
393
  # and strip off a trailing slash, if one is present
329
- input = Bundler::URI.parse(uri).normalize.to_s.sub(%r{/$}, "")
394
+ input = Gem::URI.parse(uri).normalize.to_s.sub(%r{/$}, "")
330
395
  else
331
396
  # If there is no URI scheme, assume it is an ssh/git URI
332
397
  input = uri
@@ -336,7 +401,7 @@ module Bundler
336
401
  Bundler::Digest.sha1(input)
337
402
  end
338
403
 
339
- def cached_revision
404
+ def locked_revision
340
405
  options["revision"]
341
406
  end
342
407
 
@@ -345,7 +410,7 @@ module Bundler
345
410
  end
346
411
 
347
412
  def git_proxy
348
- @git_proxy ||= GitProxy.new(cache_path, uri, options, cached_revision, self)
413
+ @git_proxy ||= GitProxy.new(cache_path, uri, options, locked_revision, self)
349
414
  end
350
415
 
351
416
  def fetch
@@ -359,9 +424,12 @@ module Bundler
359
424
  def validate_spec(_spec); end
360
425
 
361
426
  def load_gemspec(file)
362
- stub = Gem::StubSpecification.gemspec_stub(file, install_path.parent, install_path.parent)
363
- stub.full_gem_path = Pathname.new(file).dirname.expand_path(root).to_s
364
- StubSpecification.from_stub(stub)
427
+ dirname = Pathname.new(file).dirname
428
+ SharedHelpers.chdir(dirname.to_s) do
429
+ stub = Gem::StubSpecification.gemspec_stub(file, install_path.parent, install_path.parent)
430
+ stub.full_gem_path = dirname.expand_path(root).to_s
431
+ StubSpecification.from_stub(stub)
432
+ end
365
433
  end
366
434
 
367
435
  def git_scope
@@ -375,6 +443,10 @@ module Bundler
375
443
  def override_for(path)
376
444
  Bundler.settings.local_overrides.key(path)
377
445
  end
446
+
447
+ def bare_repo?(path)
448
+ File.exist?(path.join("objects")) && File.exist?(path.join("HEAD"))
449
+ end
378
450
  end
379
451
  end
380
452
  end
@@ -11,6 +11,8 @@ module Bundler
11
11
  end
12
12
 
13
13
  if local_spec = Gem.loaded_specs["bundler"]
14
+ raise CorruptBundlerInstallError.new(local_spec) if local_spec.version.to_s != Bundler::VERSION
15
+
14
16
  idx << local_spec
15
17
  else
16
18
  idx << Gem::Specification.new do |s|
@@ -22,9 +24,8 @@ module Bundler
22
24
  s.bindir = "exe"
23
25
  s.homepage = "https://bundler.io"
24
26
  s.summary = "The best way to manage your application's dependencies"
25
- s.executables = %w[bundle]
26
- # can't point to the actual gemspec or else the require paths will be wrong
27
- s.loaded_from = __dir__
27
+ s.executables = %w[bundle bundler]
28
+ s.loaded_from = SharedHelpers.gemspec_path
28
29
  end
29
30
  end
30
31
 
@@ -18,9 +18,6 @@ module Bundler
18
18
  @options = options.dup
19
19
  @glob = options["glob"] || DEFAULT_GLOB
20
20
 
21
- @allow_cached = false
22
- @allow_remote = false
23
-
24
21
  @root_path = options["root_path"] || root
25
22
 
26
23
  if options["path"]
@@ -41,16 +38,6 @@ module Bundler
41
38
  @original_path = @path
42
39
  end
43
40
 
44
- def remote!
45
- @local_specs = nil
46
- @allow_remote = true
47
- end
48
-
49
- def cached!
50
- @local_specs = nil
51
- @allow_cached = true
52
- end
53
-
54
41
  def self.from_lock(options)
55
42
  new(options.merge("path" => options.delete("remote")))
56
43
  end
@@ -66,13 +53,15 @@ module Bundler
66
53
  "source at `#{@path}`"
67
54
  end
68
55
 
56
+ alias_method :to_gemfile, :path
57
+
69
58
  def hash
70
59
  [self.class, expanded_path, version].hash
71
60
  end
72
61
 
73
62
  def eql?(other)
74
- return unless other.class == self.class
75
- expanded_original_path == other.expanded_original_path &&
63
+ [Gemspec, Path].include?(other.class) &&
64
+ expanded_original_path == other.expanded_original_path &&
76
65
  version == other.version
77
66
  end
78
67
 
@@ -161,7 +150,7 @@ module Bundler
161
150
 
162
151
  def load_gemspec(file)
163
152
  return unless spec = Bundler.load_gemspec(file)
164
- Bundler.rubygems.set_installed_by_version(spec)
153
+ spec.installed_by_version = Gem::VERSION
165
154
  spec
166
155
  end
167
156
 
@@ -225,7 +214,7 @@ module Bundler
225
214
 
226
215
  # Some gem authors put absolute paths in their gemspec
227
216
  # and we have to save them from themselves
228
- spec.files = spec.files.map do |path|
217
+ spec.files = spec.files.filter_map do |path|
229
218
  next path unless /\A#{Pathname::SEPARATOR_PAT}/o.match?(path)
230
219
  next if File.directory?(path)
231
220
  begin
@@ -233,7 +222,7 @@ module Bundler
233
222
  rescue ArgumentError
234
223
  path
235
224
  end
236
- end.compact
225
+ end
237
226
 
238
227
  installer = Path::Installer.new(
239
228
  spec,
@@ -16,6 +16,9 @@ module Bundler
16
16
  @anonymized_uri = remove_auth(@uri).freeze
17
17
  end
18
18
 
19
+ MAX_CACHE_SLUG_HOST_SIZE = 255 - 1 - 32 # 255 minus dot minus MD5 length
20
+ private_constant :MAX_CACHE_SLUG_HOST_SIZE
21
+
19
22
  # @return [String] A slug suitable for use as a cache key for this
20
23
  # remote.
21
24
  #
@@ -28,10 +31,15 @@ module Bundler
28
31
  host = cache_uri.to_s.start_with?("file://") ? nil : cache_uri.host
29
32
 
30
33
  uri_parts = [host, cache_uri.user, cache_uri.port, cache_uri.path]
31
- uri_digest = SharedHelpers.digest(:MD5).hexdigest(uri_parts.compact.join("."))
34
+ uri_parts.compact!
35
+ uri_digest = SharedHelpers.digest(:MD5).hexdigest(uri_parts.join("."))
36
+
37
+ uri_parts.pop
38
+ host_parts = uri_parts.join(".")
39
+ return uri_digest if host_parts.empty?
32
40
 
33
- uri_parts[-1] = uri_digest
34
- uri_parts.compact.join(".")
41
+ shortened_host_parts = host_parts[0...MAX_CACHE_SLUG_HOST_SIZE]
42
+ [shortened_host_parts, uri_digest].join(".")
35
43
  end
36
44
  end
37
45
 
@@ -48,7 +56,7 @@ module Bundler
48
56
  end
49
57
 
50
58
  uri
51
- rescue Bundler::URI::InvalidComponentError
59
+ rescue Gem::URI::InvalidComponentError
52
60
  error_message = "Please CGI escape your usernames and passwords before " \
53
61
  "setting them for authentication."
54
62
  raise HTTPError.new(error_message)