rubygems-update 3.2.26 → 3.2.30

Sign up to get free protection for your applications and to get access to all the features.
Files changed (159) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +60 -0
  3. data/Manifest.txt +12 -3
  4. data/bundler/CHANGELOG.md +50 -1
  5. data/bundler/README.md +1 -1
  6. data/bundler/lib/bundler/build_metadata.rb +2 -2
  7. data/bundler/lib/bundler/cli/check.rb +1 -1
  8. data/bundler/lib/bundler/cli/gem.rb +19 -2
  9. data/bundler/lib/bundler/cli/info.rb +11 -4
  10. data/bundler/lib/bundler/cli/issue.rb +4 -3
  11. data/bundler/lib/bundler/cli/remove.rb +1 -2
  12. data/bundler/lib/bundler/cli.rb +1 -0
  13. data/bundler/lib/bundler/compact_index_client.rb +2 -2
  14. data/bundler/lib/bundler/definition.rb +16 -6
  15. data/bundler/lib/bundler/digest.rb +71 -0
  16. data/bundler/lib/bundler/errors.rb +18 -2
  17. data/bundler/lib/bundler/fetcher.rb +2 -1
  18. data/bundler/lib/bundler/friendly_errors.rb +5 -30
  19. data/bundler/lib/bundler/gem_helper.rb +6 -17
  20. data/bundler/lib/bundler/installer.rb +0 -1
  21. data/bundler/lib/bundler/plugin/installer.rb +2 -0
  22. data/bundler/lib/bundler/plugin.rb +23 -6
  23. data/bundler/lib/bundler/rubygems_ext.rb +4 -0
  24. data/bundler/lib/bundler/rubygems_gem_installer.rb +20 -4
  25. data/bundler/lib/bundler/rubygems_integration.rb +28 -9
  26. data/bundler/lib/bundler/runtime.rb +1 -1
  27. data/bundler/lib/bundler/settings.rb +9 -1
  28. data/bundler/lib/bundler/source/git.rb +22 -4
  29. data/bundler/lib/bundler/source/rubygems.rb +43 -72
  30. data/bundler/lib/bundler/source.rb +2 -0
  31. data/bundler/lib/bundler/source_list.rb +4 -0
  32. data/bundler/lib/bundler/spec_set.rb +1 -1
  33. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +2 -1
  34. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +1 -1
  35. data/bundler/lib/bundler/vendor/connection_pool/LICENSE +20 -0
  36. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +19 -21
  37. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  38. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +57 -0
  39. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +39 -74
  40. data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
  41. data/bundler/lib/bundler/vendor/molinillo/LICENSE +9 -0
  42. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
  43. data/bundler/lib/bundler/vendor/thor/LICENSE.md +20 -0
  44. data/bundler/lib/bundler/vendor/uri/LICENSE.txt +22 -0
  45. data/bundler/lib/bundler/version.rb +1 -1
  46. data/bundler/lib/bundler/worker.rb +2 -2
  47. data/bundler/lib/bundler.rb +13 -18
  48. data/lib/rubygems/command_manager.rb +3 -3
  49. data/lib/rubygems/commands/build_command.rb +3 -3
  50. data/lib/rubygems/commands/cert_command.rb +15 -8
  51. data/lib/rubygems/commands/check_command.rb +4 -4
  52. data/lib/rubygems/commands/cleanup_command.rb +3 -3
  53. data/lib/rubygems/commands/contents_command.rb +2 -2
  54. data/lib/rubygems/commands/dependency_command.rb +3 -3
  55. data/lib/rubygems/commands/environment_command.rb +1 -1
  56. data/lib/rubygems/commands/fetch_command.rb +3 -3
  57. data/lib/rubygems/commands/generate_index_command.rb +2 -2
  58. data/lib/rubygems/commands/help_command.rb +1 -1
  59. data/lib/rubygems/commands/info_command.rb +2 -2
  60. data/lib/rubygems/commands/install_command.rb +12 -11
  61. data/lib/rubygems/commands/list_command.rb +2 -2
  62. data/lib/rubygems/commands/lock_command.rb +1 -1
  63. data/lib/rubygems/commands/mirror_command.rb +1 -1
  64. data/lib/rubygems/commands/open_command.rb +2 -2
  65. data/lib/rubygems/commands/outdated_command.rb +4 -4
  66. data/lib/rubygems/commands/owner_command.rb +4 -4
  67. data/lib/rubygems/commands/pristine_command.rb +5 -5
  68. data/lib/rubygems/commands/push_command.rb +4 -4
  69. data/lib/rubygems/commands/query_command.rb +3 -3
  70. data/lib/rubygems/commands/rdoc_command.rb +3 -3
  71. data/lib/rubygems/commands/search_command.rb +2 -2
  72. data/lib/rubygems/commands/server_command.rb +3 -3
  73. data/lib/rubygems/commands/setup_command.rb +6 -6
  74. data/lib/rubygems/commands/signin_command.rb +2 -2
  75. data/lib/rubygems/commands/signout_command.rb +1 -1
  76. data/lib/rubygems/commands/sources_command.rb +4 -4
  77. data/lib/rubygems/commands/specification_command.rb +4 -4
  78. data/lib/rubygems/commands/stale_command.rb +1 -1
  79. data/lib/rubygems/commands/uninstall_command.rb +3 -3
  80. data/lib/rubygems/commands/unpack_command.rb +5 -5
  81. data/lib/rubygems/commands/update_command.rb +9 -9
  82. data/lib/rubygems/commands/which_command.rb +1 -1
  83. data/lib/rubygems/commands/yank_command.rb +4 -4
  84. data/lib/rubygems/config_file.rb +1 -1
  85. data/lib/rubygems/core_ext/tcpsocket_init.rb +2 -2
  86. data/lib/rubygems/defaults.rb +1 -1
  87. data/lib/rubygems/dependency_installer.rb +8 -8
  88. data/lib/rubygems/dependency_list.rb +1 -1
  89. data/lib/rubygems/doctor.rb +2 -2
  90. data/lib/rubygems/errors.rb +1 -2
  91. data/lib/rubygems/exceptions.rb +1 -1
  92. data/lib/rubygems/gem_runner.rb +3 -3
  93. data/lib/rubygems/gemcutter_utilities.rb +2 -2
  94. data/lib/rubygems/indexer.rb +2 -2
  95. data/lib/rubygems/install_default_message.rb +2 -2
  96. data/lib/rubygems/install_message.rb +2 -2
  97. data/lib/rubygems/install_update_options.rb +2 -2
  98. data/lib/rubygems/installer.rb +8 -8
  99. data/lib/rubygems/local_remote_options.rb +1 -1
  100. data/lib/rubygems/mock_gem_ui.rb +1 -1
  101. data/lib/rubygems/package/tar_reader.rb +1 -1
  102. data/lib/rubygems/package.rb +36 -46
  103. data/lib/rubygems/package_task.rb +2 -2
  104. data/lib/rubygems/platform.rb +2 -1
  105. data/lib/rubygems/query_utils.rb +4 -4
  106. data/lib/rubygems/rdoc.rb +1 -1
  107. data/lib/rubygems/remote_fetcher.rb +16 -22
  108. data/lib/rubygems/request/connection_pools.rb +1 -1
  109. data/lib/rubygems/request/http_pool.rb +1 -1
  110. data/lib/rubygems/request.rb +7 -5
  111. data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -1
  112. data/lib/rubygems/request_set/lockfile.rb +1 -1
  113. data/lib/rubygems/request_set.rb +5 -5
  114. data/lib/rubygems/requirement.rb +1 -1
  115. data/lib/rubygems/resolver/git_specification.rb +1 -1
  116. data/lib/rubygems/resolver/installer_set.rb +3 -3
  117. data/lib/rubygems/resolver/molinillo/LICENSE +9 -0
  118. data/lib/rubygems/resolver/molinillo.rb +1 -1
  119. data/lib/rubygems/resolver/set.rb +0 -1
  120. data/lib/rubygems/resolver/specification.rb +1 -1
  121. data/lib/rubygems/resolver.rb +31 -31
  122. data/lib/rubygems/s3_uri_signer.rb +4 -5
  123. data/lib/rubygems/security/policy.rb +6 -4
  124. data/lib/rubygems/security/signer.rb +4 -5
  125. data/lib/rubygems/security.rb +54 -20
  126. data/lib/rubygems/security_option.rb +2 -2
  127. data/lib/rubygems/server.rb +2 -2
  128. data/lib/rubygems/source/git.rb +2 -2
  129. data/lib/rubygems/source.rb +7 -7
  130. data/lib/rubygems/spec_fetcher.rb +5 -5
  131. data/lib/rubygems/specification.rb +12 -12
  132. data/lib/rubygems/specification_policy.rb +2 -2
  133. data/lib/rubygems/uninstaller.rb +6 -6
  134. data/lib/rubygems/uri.rb +111 -0
  135. data/lib/rubygems/user_interaction.rb +3 -3
  136. data/lib/rubygems/util/licenses.rb +1 -1
  137. data/lib/rubygems/util.rb +1 -1
  138. data/lib/rubygems/validator.rb +2 -2
  139. data/lib/rubygems/version_option.rb +1 -1
  140. data/lib/rubygems.rb +16 -16
  141. data/rubygems-update.gemspec +1 -1
  142. data/test/rubygems/helper.rb +4 -12
  143. data/test/rubygems/private_ec_key.pem +9 -0
  144. data/test/rubygems/test_gem.rb +59 -71
  145. data/test/rubygems/test_gem_commands_cert_command.rb +63 -4
  146. data/test/rubygems/test_gem_commands_install_command.rb +25 -0
  147. data/test/rubygems/test_gem_package.rb +27 -26
  148. data/test/rubygems/test_gem_platform.rb +1 -0
  149. data/test/rubygems/test_gem_remote_fetcher.rb +30 -0
  150. data/test/rubygems/test_gem_request.rb +35 -9
  151. data/test/rubygems/test_gem_resolver_installer_set.rb +18 -0
  152. data/test/rubygems/test_gem_security.rb +32 -4
  153. data/test/rubygems/test_gem_source_fetch_problem.rb +10 -0
  154. data/test/rubygems/test_gem_specification.rb +228 -232
  155. data/test/rubygems/test_gem_uri.rb +39 -0
  156. metadata +18 -9
  157. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +0 -66
  158. data/lib/rubygems/uri_parser.rb +0 -34
  159. data/lib/rubygems/uri_parsing.rb +0 -23
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7512a42ddcfe60a9e59f8e41784a0231ef8475623d8d26049b9a569464f29362
4
- data.tar.gz: 55bf6b6feb583c388c333bbda49a6cfea16b5ab4fbdd0729f3848b8e43446e61
3
+ metadata.gz: 8a9db6b191518d600933f57563d49e712ad295360f9d539390df3c18c6db92e6
4
+ data.tar.gz: eb76c101ce6d260d3f4255bbd1372fbc41f65e9519556d5d6b9850cbbcfcfaf2
5
5
  SHA512:
