rubygems-update 3.4.6 → 3.4.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (145) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +77 -1
  3. data/Manifest.txt +3 -1
  4. data/POLICIES.md +5 -5
  5. data/README.md +17 -4
  6. data/bundler/CHANGELOG.md +74 -0
  7. data/bundler/README.md +1 -4
  8. data/bundler/lib/bundler/build_metadata.rb +2 -2
  9. data/bundler/lib/bundler/cli/init.rb +2 -2
  10. data/bundler/lib/bundler/cli.rb +1 -0
  11. data/bundler/lib/bundler/current_ruby.rb +2 -0
  12. data/bundler/lib/bundler/definition.rb +5 -1
  13. data/bundler/lib/bundler/dependency.rb +1 -1
  14. data/bundler/lib/bundler/endpoint_specification.rb +0 -4
  15. data/bundler/lib/bundler/environment_preserver.rb +2 -2
  16. data/bundler/lib/bundler/fetcher/dependency.rb +1 -5
  17. data/bundler/lib/bundler/fetcher.rb +2 -2
  18. data/bundler/lib/bundler/index.rb +2 -2
  19. data/bundler/lib/bundler/injector.rb +1 -1
  20. data/bundler/lib/bundler/installer/parallel_installer.rb +3 -2
  21. data/bundler/lib/bundler/installer/standalone.rb +1 -1
  22. data/bundler/lib/bundler/lazy_specification.rb +4 -8
  23. data/bundler/lib/bundler/lockfile_generator.rb +1 -1
  24. data/bundler/lib/bundler/lockfile_parser.rb +11 -11
  25. data/bundler/lib/bundler/man/bundle-add.1 +1 -1
  26. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  27. data/bundler/lib/bundler/man/bundle-cache.1 +1 -1
  28. data/bundler/lib/bundler/man/bundle-check.1 +1 -1
  29. data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
  30. data/bundler/lib/bundler/man/bundle-config.1 +1 -1
  31. data/bundler/lib/bundler/man/bundle-console.1 +1 -1
  32. data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
  33. data/bundler/lib/bundler/man/bundle-exec.1 +1 -1
  34. data/bundler/lib/bundler/man/bundle-gem.1 +1 -1
  35. data/bundler/lib/bundler/man/bundle-help.1 +1 -1
  36. data/bundler/lib/bundler/man/bundle-info.1 +1 -1
  37. data/bundler/lib/bundler/man/bundle-init.1 +5 -1
  38. data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
  39. data/bundler/lib/bundler/man/bundle-inject.1 +1 -1
  40. data/bundler/lib/bundler/man/bundle-install.1 +1 -1
  41. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  42. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  43. data/bundler/lib/bundler/man/bundle-open.1 +1 -1
  44. data/bundler/lib/bundler/man/bundle-outdated.1 +1 -1
  45. data/bundler/lib/bundler/man/bundle-platform.1 +1 -1
  46. data/bundler/lib/bundler/man/bundle-plugin.1 +1 -1
  47. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  48. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  49. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  50. data/bundler/lib/bundler/man/bundle-update.1 +1 -1
  51. data/bundler/lib/bundler/man/bundle-version.1 +1 -1
  52. data/bundler/lib/bundler/man/bundle-viz.1 +1 -1
  53. data/bundler/lib/bundler/man/bundle.1 +1 -1
  54. data/bundler/lib/bundler/man/gemfile.5 +1 -1
  55. data/bundler/lib/bundler/plugin/installer.rb +5 -2
  56. data/bundler/lib/bundler/plugin.rb +1 -1
  57. data/bundler/lib/bundler/remote_specification.rb +2 -6
  58. data/bundler/lib/bundler/resolver/base.rb +36 -4
  59. data/bundler/lib/bundler/resolver.rb +6 -9
  60. data/bundler/lib/bundler/rubygems_integration.rb +1 -1
  61. data/bundler/lib/bundler/settings.rb +1 -1
  62. data/bundler/lib/bundler/setup.rb +4 -1
  63. data/bundler/lib/bundler/shared_helpers.rb +1 -1
  64. data/bundler/lib/bundler/source/git/git_proxy.rb +27 -8
  65. data/bundler/lib/bundler/source/git.rb +2 -1
  66. data/bundler/lib/bundler/source/path.rb +1 -1
  67. data/bundler/lib/bundler/source/rubygems.rb +1 -2
  68. data/bundler/lib/bundler/spec_set.rb +13 -3
  69. data/bundler/lib/bundler/templates/Executable.bundler +1 -1
  70. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +1 -1
  71. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +10 -0
  72. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +1 -1
  73. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +1 -1
  74. data/bundler/lib/bundler/uri_normalizer.rb +23 -0
  75. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +6 -7
  76. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +8 -1
  77. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +5 -4
  78. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +4 -2
  79. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +4 -1
  80. data/bundler/lib/bundler/version.rb +1 -1
  81. data/bundler/lib/bundler.rb +10 -9
  82. data/lib/rubygems/bundler_version_finder.rb +1 -1
  83. data/lib/rubygems/command.rb +10 -6
  84. data/lib/rubygems/command_manager.rb +1 -0
  85. data/lib/rubygems/commands/exec_command.rb +248 -0
  86. data/lib/rubygems/commands/help_command.rb +3 -3
  87. data/lib/rubygems/commands/pristine_command.rb +9 -0
  88. data/lib/rubygems/commands/uninstall_command.rb +3 -0
  89. data/lib/rubygems/core_ext/kernel_require.rb +0 -10
  90. data/lib/rubygems/defaults.rb +2 -2
  91. data/lib/rubygems/dependency.rb +1 -1
  92. data/lib/rubygems/deprecate.rb +2 -2
  93. data/lib/rubygems/ext/builder.rb +17 -0
  94. data/lib/rubygems/ext/ext_conf_builder.rb +1 -2
  95. data/lib/rubygems/ext/rake_builder.rb +1 -1
  96. data/lib/rubygems/package/tar_header.rb +1 -1
  97. data/lib/rubygems/package/tar_reader/entry.rb +88 -7
  98. data/lib/rubygems/package/tar_reader.rb +0 -28
  99. data/lib/rubygems/platform.rb +2 -2
  100. data/lib/rubygems/request_set/gem_dependency_api.rb +0 -1
  101. data/lib/rubygems/requirement.rb +1 -1
  102. data/lib/rubygems/resolver/stats.rb +1 -1
  103. data/lib/rubygems/source/git.rb +1 -1
  104. data/lib/rubygems/specification.rb +9 -1
  105. data/lib/rubygems/specification_policy.rb +5 -0
  106. data/lib/rubygems/stub_specification.rb +7 -7
  107. data/lib/rubygems/text.rb +1 -1
  108. data/lib/rubygems/util/licenses.rb +2 -2
  109. data/lib/rubygems/version.rb +2 -2
  110. data/lib/rubygems.rb +3 -3
  111. data/rubygems-update.gemspec +1 -1
  112. data/test/rubygems/helper.rb +2 -3
  113. data/test/rubygems/package/tar_test_case.rb +50 -15
  114. data/test/rubygems/simple_gem.rb +1 -1
  115. data/test/rubygems/test_gem.rb +29 -0
  116. data/test/rubygems/test_gem_bundler_version_finder.rb +2 -2
  117. data/test/rubygems/test_gem_command_manager.rb +25 -0
  118. data/test/rubygems/test_gem_commands_exec_command.rb +851 -0
  119. data/test/rubygems/test_gem_commands_install_command.rb +1 -1
  120. data/test/rubygems/test_gem_commands_pristine_command.rb +48 -0
  121. data/test/rubygems/test_gem_commands_setup_command.rb +1 -1
  122. data/test/rubygems/test_gem_commands_uninstall_command.rb +31 -14
  123. data/test/rubygems/test_gem_ext_builder.rb +3 -5
  124. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +20 -6
  125. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
  126. data/test/rubygems/test_gem_ext_cargo_builder.rb +1 -1
  127. data/test/rubygems/test_gem_gem_runner.rb +6 -1
  128. data/test/rubygems/test_gem_package.rb +0 -25
  129. data/test/rubygems/test_gem_package_tar_reader.rb +48 -1
  130. data/test/rubygems/test_gem_package_tar_reader_entry.rb +151 -6
  131. data/test/rubygems/test_gem_remote_fetcher.rb +1 -1
  132. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +10 -10
  133. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +2 -2
  134. data/test/rubygems/test_gem_resolver_git_set.rb +9 -9
  135. data/test/rubygems/test_gem_resolver_git_specification.rb +1 -1
  136. data/test/rubygems/test_gem_source.rb +1 -1
  137. data/test/rubygems/test_gem_source_git.rb +13 -12
  138. data/test/rubygems/test_gem_source_installed.rb +1 -1
  139. data/test/rubygems/test_gem_source_lock.rb +3 -3
  140. data/test/rubygems/test_gem_source_vendor.rb +1 -1
  141. data/test/rubygems/test_gem_specification.rb +36 -2
  142. data/test/rubygems/test_gem_version.rb +2 -2
  143. data/test/rubygems/test_kernel.rb +0 -8
  144. metadata +6 -4
  145. data/bundler/lib/bundler/templates/gems.rb +0 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b5e3c7eccc94daeddcabd73da3805e447a3c1577b4aef2513078bb4d21dcde97