6
- metadata.gz: d517a10dc959cac467f01ae031b055d7de7cfe5f325ee78105b58d75069f9b239c5f8fbcd3ae1541a63bf7c5f148791dc4366a84a7c7f6465a689c8e2375784f
7
- data.tar.gz: 0bc64e82a79dac9d2dad0af7471ab9587eddeb2795b20651fa8a8f30eb8915fd56080984806d1c12b15b84890308e264011d45dd22b55945c11b02009aec4f88
6
+ metadata.gz: 93ab22a88c283d83ea077ec5a91de69c2ba055c1d7bb3d082745e0aad105a07ef6669e407e1bc4c049c860fdb60621eee14710fdc12b9a50e00b470867ddc744
7
+ data.tar.gz: b78873d02f2783632165254d939c18fcdacf64a460bbaab21b89859bd802c04da49a7d9fbc16e9abbcd50635ca2db2da469a671ab8ebd0f766f36948a388bc62
data/CHANGELOG.md CHANGED
@@ -1,3 +1,63 @@
1
+ # 3.2.30 / 2021-10-26
2
+
3
+ ## Enhancements:
4
+
5
+ * Add support to build and sign certificates with multiple key algorithms.
6
+ Pull request #4991 by doodzik
7
+ * Avoid loading the `digest` gem unnecessarily. Pull request #4979 by
8
+ deivid-rodriguez
9
+ * Prefer `require_relative` for all internal requires. Pull request #4978
10
+ by deivid-rodriguez
11
+ * Add missing `require` of `time` within
12
+ `Gem::Request.verify_certificate_message`. Pull request #4975 by nobu
13
+
14
+ ## Performance:
15
+
16
+ * Speed up `gem install`, specially under Windows. Pull request #4960 by
17
+ deivid-rodriguez
18
+
19
+ # 3.2.29 / 2021-10-08
20
+
21
+ ## Enhancements:
22
+
23
+ * Only disallow FIXME/TODO for first word of gemspec description. Pull
24
+ request #4937 by duckinator
25
+
26
+ ## Bug fixes:
27
+
28
+ * Fix `wordy` method in `SourceFetchProblem` changing the password of
29
+ source. Pull request #4910 by Huangxiaodui
30
+
31
+ ## Performance:
32
+
33
+ * Improve `require` performance, particularly on systems with a lot of
34
+ gems installed. Pull request #4951 by pocke
35
+
36
+ # 3.2.28 / 2021-09-23
37
+
38
+ ## Enhancements:
39
+
40
+ * Support MINGW-UCRT. Pull request #4925 by hsbt
41
+ * Only check if descriptions *start with* FIXME/TODO. Pull request #4841
42
+ by duckinator
43
+ * Avoid loading `uri` unnecessarily when activating gems. Pull request
44
+ #4897 by deivid-rodriguez
45
+
46
+ ## Bug fixes:
47
+
48
+ * Fix redacted credentials being sent to gemserver. Pull request #4919 by
49
+ jdliss
50
+
51
+ # 3.2.27 / 2021-09-03
52
+
53
+ ## Enhancements:
54
+
55
+ * Redact credentails when printing URI. Pull request #4868 by intuxicated
56
+ * Prefer `require_relative` to `require` for internal requires. Pull
57
+ request #4858 by deivid-rodriguez
58
+ * Prioritise gems with higher version for fetching metadata, and stop
59
+ fetching once we find a valid candidate. Pull request #4843 by intuxicated
60
+
1
61
  # 3.2.26 / 2021-08-17
2
62
 
3
63
  ## Enhancements:
data/Manifest.txt CHANGED
@@ -60,6 +60,7 @@ bundler/lib/bundler/dep_proxy.rb
60
60
  bundler/lib/bundler/dependency.rb
61
61
  bundler/lib/bundler/deployment.rb
62
62
  bundler/lib/bundler/deprecate.rb
63
+ bundler/lib/bundler/digest.rb
63
64
  bundler/lib/bundler/dsl.rb
64
65
  bundler/lib/bundler/endpoint_specification.rb
65
66
  bundler/lib/bundler/env.rb
@@ -223,11 +224,14 @@ bundler/lib/bundler/ui/rg_proxy.rb
223
224
  bundler/lib/bundler/ui/shell.rb
224
225
  bundler/lib/bundler/ui/silent.rb
225
226
  bundler/lib/bundler/uri_credentials_filter.rb
227
+ bundler/lib/bundler/vendor/connection_pool/LICENSE
226
228
  bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb
227
- bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb
228
229
  bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb
229
230
  bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb
231
+ bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb
232
+ bundler/lib/bundler/vendor/fileutils/LICENSE.txt
230
233
  bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb
234
+ bundler/lib/bundler/vendor/molinillo/LICENSE
231
235
  bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb
232
236
  bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb
233
237
  bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb
@@ -248,10 +252,12 @@ bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb
248
252
  bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb
249
253
  bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb
250
254
  bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb
255
+ bundler/lib/bundler/vendor/net-http-persistent/README.rdoc
251
256
  bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb
252
257
  bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb
253
258
  bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb
254
259
  bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb
260
+ bundler/lib/bundler/vendor/thor/LICENSE.md
255
261
  bundler/lib/bundler/vendor/thor/lib/thor.rb
256
262
  bundler/lib/bundler/vendor/thor/lib/thor/actions.rb
257
263
  bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb
@@ -284,6 +290,7 @@ bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb
284
290
  bundler/lib/bundler/vendor/thor/lib/thor/util.rb
285
291
  bundler/lib/bundler/vendor/thor/lib/thor/version.rb
286
292
  bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb
293
+ bundler/lib/bundler/vendor/uri/LICENSE.txt
287
294
  bundler/lib/bundler/vendor/uri/lib/uri.rb
288
295
  bundler/lib/bundler/vendor/uri/lib/uri/common.rb
289
296
  bundler/lib/bundler/vendor/uri/lib/uri/file.rb
@@ -431,6 +438,7 @@ lib/rubygems/resolver/local_specification.rb
431
438
  lib/rubygems/resolver/lock_set.rb
432
439
  lib/rubygems/resolver/lock_specification.rb
433
440
  lib/rubygems/resolver/molinillo.rb
441
+ lib/rubygems/resolver/molinillo/LICENSE
434
442
  lib/rubygems/resolver/molinillo/lib/molinillo.rb
435
443
  lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb
436
444
  lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb
@@ -485,9 +493,8 @@ lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem
485
493
  lib/rubygems/stub_specification.rb
486
494
  lib/rubygems/text.rb
487
495
  lib/rubygems/uninstaller.rb
496
+ lib/rubygems/uri.rb
488
497
  lib/rubygems/uri_formatter.rb
489
- lib/rubygems/uri_parser.rb
490
- lib/rubygems/uri_parsing.rb
491
498
  lib/rubygems/user_interaction.rb
492
499
  lib/rubygems/util.rb
493
500
  lib/rubygems/util/licenses.rb
@@ -540,6 +547,7 @@ test/rubygems/plugin/exception/rubygems_plugin.rb
540
547
  test/rubygems/plugin/load/rubygems_plugin.rb
541
548
  test/rubygems/plugin/standarderror/rubygems_plugin.rb
542
549
  test/rubygems/private3072_key.pem
550
+ test/rubygems/private_ec_key.pem
543
551
  test/rubygems/private_key.pem
544
552
  test/rubygems/public3072_cert.pem
545
553
  test/rubygems/public_cert.pem
@@ -678,6 +686,7 @@ test/rubygems/test_gem_stub_specification.rb
678
686
  test/rubygems/test_gem_text.rb
679
687
  test/rubygems/test_gem_uninstaller.rb
680
688
  test/rubygems/test_gem_unsatisfiable_dependency_error.rb
689
+ test/rubygems/test_gem_uri.rb
681
690
  test/rubygems/test_gem_uri_formatter.rb
682
691
  test/rubygems/test_gem_util.rb
683
692
  test/rubygems/test_gem_validator.rb