4
- data.tar.gz: e3b4feb4e07635be10ed9724b0574d4e210da42f202bee8634d53c292a096413
3
+ metadata.gz: 46744d5e03cb80dd7f581f3b934f104c88910b8442d3659b6d41d55777ab7f3a
4
+ data.tar.gz: d7a2016d3d9af5bc86f92ec7bdb8ec8199d7de024a5fbe4b4a2cd0584bcbcf37
5
5
  SHA512:
6
- metadata.gz: 6c2c680e262544d33b81b7c7e797e9c05851eafac9b5f3279a2d53c923e7e6b5278b91227e136821f301372a340eeda630f2e700df3a13f503e6663c7daa7c00
7
- data.tar.gz: 13871c7e43a8686a1fa53c599c6074bd5719a60efb116e50728819642734f03ad360d38697a168d5ff167de85ccb6fc5d443f222426dcaa8ec5307b52fbda0a3
6
+ metadata.gz: 8416a6fc4327c003c86b8f05dcebcb0c073cb098ccf3d08661a121aedfca3d493b7b6440a605b5c1711f57b77ff230124d58492f99a58a4f926dd94992b4355c
7
+ data.tar.gz: 67d782b6794632c09340a51b0f46cde1b82f70cc91aed59cb01961ed6ab57ee2c9a9043c08250c0c6889e2bab71faa6b6e6fa71de0e6cf5e85472ffade6ce73c
data/CHANGELOG.md CHANGED
@@ -1,3 +1,79 @@
1
+ # 3.4.10 / 2023-03-27
2
+
3
+ ## Enhancements:
4
+
5
+ * Installs bundler 2.4.10 as a default gem.
6
+
7
+ # 3.4.9 / 2023-03-20
8
+
9
+ ## Enhancements:
10
+
11
+ * Improve `TarHeader#calculate_checksum` speed and readability. Pull
12
+ request [#6476](https://github.com/rubygems/rubygems/pull/6476) by
13
+ Maumagnaguagno
14
+ * Added only missing extensions option into pristine command. Pull request
15
+ [#6446](https://github.com/rubygems/rubygems/pull/6446) by hsbt
16
+ * Installs bundler 2.4.9 as a default gem.
17
+
18
+ ## Bug fixes:
19
+
20
+ * Fix `$LOAD_PATH` in rake and ext_conf builder. Pull request
21
+ [#6490](https://github.com/rubygems/rubygems/pull/6490) by ntkme
22
+ * Fix `gem uninstall` with `--install-dir`. Pull request
23
+ [#6481](https://github.com/rubygems/rubygems/pull/6481) by
24
+ deivid-rodriguez
25
+
26
+ ## Documentation:
27
+
28
+ * Document our current release policy. Pull request
29
+ [#6450](https://github.com/rubygems/rubygems/pull/6450) by
30
+ deivid-rodriguez
31
+
32
+ # 3.4.8 / 2023-03-08
33
+
34
+ ## Enhancements:
35
+
36
+ * Add TarReader::Entry#seek to seek within the tar file entry. Pull
37
+ request [#6390](https://github.com/rubygems/rubygems/pull/6390) by
38
+ martinemde
39
+ * Avoid calling String#dup in Gem::Version#marshal_dump. Pull request
40
+ [#6438](https://github.com/rubygems/rubygems/pull/6438) by segiddins
41
+ * Remove hardcoded "master" branch references. Pull request
42
+ [#6425](https://github.com/rubygems/rubygems/pull/6425) by
43
+ deivid-rodriguez
44
+ * [Experimental] Add `gem exec` command to run executables from gems that
45
+ may or may not be installed. Pull request
46
+ [#6309](https://github.com/rubygems/rubygems/pull/6309) by segiddins
47
+ * Installs bundler 2.4.8 as a default gem.
48
+
49
+ ## Bug fixes:
50
+
51
+ * Fix installation error of same version of default gems with local
52
+ installation. Pull request
53
+ [#6430](https://github.com/rubygems/rubygems/pull/6430) by hsbt
54
+ * Use proper memoized var name for Gem.state_home. Pull request
55
+ [#6420](https://github.com/rubygems/rubygems/pull/6420) by simi
56
+
57
+ ## Documentation:
58
+
59
+ * Switch supporting explanations to all Ruby Central. Pull request
60
+ [#6419](https://github.com/rubygems/rubygems/pull/6419) by indirect
61
+ * Update the link to OpenSource.org. Pull request
62
+ [#6392](https://github.com/rubygems/rubygems/pull/6392) by nobu
63
+
64
+ # 3.4.7 / 2023-02-15
65
+
66
+ ## Enhancements:
67
+
68
+ * Warn on self referencing gemspec dependency. Pull request
69
+ [#6335](https://github.com/rubygems/rubygems/pull/6335) by simi
70
+ * Installs bundler 2.4.7 as a default gem.
71
+
72
+ ## Bug fixes:
73
+
74
+ * Fix inconsistent behavior of zero byte files in archive. Pull request
75
+ [#6329](https://github.com/rubygems/rubygems/pull/6329) by martinemde
76
+
1
77
  # 3.4.6 / 2023-01-31
2
78
 
3
79
  ## Enhancements:
@@ -440,7 +516,7 @@
440
516
  ## Breaking changes:
441
517
 
442
518
  * Removed deprecated `gem server` command. Pull request [#5034](https://github.com/rubygems/rubygems/pull/5034) by hsbt
443
- * Remove MacOS specific gem layout. Pull request [#4833](https://github.com/rubygems/rubygems/pull/4833) by deivid-rodriguez
519
+ * Remove macOS specific gem layout. Pull request [#4833](https://github.com/rubygems/rubygems/pull/4833) by deivid-rodriguez
444
520
  * Default `gem update` documentation format is now only `ri`. Pull request
445
521
  [#3888](https://github.com/rubygems/rubygems/pull/3888) by hsbt
446
522
 
data/Manifest.txt CHANGED
@@ -205,7 +205,6 @@ bundler/lib/bundler/templates/Executable
205
205
  bundler/lib/bundler/templates/Executable.bundler
206
206
  bundler/lib/bundler/templates/Executable.standalone
207
207
  bundler/lib/bundler/templates/Gemfile
208
- bundler/lib/bundler/templates/gems.rb
209
208
  bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt
210
209
  bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt
211
210
  bundler/lib/bundler/templates/newgem/Cargo.toml.tt
@@ -244,6 +243,7 @@ bundler/lib/bundler/ui/rg_proxy.rb
244
243
  bundler/lib/bundler/ui/shell.rb
245
244
  bundler/lib/bundler/ui/silent.rb
246
245
  bundler/lib/bundler/uri_credentials_filter.rb
246
+ bundler/lib/bundler/uri_normalizer.rb
247
247
  bundler/lib/bundler/vendor/.document
248
248
  bundler/lib/bundler/vendor/connection_pool/LICENSE
249
249
  bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb
@@ -348,6 +348,7 @@ lib/rubygems/commands/cleanup_command.rb
348
348
  lib/rubygems/commands/contents_command.rb
349
349
  lib/rubygems/commands/dependency_command.rb
350
350
  lib/rubygems/commands/environment_command.rb
351
+ lib/rubygems/commands/exec_command.rb
351
352
  lib/rubygems/commands/fetch_command.rb
352
353
  lib/rubygems/commands/generate_index_command.rb
353
354
  lib/rubygems/commands/help_command.rb
@@ -617,6 +618,7 @@ test/rubygems/test_gem_commands_cleanup_command.rb
617
618
  test/rubygems/test_gem_commands_contents_command.rb
618
619
  test/rubygems/test_gem_commands_dependency_command.rb
619
620
  test/rubygems/test_gem_commands_environment_command.rb
621
+ test/rubygems/test_gem_commands_exec_command.rb
620
622
  test/rubygems/test_gem_commands_fetch_command.rb
621
623
  test/rubygems/test_gem_commands_generate_index_command.rb
622
624
  test/rubygems/test_gem_commands_help_command.rb
data/POLICIES.md CHANGED
@@ -128,8 +128,8 @@ permissions compromised or exposed.
128
128
 
129
129
  ## Changing These Policies
130
130
 
131
- These policies were set in order to reduce the burden of maintenance and to
132
- keep committers current with existing development and policies. RubyGems work
133
- is primarily volunteer-driven which limits the ability to provide long-term
134
- support. By joining [Ruby Together](https://rubytogether.org) you can help
135
- extend support for older RubyGems versions.
131
+ These policies were set in order to reduce the burden of maintenance and to keep
132
+ committers current with existing development and policies. RubyGems work is
133
+ primarily volunteer-driven which limits the ability to provide long-term
134
+ support. By joining [Ruby Central](https://rubycentral.org/#/portal/signup) you
135
+ can help extend support for older RubyGems versions.
data/README.md CHANGED
@@ -64,6 +64,22 @@ To upgrade to the latest RubyGems, run:
64
64
 
65
65
  See [UPGRADING](UPGRADING.md) for more details and alternative instructions.
66
66
 
67
+ ## Release policy
68
+
69
+ RubyGems and Bundler are released in sync, although they do not share their
70
+ major version number. It is planned that also their major version numbers will
71
+ be sync'ed in the future.
72
+
73
+ The release policy is somewhat similar to the release policy of Ruby itself:
74
+
75
+ * Frequent patch releases (every 2-4 weeks) including bug fixes, minor
76
+ enhancements, small features, or even medium sized features declared as
77
+ experimental for battle testing.
78
+ * Yearly minor releases including bigger features, and minor breaking changes
79
+ (affecting only edge cases and a very small set of users).
80
+ * Occasional major releases (replacing yearly minors) including major breaking
81
+ changes.
82
+
67
83
  ## Documentation
68
84
 
69
85
  RubyGems uses [rdoc](https://github.com/rdoc/rdoc) for documentation. A compiled set of the docs
@@ -87,15 +103,12 @@ See https://bundler.io/compatibility for known issues.
87
103
 
88
104
  ### Supporting
89
105
 
90
- <a href="https://rubytogether.org/"><img src="https://rubytogether.org/images/rubies.svg" width=200></a><br/>
91
- <a href="https://rubytogether.org/">Ruby Together</a> pays some RubyGems maintainers for their ongoing work. As a grassroots initiative committed to supporting the critical Ruby infrastructure you rely on, Ruby Together is funded entirely by the Ruby community. Contribute today <a href="https://rubytogether.org/developers">as an individual</a> or even better, <a href="https://rubytogether.org/companies">as a company</a>, and ensure that RubyGems, Bundler, and other shared tooling is around for years to come.
106
+ RubyGems is managed by [Ruby Central](https://rubycentral.org), a non-profit organization that supports the Ruby community through projects like this one, as well as [RubyConf](https://rubyconf.org), [RailsConf](https://railsconf.org), and [RubyGems.org](https://rubygems.org). You can support Ruby Central by attending or [sponsoring](sponsors@rubycentral.org) a conference, or by [joining as a supporting member](https://rubycentral.org/#/portal/signup).
92
107
 
93
108
  ### Contributing
94
109
 
95
110
  If you'd like to contribute to RubyGems, that's awesome, and we <3 you. Check out our [guide to contributing](CONTRIBUTING.md) for more information.
96
111
 
97
- While some RubyGems contributors are compensated by Ruby Together, the project maintainers make decisions independent of Ruby Together. As a project, we welcome contributions regardless of the author’s affiliation with Ruby Together.
98
-
99
112
  ### Code of Conduct
100
113
 
101
114
  Everyone interacting in the RubyGems project’s codebases, issue trackers, chat rooms, and mailing lists is expected to follow the [contributor code of conduct](https://github.com/rubygems/rubygems/blob/master/CODE_OF_CONDUCT.md).
data/bundler/CHANGELOG.md CHANGED
@@ -1,3 +1,77 @@
1
+ # 2.4.10 (March 27, 2023)
2
+
3
+ ## Bug fixes:
4
+
5
+ - Fix some unnecessary top level dependency downgrades [#6535](https://github.com/rubygems/rubygems/pull/6535)
6
+ - Fix incorrect ruby platform removal from lockfile when adding Gemfile dependencies [#6540](https://github.com/rubygems/rubygems/pull/6540)
7
+ - Fix installing plugins in frozen mode [#6543](https://github.com/rubygems/rubygems/pull/6543)
8
+ - Restore "enumerability" of `SpecSet` [#6532](https://github.com/rubygems/rubygems/pull/6532)
9
+
10
+ # 2.4.9 (March 20, 2023)
11
+
12
+ ## Security:
13
+
14
+ - Don't recommend `--full-index` on errors [#6493](https://github.com/rubygems/rubygems/pull/6493)
15
+
16
+ ## Enhancements:
17
+
18
+ - Fix duplicated specs in some error messages [#6475](https://github.com/rubygems/rubygems/pull/6475)
19
+ - When running `bundle lock --update <name>`, checkout locked revision of unrelated git sources directly [#6459](https://github.com/rubygems/rubygems/pull/6459)
20
+ - Avoid expiring git sources when unnecessary [#6458](https://github.com/rubygems/rubygems/pull/6458)
21
+ - Use `RbSys::ExtensionTask` when creating new rust gems [#6352](https://github.com/rubygems/rubygems/pull/6352)
22
+ - Don't ignore pre-releases when there's only one candidate [#6441](https://github.com/rubygems/rubygems/pull/6441)
23
+
24
+ ## Bug fixes:
25
+
26
+ - Fix incorrect removal of ruby platform when auto-healing corrupted lockfiles [#6495](https://github.com/rubygems/rubygems/pull/6495)
27
+ - Don't consider platform specific candidates when `force_ruby_platform` set [#6442](https://github.com/rubygems/rubygems/pull/6442)
28
+ - Better deal with circular dependencies [#6330](https://github.com/rubygems/rubygems/pull/6330)
29
+
30
+ ## Documentation:
31
+
32
+ - Add debugging docs [#6387](https://github.com/rubygems/rubygems/pull/6387)
33
+ - Document our current release policy [#6450](https://github.com/rubygems/rubygems/pull/6450)
34
+
35
+ # 2.4.8 (March 8, 2023)
36
+
37
+ ## Security:
38
+
39
+ - Safe load all marshaled data [#6384](https://github.com/rubygems/rubygems/pull/6384)
40
+
41
+ ## Enhancements:
42
+
43
+ - Better suggestion when `bundler/setup` fails due to missing gems and Gemfile is not the default [#6428](https://github.com/rubygems/rubygems/pull/6428)
44
+ - Simplify the gem package file filter in the gemspec template [#6344](https://github.com/rubygems/rubygems/pull/6344)
45
+ - Auto-heal corrupted `Gemfile.lock` with no specs [#6423](https://github.com/rubygems/rubygems/pull/6423)
46
+ - Auto-heal on corrupted lockfile with missing deps [#6400](https://github.com/rubygems/rubygems/pull/6400)
47
+ - Give a better message when Gemfile branch does not exist [#6383](https://github.com/rubygems/rubygems/pull/6383)
48
+
49
+ ## Bug fixes:
50
+
51
+ - Respect --no-install option for git: sources [#6088](https://github.com/rubygems/rubygems/pull/6088)
52
+ - Fix `gems.rb` lockfile for bundler version lookup in template [#6413](https://github.com/rubygems/rubygems/pull/6413)
53
+
54
+ ## Documentation:
55
+
56
+ - Switch supporting explanations to all Ruby Central [#6419](https://github.com/rubygems/rubygems/pull/6419)
57
+
58
+ # 2.4.7 (February 15, 2023)
59
+
60
+ ## Enhancements:
61
+
62
+ - Add `--gemfile` flag to `bundle init` to configure gemfile name to generate [#6046](https://github.com/rubygems/rubygems/pull/6046)
63
+ - Improve solve failure explanations by using better wording [#6366](https://github.com/rubygems/rubygems/pull/6366)
64
+ - Restore better error message when locked ref does not exist [#6356](https://github.com/rubygems/rubygems/pull/6356)
65
+ - Avoid crashing when installing from a corrupted lockfile [#6355](https://github.com/rubygems/rubygems/pull/6355)
66
+ - Improve wording of unmet dependencies warning [#6357](https://github.com/rubygems/rubygems/pull/6357)
67
+ - Add Ruby 3.2 and 3.3 platforms to Gemfile DSL [#6346](https://github.com/rubygems/rubygems/pull/6346)
68
+
69
+ ## Bug fixes:
70
+
71
+ - Fix crash in pub grub involving empty ranges [#6365](https://github.com/rubygems/rubygems/pull/6365)
72
+ - Make gemspec file generated by `bundle gem` properly exclude itself from packaged gem [#6339](https://github.com/rubygems/rubygems/pull/6339)
73
+ - Preserve relative path sources in standalone setup [#6327](https://github.com/rubygems/rubygems/pull/6327)
74
+
1
75
  # 2.4.6 (January 31, 2023)
2
76
 
3
77
  ## Enhancements:
data/bundler/README.md CHANGED
@@ -46,12 +46,9 @@ If you'd like to contribute to Bundler, that's awesome, and we <3 you. We've put
46
46
 
47
47
  If you'd like to request a substantial change to Bundler or its documentation, refer to the [Bundler RFC process](https://github.com/rubygems/rfcs) for more information.
48
48
 
49
- While some Bundler contributors are compensated by Ruby Together, the project maintainers make decisions independent of Ruby Together. As a project, we welcome contributions regardless of the author's affiliation with Ruby Together.
50
-
51
49
  ### Supporting
52
50
 
53
- <a href="https://rubytogether.org/"><img src="https://rubytogether.org/images/rubies.svg" width="150"></a><br>
54
- <a href="https://rubytogether.org/">Ruby Together</a> pays some Bundler maintainers for their ongoing work. As a grassroots initiative committed to supporting the critical Ruby infrastructure you rely on, Ruby Together is funded entirely by the Ruby community. Contribute today <a href="https://rubytogether.org/developers">as an individual</a> or (better yet) <a href="https://rubytogether.org/companies">as a company</a> to ensure that Bundler, RubyGems, and other shared tooling is around for years to come.
51
+ RubyGems is managed by [Ruby Central](https://rubycentral.org), a non-profit organization that supports the Ruby community through projects like this one, as well as [RubyConf](https://rubyconf.org), [RailsConf](https://railsconf.org), and [RubyGems.org](https://rubygems.org). You can support Ruby Central by attending or [sponsoring](sponsors@rubycentral.org) a conference, or by [joining as a supporting member](https://rubycentral.org/#/portal/signup).
55
52
 
56
53
  ### Code of Conduct
57
54
 
@@ -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 = "2023-01-31".freeze
8
- @git_commit_sha = "598c04d54a".freeze
7
+ @built_at = "2023-03-27".freeze
8
+ @git_commit_sha = "7ffdec80d0".freeze
9
9
  @release = true
10
10
  # end ivars
11
11
 
@@ -32,7 +32,7 @@ module Bundler
32
32
  file << spec.to_gemfile
33
33
  end
34
34
  else
35
- File.open(File.expand_path("../templates/#{gemfile}", __dir__), "r") do |template|
35
+ File.open(File.expand_path("../templates/Gemfile", __dir__), "r") do |template|
36
36
  File.open(gemfile, "wb") do |destination|
37
37
  IO.copy_stream(template, destination)
38
38
  end
@@ -45,7 +45,7 @@ module Bundler
45
45
  private
46
46
 
47
47
  def gemfile
48
- @gemfile ||= Bundler.preferred_gemfile_name
48
+ @gemfile ||= options[:gemfile] || Bundler.preferred_gemfile_name
49
49
  end
50
50
  end
51
51
  end
@@ -156,6 +156,7 @@ module Bundler
156
156
  dependency listed in the gemspec file to the newly created Gemfile.
157
157
  D
158
158
  method_option "gemspec", :type => :string, :banner => "Use the specified .gemspec to create the Gemfile"
159
+ method_option "gemfile", :type => :string, :banner => "Use the specified name for the gemfile instead of 'Gemfile'"
159
160
  def init
160
161
  require_relative "cli/init"
161
162
  Init.new(options.dup).run
@@ -22,6 +22,8 @@ module Bundler
22
22
  2.7
23
23
  3.0
24
24
  3.1
25
+ 3.2
26
+ 3.3
25
27
  ].freeze
26
28
 
27
29
  KNOWN_MAJOR_VERSIONS = KNOWN_MINOR_VERSIONS.map {|v| v.split(".", 2).first }.uniq.freeze
@@ -726,6 +726,8 @@ module Bundler
726
726
  dep.source = sources.get(dep.source)
727
727
  end
728
728
 
729
+ next if unlocking?
730
+
729
731
  unless locked_dep = @locked_deps[dep.name]
730
732
  changes = true
731
733
  next
@@ -886,8 +888,9 @@ module Bundler
886
888
  end
887
889
 
888
890
  def additional_base_requirements_for_resolve(resolution_packages, last_resolve)
889
- return resolution_packages unless @locked_gems && unlocking? && !sources.expired_sources?(@locked_gems.sources)
891
+ return resolution_packages unless @locked_gems && !sources.expired_sources?(@locked_gems.sources)
890
892
  converge_specs(@originally_locked_specs - last_resolve).each do |locked_spec|
893
+ next if locked_spec.source.is_a?(Source::Path)
891
894
  resolution_packages.base_requirements[locked_spec.name] = Gem::Requirement.new(">= #{locked_spec.version}")
892
895
  end
893
896
  resolution_packages
@@ -898,6 +901,7 @@ module Bundler
898
901
  Bundler.local_platform == Gem::Platform::RUBY ||
899
902
  !platforms.include?(Gem::Platform::RUBY) ||
900
903
  (@new_platform && platforms.last == Gem::Platform::RUBY) ||
904
+ @dependency_changes ||
901
905
  !@originally_locked_specs.incomplete_ruby_specs?(dependencies)
902
906
 
903
907
  remove_platform(Gem::Platform::RUBY)
@@ -9,7 +9,7 @@ module Bundler
9
9
  attr_reader :autorequire
10
10
  attr_reader :groups, :platforms, :gemfile, :path, :git, :github, :branch, :ref
11
11
 
12
- ALL_RUBY_VERSIONS = ((18..27).to_a + (30..31).to_a).freeze
12
+ ALL_RUBY_VERSIONS = ((18..27).to_a + (30..33).to_a).freeze
13
13
  PLATFORM_MAP = {
14
14
  :ruby => [Gem::Platform::RUBY, ALL_RUBY_VERSIONS],
15
15
  :mri => [Gem::Platform::RUBY, ALL_RUBY_VERSIONS],
@@ -26,10 +26,6 @@ module Bundler
26
26
  @platform
27
27
  end
28
28
 
29
- def identifier
30
- @__identifier ||= [name, version, platform.to_s]
31
- end
32
-
33
29
  # needed for standalone, load required_paths from local gemspec
34
30
  # after the gem is installed
35
31
  def require_paths
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Bundler
4
4
  class EnvironmentPreserver
5
- INTENTIONALLY_NIL = "BUNDLER_ENVIRONMENT_PRESERVER_INTENTIONALLY_NIL".freeze
5
+ INTENTIONALLY_NIL = "BUNDLER_ENVIRONMENT_PRESERVER_INTENTIONALLY_NIL"
6
6
  BUNDLER_KEYS = %w[
7
7
  BUNDLE_BIN_PATH
8
8
  BUNDLE_GEMFILE
@@ -16,7 +16,7 @@ module Bundler
16
16
  RUBYLIB
17
17
  RUBYOPT
18
18
  ].map(&:freeze).freeze
19
- BUNDLER_PREFIX = "BUNDLER_ORIG_".freeze
19
+ BUNDLER_PREFIX = "BUNDLER_ORIG_"
20
20
 
21
21
  def self.from_env
22
22
  new(env_to_hash(ENV), BUNDLER_KEYS)
@@ -34,14 +34,10 @@ module Bundler
34
34
 
35
35
  returned_gems = spec_list.map(&:first).uniq
36
36
  specs(deps_list, full_dependency_list + returned_gems, spec_list + last_spec_list)
37
- rescue MarshalError
37
+ rescue MarshalError, HTTPError, GemspecError
38
38
  Bundler.ui.info "" unless Bundler.ui.debug? # new line now that the dots are over
39
39
  Bundler.ui.debug "could not fetch from the dependency API, trying the full index"
40
40
  nil
41
- rescue HTTPError, GemspecError
42
- Bundler.ui.info "" unless Bundler.ui.debug? # new line now that the dots are over
43
- Bundler.ui.debug "could not fetch from the dependency API\nit's suggested to retry using the full index via `bundle install --full-index`"
44
- nil
45
41
  end
46
42
 
47
43
  def dependency_specs(gem_names)
@@ -102,11 +102,11 @@ module Bundler
102
102
  uri = Bundler::URI.parse("#{remote_uri}#{Gem::MARSHAL_SPEC_DIR}#{spec_file_name}.rz")
103
103
  if uri.scheme == "file"
104
104
  path = Bundler.rubygems.correct_for_windows_path(uri.path)
105
- Bundler.load_marshal Bundler.rubygems.inflate(Gem.read_binary(path))
105
+ Bundler.safe_load_marshal Bundler.rubygems.inflate(Gem.read_binary(path))
106
106
  elsif cached_spec_path = gemspec_cached_path(spec_file_name)
107
107
  Bundler.load_gemspec(cached_spec_path)
108
108
  else
109
- Bundler.load_marshal Bundler.rubygems.inflate(downloader.fetch(uri).body)
109
+ Bundler.safe_load_marshal Bundler.rubygems.inflate(downloader.fetch(uri).body)
110
110
  end
111
111
  rescue MarshalError
112
112
  raise HTTPError, "Gemspec #{spec} contained invalid data.\n" \
@@ -13,8 +13,8 @@ module Bundler
13
13
  attr_reader :specs, :all_specs, :sources
14
14
  protected :specs, :all_specs
15
15
 
16
- RUBY = "ruby".freeze
17
- NULL = "\0".freeze
16
+ RUBY = "ruby"
17
+ NULL = "\0"
18
18
 
19
19
  def initialize
20
20
  @sources = []
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Bundler
4
4
  class Injector
5
- INJECTED_GEMS = "injected gems".freeze
5
+ INJECTED_GEMS = "injected gems"
6
6
 
7
7
  def self.inject(new_deps, options = {})
8
8
  injector = new(new_deps, options)
@@ -110,12 +110,13 @@ module Bundler
110
110
 
111
111
  warning = []
112
112
  warning << "Your lockfile doesn't include a valid resolution."
113
- warning << "You can fix this by regenerating your lockfile or trying to manually editing the bad locked gems to a version that satisfies all dependencies."
113
+ warning << "You can fix this by regenerating your lockfile or manually editing the bad locked gems to a version that satisfies all dependencies."
114
114
  warning << "The unmet dependencies are:"
115
115
 
116
116
  unmet_dependencies.each do |spec, unmet_spec_dependencies|
117
117
  unmet_spec_dependencies.each do |unmet_spec_dependency|
118
- warning << "* #{unmet_spec_dependency}, depended upon #{spec.full_name}, unsatisfied by #{@specs.find {|s| s.name == unmet_spec_dependency.name && !unmet_spec_dependency.matches_spec?(s.spec) }.full_name}"
118
+ found = @specs.find {|s| s.name == unmet_spec_dependency.name && !unmet_spec_dependency.matches_spec?(s.spec) }
119
+ warning << "* #{unmet_spec_dependency}, dependency of #{spec.full_name}, unsatisfied by #{found.full_name}"
119
120
  end
120
121
  end
121
122
 
@@ -52,7 +52,7 @@ module Bundler
52
52
 
53
53
  def gem_path(path, spec)
54
54
  full_path = Pathname.new(path).absolute? ? path : File.join(spec.full_gem_path, path)
55
- if spec.source.instance_of?(Source::Path)
55
+ if spec.source.instance_of?(Source::Path) && spec.source.path.absolute?
56
56
  full_path
57
57
  else
58
58
  Pathname.new(full_path).relative_path_from(Bundler.root.join(bundler_path)).to_s
@@ -20,7 +20,7 @@ module Bundler
20
20
  end
21
21
 
22
22
  def full_name
23
- if platform == Gem::Platform::RUBY
23
+ @full_name ||= if platform == Gem::Platform::RUBY
24
24
  "#{@name}-#{@version}"
25
25
  else
26
26
  "#{@name}-#{@version}-#{platform}"
@@ -28,15 +28,15 @@ module Bundler
28
28
  end
29
29
 
30
30
  def ==(other)
31
- identifier == other.identifier
31
+ full_name == other.full_name
32
32
  end
33
33
 
34
34
  def eql?(other)
35
- identifier.eql?(other.identifier)
35
+ full_name.eql?(other.full_name)
36
36
  end
37
37
 
38
38
  def hash
39
- identifier.hash
39
+ full_name.hash
40
40
  end
41
41
 
42
42
  ##
@@ -129,10 +129,6 @@ module Bundler
129
129
  end
130
130
  end
131
131
 
132
- def identifier
133
- @__identifier ||= [name, version, platform.to_s]
134
- end
135
-
136
132
  def git_version
137
133
  return unless source.is_a?(Bundler::Source::Git)
138
134
  " #{source.revision[0..6]}"
@@ -45,7 +45,7 @@ module Bundler
45
45
  # gems with the same name, but different platform
46
46
  # are ordered consistently
47
47
  specs.sort_by(&:full_name).each do |spec|
48
- next if spec.name == "bundler".freeze
48
+ next if spec.name == "bundler"
49
49
  out << spec.to_lock
50
50
  end
51
51
  end
@@ -4,15 +4,15 @@ module Bundler
4
4
  class LockfileParser
5
5
  attr_reader :sources, :dependencies, :specs, :platforms, :bundler_version, :ruby_version
6
6
 
7
- BUNDLED = "BUNDLED WITH".freeze
8
- DEPENDENCIES = "DEPENDENCIES".freeze
9
- PLATFORMS = "PLATFORMS".freeze
10
- RUBY = "RUBY VERSION".freeze
11
- GIT = "GIT".freeze
12
- GEM = "GEM".freeze
13
- PATH = "PATH".freeze
14
- PLUGIN = "PLUGIN SOURCE".freeze
15
- SPECS = " specs:".freeze
7
+ BUNDLED = "BUNDLED WITH"
8
+ DEPENDENCIES = "DEPENDENCIES"
9
+ PLATFORMS = "PLATFORMS"
10
+ RUBY = "RUBY VERSION"
11
+ GIT = "GIT"
12
+ GEM = "GEM"
13
+ PATH = "PATH"
14
+ PLUGIN = "PLUGIN SOURCE"
15
+ SPECS = " specs:"
16
16
  OPTIONS = /^ ([a-z]+): (.*)$/i.freeze
17
17
  SOURCE = [GIT, GEM, PATH, PLUGIN].freeze
18
18
 
@@ -86,7 +86,7 @@ module Bundler
86
86
  send("parse_#{@state}", line)
87
87
  end
88
88
  end
89
- @specs = @specs.values.sort_by(&:identifier)
89
+ @specs = @specs.values.sort_by(&:full_name)
90
90
  rescue ArgumentError => e
91
91
  Bundler.ui.debug(e)
92
92
  raise LockfileError, "Your lockfile is unreadable. Run `rm #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)}` " \
@@ -199,7 +199,7 @@ module Bundler
199
199
  @current_spec.source = @current_source
200
200
  @current_source.add_dependency_names(name)
201
201
 
202
- @specs[@current_spec.identifier] = @current_spec
202
+ @specs[@current_spec.full_name] = @current_spec
203
203
  elsif spaces.size == 6
204
204
  version = version.split(",").map(&:strip) if version
205
205
  dep = Gem::Dependency.new(name, version)
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-ADD" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-ADD" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-add\fR \- Add gem to the Gemfile and run bundle install
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-BINSTUBS" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-BINSTUBS" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-binstubs\fR \- Install the binstubs of the listed gems
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-CACHE" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-CACHE" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-cache\fR \- Package your needed \fB\.gem\fR files into your application
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-CHECK" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-CHECK" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-check\fR \- Verifies if dependencies are satisfied by installed gems
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-CLEAN" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-CLEAN" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-clean\fR \- Cleans up unused gems in your bundler directory
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-CONFIG" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-CONFIG" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-config\fR \- Set bundler configuration options