data/bundler/CHANGELOG.md CHANGED
@@ -1,3 +1,52 @@
1
+ # 2.2.30 (October 26, 2021)
2
+
3
+ ## Enhancements:
4
+
5
+ - Add a custom SHA1 digest implementation to no longer depend on the digest gem before we know which version to activate [#4989](https://github.com/rubygems/rubygems/pull/4989)
6
+ - Ensure vendored gems have licenses [#4998](https://github.com/rubygems/rubygems/pull/4998)
7
+ - Update broken link in Bundler::Fetcher::CertificateFailureError [#4987](https://github.com/rubygems/rubygems/pull/4987)
8
+ - Give better errors for some permission issues [#4965](https://github.com/rubygems/rubygems/pull/4965)
9
+ - Print better errors when `bundler/gem_tasks` fail [#4872](https://github.com/rubygems/rubygems/pull/4872)
10
+ - Fix `bundle install` to reinstall deleted gems [#4974](https://github.com/rubygems/rubygems/pull/4974)
11
+ - Unify issue template and ISSUES.md document [#4980](https://github.com/rubygems/rubygems/pull/4980)
12
+ - Bump vendored connection_pool to 2.2.5 [#4738](https://github.com/rubygems/rubygems/pull/4738)
13
+
14
+ ## Bug fixes:
15
+
16
+ - Fix error message pointing to non existing file when using a global gem cache [#4999](https://github.com/rubygems/rubygems/pull/4999)
17
+ - Fix install crash when lockfile has missing dependencies for the current platform [#4941](https://github.com/rubygems/rubygems/pull/4941)
18
+ - Make `bundle info` show a proper warning every time it finds a deleted gem [#4971](https://github.com/rubygems/rubygems/pull/4971)
19
+
20
+ # 2.2.29 (October 8, 2021)
21
+
22
+ ## Enhancements:
23
+
24
+ - Require at least Ruby 2.6.0 for gems created with recent rubies [#4920](https://github.com/rubygems/rubygems/pull/4920)
25
+ - Include glob information in string representation of git sources to make generated lockfiles deterministic [#4947](https://github.com/rubygems/rubygems/pull/4947)
26
+ - Add missing `rubygem_push` prerequisite [#4930](https://github.com/rubygems/rubygems/pull/4930)
27
+
28
+ # 2.2.28 (September 23, 2021)
29
+
30
+ ## Enhancements:
31
+
32
+ - Use example.com in new gem template, since it will never have a potentially dangerous backing website [#4918](https://github.com/rubygems/rubygems/pull/4918)
33
+ - Deprecate `--install` flag to `bundle remove` and trigger install by default [#4891](https://github.com/rubygems/rubygems/pull/4891)
34
+
35
+ # 2.2.27 (September 3, 2021)
36
+
37
+ ## Enhancements:
38
+
39
+ - Optimize some requires [#4887](https://github.com/rubygems/rubygems/pull/4887)
40
+ - Correctly redact credentials when using x-oauth-basic [#4866](https://github.com/rubygems/rubygems/pull/4866)
41
+
42
+ ## Bug fixes:
43
+
44
+ - Add missing key `branches:` to template for GitHub Actions [#4883](https://github.com/rubygems/rubygems/pull/4883)
45
+ - Fix `bundle plugin install` detection of already installed plugins [#4869](https://github.com/rubygems/rubygems/pull/4869)
46
+ - Make plugin installation idempotent [#4864](https://github.com/rubygems/rubygems/pull/4864)
47
+ - Fix `bundle check` showing duplicated gems when multiple platforms are locked [#4854](https://github.com/rubygems/rubygems/pull/4854)
48
+ - Fix `bundle check` incorrectly considering cached gems [#4853](https://github.com/rubygems/rubygems/pull/4853)
49
+
1
50
  # 2.2.26 (August 17, 2021)
2
51
 
3
52
  ## Enhancements:
@@ -77,7 +126,7 @@
77
126
  - Fix `bundle doctor` crashing when finding a broken symlink [#4707](https://github.com/rubygems/rubygems/pull/4707)
78
127
  - Fix incorrect re-resolve edge case [#4700](https://github.com/rubygems/rubygems/pull/4700)
79
128
  - Fix some gems being unintentionally locked under multiple lockfile sections [#4701](https://github.com/rubygems/rubygems/pull/4701)
80
- - Fix `--conservative` flag unexpectedly updating indirect dependencies [#4692](https://github.com/rubygems/rubygems/pull/4692)
129
+ - Fix `--conservative` flag unexpectedly updating indirect dependencies. NOTE: As part of this bug fix, some undocumented, unintentional code causing `bundle update --source <gem>` to update conservatively was fixed. Use the documented `bundle update --conservative <gem>` instead [#4692](https://github.com/rubygems/rubygems/pull/4692)
81
130
 
82
131
  # 2.2.21 (June 23, 2021)
83
132
 
data/bundler/README.md CHANGED
@@ -32,7 +32,7 @@ See [bundler.io](https://bundler.io) for the full documentation.
32
32
 
33
33
  For help with common problems, see [TROUBLESHOOTING](doc/TROUBLESHOOTING.md).
34
34
 
35
- Still stuck? Try [filing an issue](doc/contributing/ISSUES.md).
35
+ Still stuck? Try [filing an issue](https://github.com/rubygems/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md).
36
36
 
37
37
  ### Other questions
38
38
 
@@ -4,8 +4,8 @@ module Bundler
4
4
  # Represents metadata from when the Bundler gem was built.
5
5
  module BuildMetadata
6
6
  # begin ivars
7
- @built_at = "2021-08-17".freeze
8
- @git_commit_sha = "21fd333002".freeze
7
+ @built_at = "2021-10-26".freeze
8
+ @git_commit_sha = "e8df9bea62".freeze
9
9
  @release = true
10
10
  # end ivars
11
11
 
@@ -15,7 +15,7 @@ module Bundler
15
15
  definition.validate_runtime!
16
16
 
17
17
  begin
18
- definition.resolve_with_cache!
18
+ definition.resolve_only_locally!
19
19
  not_installed = definition.missing_specs
20
20
  rescue GemNotFound, VersionConflict
21
21
  Bundler.ui.error "Bundler can't satisfy your Gemfile's dependencies."
@@ -68,7 +68,7 @@ module Bundler
68
68
  :bundler_version => bundler_dependency_version,
69
69
  :git => use_git,
70
70
  :github_username => github_username.empty? ? "[USERNAME]" : github_username,
71
- :required_ruby_version => Gem.ruby_version < Gem::Version.new("2.4.a") ? "2.3.0" : "2.4.0",
71
+ :required_ruby_version => required_ruby_version,
72
72
  }
73
73
  ensure_safe_gem_name(name, constant_array)
74
74
 
@@ -169,7 +169,7 @@ module Bundler
169
169
  "For more information, see the RuboCop docs (https://docs.rubocop.org/en/stable/) " \
170
170
  "and the Ruby Style Guides (https://github.com/rubocop-hq/ruby-style-guide).")
171
171
  config[:rubocop] = true
172
- config[:rubocop_version] = Gem.ruby_version < Gem::Version.new("2.4.a") ? "0.81.0" : "1.7"
172
+ config[:rubocop_version] = rubocop_version
173
173
  Bundler.ui.info "RuboCop enabled in config"
174
174
  templates.merge!("rubocop.yml.tt" => ".rubocop.yml")
175
175
  end
@@ -350,5 +350,22 @@ module Bundler
350
350
  def open_editor(editor, file)
351
351
  thor.run(%(#{editor} "#{file}"))
352
352
  end
353
+
354
+ def required_ruby_version
355
+ if Gem.ruby_version < Gem::Version.new("2.4.a") then "2.3.0"
356
+ elsif Gem.ruby_version < Gem::Version.new("2.5.a") then "2.4.0"
357
+ elsif Gem.ruby_version < Gem::Version.new("2.6.a") then "2.5.0"
358
+ else
359
+ "2.6.0"
360
+ end
361
+ end
362
+
363
+ def rubocop_version
364
+ if Gem.ruby_version < Gem::Version.new("2.4.a") then "0.81.0"
365
+ elsif Gem.ruby_version < Gem::Version.new("2.5.a") then "1.12"
366
+ else
367
+ "1.21"
368
+ end
369
+ end
353
370
  end
354
371
  end
@@ -40,12 +40,13 @@ module Bundler
40
40
  end
41
41
 
42
42
  def print_gem_path(spec)
43
- if spec.name == "bundler"
43
+ name = spec.name
44
+ if name == "bundler"
44
45
  path = File.expand_path("../../../..", __FILE__)
45
46
  else
46
47
  path = spec.full_gem_path
47
- unless File.directory?(path)
48
- return Bundler.ui.warn "The gem #{gem_name} has been deleted. It was installed at: #{path}"
48
+ if spec.deleted_gem?
49
+ return Bundler.ui.warn "The gem #{name} has been deleted. It was installed at: #{path}"
49
50
  end
50
51
  end
51
52
 
@@ -54,8 +55,9 @@ module Bundler
54
55
 
55
56
  def print_gem_info(spec)
56
57
  metadata = spec.metadata
58
+ name = spec.name
57
59
  gem_info = String.new
58
- gem_info << " * #{spec.name} (#{spec.version}#{spec.git_version})\n"
60
+ gem_info << " * #{name} (#{spec.version}#{spec.git_version})\n"
59
61
  gem_info << "\tSummary: #{spec.summary}\n" if spec.summary
60
62
  gem_info << "\tHomepage: #{spec.homepage}\n" if spec.homepage
61
63
  gem_info << "\tDocumentation: #{metadata["documentation_uri"]}\n" if metadata.key?("documentation_uri")
@@ -67,6 +69,11 @@ module Bundler
67
69
  gem_info << "\tMailing List: #{metadata["mailing_list_uri"]}\n" if metadata.key?("mailing_list_uri")
68
70
  gem_info << "\tPath: #{spec.full_gem_path}\n"
69
71
  gem_info << "\tDefault Gem: yes" if spec.respond_to?(:default_gem?) && spec.default_gem?
72
+
73
+ if spec.deleted_gem?
74
+ return Bundler.ui.warn "The gem #{name} has been deleted. Gemspec information is still available though:\n#{gem_info}"
75
+ end
76
+
70
77
  Bundler.ui.info gem_info
71
78
  end
72
79
  end
@@ -20,9 +20,10 @@ module Bundler
20
20
 
21
21
  Hopefully the troubleshooting steps above resolved your problem! If things
22
22
  still aren't working the way you expect them to, please let us know so
23
- that we can diagnose and help fix the problem you're having. Please
24
- view the Filing Issues guide for more information:
25
- https://github.com/rubygems/rubygems/blob/master/bundler/doc/contributing/ISSUES.md
23
+ that we can diagnose and help fix the problem you're having, by filling
24
+ in the new issue form located at
25
+ https://github.com/rubygems/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md,
26
+ and copy and pasting the information below.
26
27
 
27
28
  EOS
28
29
 
@@ -11,8 +11,7 @@ module Bundler
11
11
  raise InvalidOption, "Please specify gems to remove." if @gems.empty?
12
12
 
13
13
  Injector.remove(@gems, {})
14
-
15
- Installer.install(Bundler.root, Bundler.definition) if @options["install"]
14
+ Installer.install(Bundler.root, Bundler.definition)
16
15
  end
17
16
  end
18
17
  end
@@ -184,6 +184,7 @@ module Bundler
184
184
  method_option "install", :type => :boolean, :banner =>
185
185
  "Runs 'bundle install' after removing the gems from the Gemfile"
186
186
  def remove(*gems)
187
+ SharedHelpers.major_deprecation(2, "The `--install` flag has been deprecated. `bundle install` is triggered by default.") if ARGV.include?("--install")
187
188
  require_relative "cli/remove"
188
189
  Remove.new(gems, options).run
189
190
  end
@@ -5,7 +5,7 @@ require "set"
5
5
 
6
6
  module Bundler
7
7
  class CompactIndexClient
8
- DEBUG_MUTEX = Mutex.new
8
+ DEBUG_MUTEX = Thread::Mutex.new
9
9
  def self.debug
10
10
  return unless ENV["DEBUG_COMPACT_INDEX"]
11
11
  DEBUG_MUTEX.synchronize { warn("[#{self}] #{yield}") }
@@ -25,7 +25,7 @@ module Bundler
25
25
  @endpoints = Set.new
26
26
  @info_checksums_by_name = {}
27
27
  @parsed_checksums = false
28
- @mutex = Mutex.new
28
+ @mutex = Thread::Mutex.new
29
29
  end
30
30
 
31
31
  def execution_mode=(block)
@@ -73,7 +73,6 @@ module Bundler
73
73
  @lockfile_contents = String.new
74
74
  @locked_bundler_version = nil
75
75
  @locked_ruby_version = nil
76
- @locked_specs_incomplete_for_platform = false
77
76
  @new_platform = nil
78
77
 
79
78
  if lockfile && File.exist?(lockfile)
@@ -139,6 +138,8 @@ module Bundler
139
138
  @dependency_changes = converge_dependencies
140
139
  @local_changes = converge_locals
141
140
 
141
+ @locked_specs_incomplete_for_platform = !@locked_specs.for(expand_dependencies(requested_dependencies & locked_dependencies), true, true)
142
+
142
143
  @requires = compute_requires
143
144
  end
144
145
 
@@ -161,6 +162,12 @@ module Bundler
161
162
  @multisource_allowed
162
163
  end
163
164
 
165
+ def resolve_only_locally!
166
+ @remote = false
167
+ sources.local_only!
168
+ resolve
169
+ end
170
+
164
171
  def resolve_with_cache!
165
172
  sources.cached!
166
173
  resolve
@@ -222,6 +229,10 @@ module Bundler
222
229
  end
223
230
  end
224
231
 
232
+ def locked_dependencies
233
+ @locked_deps.values
234
+ end
235
+
225
236
  def specs_for(groups)
226
237
  groups = requested_groups if groups.empty?
227
238
  deps = dependencies_for(groups)
@@ -361,8 +372,8 @@ module Bundler
361
372
  new_sources = gemfile_sources - @locked_sources
362
373
  deleted_sources = @locked_sources - gemfile_sources
363
374
 
364
- new_deps = @dependencies - @locked_deps.values
365
- deleted_deps = @locked_deps.values - @dependencies
375
+ new_deps = @dependencies - locked_dependencies
376
+ deleted_deps = locked_dependencies - @dependencies
366
377
 
367
378
  # Check if it is possible that the source is only changed thing
368
379
  if (new_deps.empty? && deleted_deps.empty?) && (!new_sources.empty? && !deleted_sources.empty?)
@@ -554,7 +565,7 @@ module Bundler
554
565
 
555
566
  def dependencies_for_source_changed?(source, locked_source = source)
556
567
  deps_for_source = @dependencies.select {|s| s.source == source }
557
- locked_deps_for_source = @locked_deps.values.select {|dep| dep.source == locked_source }
568
+ locked_deps_for_source = locked_dependencies.select {|dep| dep.source == locked_source }
558
569
 
559
570
  deps_for_source.uniq.sort != locked_deps_for_source.sort
560
571
  end
@@ -638,7 +649,7 @@ module Bundler
638
649
 
639
650
  def converge_dependencies
640
651
  frozen = Bundler.frozen_bundle?
641
- (@dependencies + @locked_deps.values).each do |dep|
652
+ (@dependencies + locked_dependencies).each do |dep|
642
653
  locked_source = @locked_deps[dep.name]
643
654
  # This is to make sure that if bundler is installing in deployment mode and
644
655
  # after locked_source and sources don't match, we still use locked_source.
@@ -745,7 +756,6 @@ module Bundler
745
756
  end
746
757
 
747
758
  resolve = SpecSet.new(converged)
748
- @locked_specs_incomplete_for_platform = !resolve.for(expand_dependencies(requested_dependencies & deps), true, true)
749
759
  resolve = SpecSet.new(resolve.for(expand_dependencies(deps, true), false, false).reject{|s| @unlock[:gems].include?(s.name) })
750
760
  diff = nil
751
761
 
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This code was extracted from https://github.com/Solistra/ruby-digest which is under public domain
4
+ module Bundler
5
+ module Digest
6
+ # The initial constant values for the 32-bit constant words A, B, C, D, and
7
+ # E, respectively.
8
+ SHA1_WORDS = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0].freeze
9
+
10
+ # The 8-bit field used for bitwise `AND` masking. Defaults to `0xFFFFFFFF`.
11
+ SHA1_MASK = 0xFFFFFFFF
12
+
13
+ class << self
14
+ def sha1(string)
15
+ unless string.is_a?(String)
16
+ raise TypeError, "can't convert #{string.class.inspect} into String"
17
+ end
18
+
19
+ buffer = string.b
20
+
21
+ words = SHA1_WORDS.dup
22
+ generate_split_buffer(buffer) do |chunk|
23
+ w = []
24
+ chunk.each_slice(4) do |a, b, c, d|
25
+ w << (((a << 8 | b) << 8 | c) << 8 | d)
26
+ end
27
+ a, b, c, d, e = *words
28
+ (16..79).each do |i|
29
+ w[i] = SHA1_MASK & rotate((w[i-3] ^ w[i-8] ^ w[i-14] ^ w[i-16]), 1)
30
+ end
31
+ 0.upto(79) do |i|
32
+ case i
33
+ when 0..19
34
+ f = ((b & c) | (~b & d))
35
+ k = 0x5A827999
36
+ when 20..39
37
+ f = (b ^ c ^ d)
38
+ k = 0x6ED9EBA1
39
+ when 40..59
40
+ f = ((b & c) | (b & d) | (c & d))
41
+ k = 0x8F1BBCDC
42
+ when 60..79
43
+ f = (b ^ c ^ d)
44
+ k = 0xCA62C1D6
45
+ end
46
+ t = SHA1_MASK & (SHA1_MASK & rotate(a, 5) + f + e + k + w[i])
47
+ a, b, c, d, e = t, a, SHA1_MASK & rotate(b, 30), c, d # rubocop:disable Style/ParallelAssignment
48
+ end
49
+ mutated = [a, b, c, d, e]
50
+ words.map!.with_index {|word, index| SHA1_MASK & (word + mutated[index]) }
51
+ end
52
+
53
+ words.pack("N*").unpack("H*").first
54
+ end
55
+
56
+ private
57
+
58
+ def generate_split_buffer(string, &block)
59
+ size = string.bytesize * 8
60
+ buffer = string.bytes << 128
61
+ buffer << 0 while buffer.size % 64 != 56
62
+ buffer.concat([size].pack("Q>").bytes)
63
+ buffer.each_slice(64, &block)
64
+ end
65
+
66
+ def rotate(value, spaces)
67
+ value << spaces | value >> (32 - spaces)
68
+ end
69
+ end
70
+ end
71
+ end
@@ -75,10 +75,26 @@ module Bundler
75
75
  end
76
76
  end
77
77
 
78
+ def permission_type
79
+ case @permission_type
80
+ when :create
81
+ "executable permissions for all parent directories and write permissions for `#{parent_folder}`"
82
+ when :delete
83
+ permissions = "executable permissions for all parent directories and write permissions for `#{parent_folder}`"
84
+ permissions += ", and the same thing for all subdirectories inside #{@path}" if File.directory?(@path)
85
+ permissions
86
+ else
87
+ "#{@permission_type} permissions for that path"
88
+ end
89
+ end
90
+
91
+ def parent_folder
92
+ File.dirname(@path)
93
+ end
94
+
78
95
  def message
79
96
  "There was an error while trying to #{action} `#{@path}`. " \
80
- "It is likely that you need to grant #{@permission_type} permissions " \
81
- "for that path."
97
+ "It is likely that you need to grant #{permission_type}."
82
98
  end
83
99
 
84
100
  status_code(23)
@@ -28,7 +28,8 @@ module Bundler
28
28
  " is a chance you are experiencing a man-in-the-middle attack, but" \
29
29
  " most likely your system doesn't have the CA certificates needed" \
30
30
  " for verification. For information about OpenSSL certificates, see" \
31
- " http://bit.ly/ruby-ssl. To connect without using SSL, edit your Gemfile" \
31
+ " https://railsapps.github.io/openssl-certificate-verify-failed.html." \
32
+ " To connect without using SSL, edit your Gemfile" \
32
33
  " sources and change 'https' to 'http'."
33
34
  end
34
35
  end
@@ -63,34 +63,6 @@ module Bundler
63
63
  def request_issue_report_for(e)
64
64
  Bundler.ui.error <<-EOS.gsub(/^ {8}/, ""), nil, nil
65
65
  --- ERROR REPORT TEMPLATE -------------------------------------------------------
66
- # Error Report
67
-
68
- ## Questions
69
-
70
- Please fill out answers to these questions, it'll help us figure out
71
- why things are going wrong.
72
-
73
- - **What did you do?**
74
-
75
- I ran the command `#{$PROGRAM_NAME} #{ARGV.join(" ")}`
76
-
77
- - **What did you expect to happen?**
78
-
79
- I expected Bundler to...
80
-
81
- - **What happened instead?**
82
-
83
- Instead, what happened was...
84
-
85
- - **Have you tried any solutions posted on similar issues in our issue tracker, stack overflow, or google?**
86
-
87
- I tried...
88
-
89
- - **Have you read our issues document, https://github.com/rubygems/rubygems/blob/master/bundler/doc/contributing/ISSUES.md?**
90
-
91
- ...
92
-
93
- ## Backtrace
94
66
 
95
67
  ```
96
68
  #{e.class}: #{e.message}
@@ -109,8 +81,7 @@ module Bundler
109
81
  First, try this link to see if there are any existing issue reports for this error:
110
82
  #{issues_url(e)}
111
83
 
112
- If there aren't any reports for this error yet, please copy and paste the report template above into a new issue. Don't forget to anonymize any private data! The new issue form is located at:
113
- https://github.com/rubygems/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md
84
+ If there aren't any reports for this error yet, please fill in the new issue form located at #{new_issue_url}, and copy and paste the report template above in there.
114
85
  EOS
115
86
  end
116
87
 
@@ -121,6 +92,10 @@ module Bundler
121
92
  "https://github.com/rubygems/rubygems/search?q=" \
122
93
  "#{CGI.escape(message)}&type=Issues"
123
94
  end
95
+
96
+ def new_issue_url
97
+ "https://github.com/rubygems/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md"
98
+ end
124
99
  end
125
100
 
126
101
  def self.with_friendly_errors