rubygems-update 3.4.6 → 3.4.7

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 (61) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -0
  3. data/Manifest.txt +0 -1
  4. data/bundler/CHANGELOG.md +17 -0
  5. data/bundler/lib/bundler/build_metadata.rb +2 -2
  6. data/bundler/lib/bundler/cli/init.rb +2 -2
  7. data/bundler/lib/bundler/cli.rb +1 -0
  8. data/bundler/lib/bundler/current_ruby.rb +2 -0
  9. data/bundler/lib/bundler/dependency.rb +1 -1
  10. data/bundler/lib/bundler/installer/parallel_installer.rb +16 -2
  11. data/bundler/lib/bundler/installer/standalone.rb +1 -1
  12. data/bundler/lib/bundler/man/bundle-add.1 +1 -1
  13. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  14. data/bundler/lib/bundler/man/bundle-cache.1 +1 -1
  15. data/bundler/lib/bundler/man/bundle-check.1 +1 -1
  16. data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
  17. data/bundler/lib/bundler/man/bundle-config.1 +1 -1
  18. data/bundler/lib/bundler/man/bundle-console.1 +1 -1
  19. data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
  20. data/bundler/lib/bundler/man/bundle-exec.1 +1 -1
  21. data/bundler/lib/bundler/man/bundle-gem.1 +1 -1
  22. data/bundler/lib/bundler/man/bundle-help.1 +1 -1
  23. data/bundler/lib/bundler/man/bundle-info.1 +1 -1
  24. data/bundler/lib/bundler/man/bundle-init.1 +5 -1
  25. data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
  26. data/bundler/lib/bundler/man/bundle-inject.1 +1 -1
  27. data/bundler/lib/bundler/man/bundle-install.1 +1 -1
  28. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  29. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  30. data/bundler/lib/bundler/man/bundle-open.1 +1 -1
  31. data/bundler/lib/bundler/man/bundle-outdated.1 +1 -1
  32. data/bundler/lib/bundler/man/bundle-platform.1 +1 -1
  33. data/bundler/lib/bundler/man/bundle-plugin.1 +1 -1
  34. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  35. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  36. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  37. data/bundler/lib/bundler/man/bundle-update.1 +1 -1
  38. data/bundler/lib/bundler/man/bundle-version.1 +1 -1
  39. data/bundler/lib/bundler/man/bundle-viz.1 +1 -1
  40. data/bundler/lib/bundler/man/bundle.1 +1 -1
  41. data/bundler/lib/bundler/man/gemfile.5 +1 -1
  42. data/bundler/lib/bundler/source/git/git_proxy.rb +6 -4
  43. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +1 -1
  44. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +6 -2
  45. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +8 -1
  46. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +5 -4
  47. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +4 -2
  48. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +4 -1
  49. data/bundler/lib/bundler/version.rb +1 -1
  50. data/lib/rubygems/deprecate.rb +2 -2
  51. data/lib/rubygems/package/tar_reader/entry.rb +6 -4
  52. data/lib/rubygems/specification_policy.rb +5 -0
  53. data/lib/rubygems.rb +1 -1
  54. data/rubygems-update.gemspec +1 -1
  55. data/test/rubygems/test_gem_command_manager.rb +25 -0
  56. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +4 -4
  57. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
  58. data/test/rubygems/test_gem_package_tar_reader_entry.rb +60 -2
  59. data/test/rubygems/test_gem_specification.rb +17 -0
  60. metadata +3 -4
  61. 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: ce0db157a5beb6c516383463604a7bcfd5f69f6314b44a07428b8e2ef0ce7466
4
+ data.tar.gz: a0ed37a3997da0b7f7e21a239482830023eefcf60fe0e70e793f07ebeb36aefa
5
5
  SHA512:
6
- metadata.gz: 6c2c680e262544d33b81b7c7e797e9c05851eafac9b5f3279a2d53c923e7e6b5278b91227e136821f301372a340eeda630f2e700df3a13f503e6663c7daa7c00
7
- data.tar.gz: 13871c7e43a8686a1fa53c599c6074bd5719a60efb116e50728819642734f03ad360d38697a168d5ff167de85ccb6fc5d443f222426dcaa8ec5307b52fbda0a3
6
+ metadata.gz: 8f601f949d72477e06ec2e6ceb7eb12ef189370e49da57430fc7bdf3937f74f24f678f411e0e791cf7a22fb8911f61ac25f7d8f3f922a587150a54fd431fe726
7
+ data.tar.gz: 761cba346c2cb4bf07c552396c10d8aecda68888768a146afdc4a9cf2393ee67b32427b26c3fdc9e93d1f78875abe02e7aec0d8604b33b5cd5794b151d66ce64
data/CHANGELOG.md CHANGED
@@ -1,3 +1,16 @@
1
+ # 3.4.7 / 2023-02-15
2
+
3
+ ## Enhancements:
4
+
5
+ * Warn on self referencing gemspec dependency. Pull request
6
+ [#6335](https://github.com/rubygems/rubygems/pull/6335) by simi
7
+ * Installs bundler 2.4.7 as a default gem.
8
+
9
+ ## Bug fixes:
10
+
11
+ * Fix inconsistent behavior of zero byte files in archive. Pull request
12
+ [#6329](https://github.com/rubygems/rubygems/pull/6329) by martinemde
13
+
1
14
  # 3.4.6 / 2023-01-31
2
15
 
3
16
  ## Enhancements:
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
data/bundler/CHANGELOG.md CHANGED
@@ -1,3 +1,20 @@
1
+ # 2.4.7 (February 15, 2023)
2
+
3
+ ## Enhancements:
4
+
5
+ - Add `--gemfile` flag to `bundle init` to configure gemfile name to generate [#6046](https://github.com/rubygems/rubygems/pull/6046)
6
+ - Improve solve failure explanations by using better wording [#6366](https://github.com/rubygems/rubygems/pull/6366)
7
+ - Restore better error message when locked ref does not exist [#6356](https://github.com/rubygems/rubygems/pull/6356)
8
+ - Avoid crashing when installing from a corrupted lockfile [#6355](https://github.com/rubygems/rubygems/pull/6355)
9
+ - Improve wording of unmet dependencies warning [#6357](https://github.com/rubygems/rubygems/pull/6357)
10
+ - Add Ruby 3.2 and 3.3 platforms to Gemfile DSL [#6346](https://github.com/rubygems/rubygems/pull/6346)
11
+
12
+ ## Bug fixes:
13
+
14
+ - Fix crash in pub grub involving empty ranges [#6365](https://github.com/rubygems/rubygems/pull/6365)
15
+ - Make gemspec file generated by `bundle gem` properly exclude itself from packaged gem [#6339](https://github.com/rubygems/rubygems/pull/6339)
16
+ - Preserve relative path sources in standalone setup [#6327](https://github.com/rubygems/rubygems/pull/6327)
17
+
1
18
  # 2.4.6 (January 31, 2023)
2
19
 
3
20
  ## Enhancements:
@@ -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-02-15".freeze
8
+ @git_commit_sha = "5d717a27e0".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
@@ -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],
@@ -47,6 +47,13 @@ module Bundler
47
47
  dependencies.all? {|d| installed_specs.include? d.name }
48
48
  end
49
49
 
50
+ # Check whether spec's dependencies are missing, which can indicate a
51
+ # corrupted lockfile
52
+ def dependencies_missing?(all_specs)
53
+ spec_names = all_specs.map(&:name)
54
+ dependencies.any? {|d| !spec_names.include? d.name }
55
+ end
56
+
50
57
  # Represents only the non-development dependencies, the ones that are
51
58
  # itself and are in the total list.
52
59
  def dependencies
@@ -110,12 +117,17 @@ module Bundler
110
117
 
111
118
  warning = []
112
119
  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."
120
+ warning << "You can fix this by regenerating your lockfile or manually editing the bad locked gems to a version that satisfies all dependencies."
114
121
  warning << "The unmet dependencies are:"
115
122
 
116
123
  unmet_dependencies.each do |spec, unmet_spec_dependencies|
117
124
  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}"
125
+ found = @specs.find {|s| s.name == unmet_spec_dependency.name && !unmet_spec_dependency.matches_spec?(s.spec) }
126
+ if found
127
+ warning << "* #{unmet_spec_dependency}, dependency of #{spec.full_name}, unsatisfied by #{found.full_name}"
128
+ else
129
+ warning << "* #{unmet_spec_dependency}, dependency of #{spec.full_name} but missing from lockfile"
130
+ end
119
131
  end
120
132
  end
121
133
 
@@ -212,6 +224,8 @@ module Bundler
212
224
  if spec.dependencies_installed? @specs
213
225
  spec.state = :enqueued
214
226
  worker_pool.enq spec
227
+ elsif spec.dependencies_missing? @specs
228
+ spec.state = :failed
215
229
  end
216
230
  end
217
231
  end
@@ -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
@@ -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
@@ -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\-CONSOLE" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-CONSOLE" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-console\fR \- Deprecated way to open an IRB session with the bundle pre\-loaded
@@ -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\-DOCTOR" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-DOCTOR" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-doctor\fR \- Checks the bundle for common problems
@@ -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\-EXEC" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-EXEC" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-exec\fR \- Execute a command in the context of the bundle
@@ -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\-GEM" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-GEM" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-gem\fR \- Generate a project skeleton for creating a rubygem
@@ -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\-HELP" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-HELP" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-help\fR \- Displays detailed help for each subcommand
@@ -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\-INFO" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-INFO" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-info\fR \- Show information for the given gem in your bundle
@@ -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\-INIT" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-INIT" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-init\fR \- Generates a Gemfile into the current working directory
@@ -18,6 +18,10 @@ Init generates a default [\fBGemfile(5)\fR][Gemfile(5)] in the current working d
18
18
  \fB\-\-gemspec\fR
19
19
  Use the specified \.gemspec to create the [\fBGemfile(5)\fR][Gemfile(5)]
20
20
  .
21
+ .TP
22
+ \fB\-\-gemfile\fR
23
+ Use the specified name for the gemfile instead of \fBGemfile\fR
24
+ .
21
25
  .SH "FILES"
22
26
  Included in the default [\fBGemfile(5)\fR][Gemfile(5)] generated is the line \fB# frozen_string_literal: true\fR\. This is a magic comment supported for the first time in Ruby 2\.3\. The presence of this line results in all string literals in the file being implicitly frozen\.
23
27
  .
@@ -16,6 +16,8 @@ created [`Gemfile(5)`][Gemfile(5)].
16
16
 
17
17
  * `--gemspec`:
18
18
  Use the specified .gemspec to create the [`Gemfile(5)`][Gemfile(5)]
19
+ * `--gemfile`:
20
+ Use the specified name for the gemfile instead of `Gemfile`
19
21
 
20
22
  ## FILES
21
23
 
@@ -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\-INJECT" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-INJECT" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-inject\fR \- Add named gem(s) with version requirements to Gemfile
@@ -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\-INSTALL" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-INSTALL" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-install\fR \- Install the dependencies specified in your Gemfile
@@ -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\-LIST" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-LIST" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-list\fR \- List all the gems in the bundle
@@ -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\-LOCK" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-LOCK" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-lock\fR \- Creates / Updates a lockfile without installing
@@ -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\-OPEN" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-OPEN" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-open\fR \- Opens the source directory for a gem in your bundle
@@ -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\-OUTDATED" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-OUTDATED" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-outdated\fR \- List installed gems with newer versions available
@@ -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\-PLATFORM" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-PLATFORM" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-platform\fR \- Displays platform compatibility information
@@ -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\-PLUGIN" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-PLUGIN" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-plugin\fR \- Manage Bundler plugins
@@ -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\-PRISTINE" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-PRISTINE" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-pristine\fR \- Restores installed gems to their pristine condition
@@ -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\-REMOVE" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-REMOVE" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-remove\fR \- Removes gems from the Gemfile
@@ -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\-SHOW" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-SHOW" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-show\fR \- Shows all the gems in your bundle, or the path to a gem
@@ -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\-UPDATE" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-UPDATE" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-update\fR \- Update your gems to the latest available versions
@@ -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\-VERSION" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-VERSION" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-version\fR \- Prints Bundler version information
@@ -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\-VIZ" "1" "January 2023" "" ""
4
+ .TH "BUNDLE\-VIZ" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-viz\fR \- Generates a visual dependency graph for your Gemfile
@@ -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" "1" "January 2023" "" ""
4
+ .TH "BUNDLE" "1" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\fR \- Ruby Dependency Management
@@ -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 "GEMFILE" "5" "January 2023" "" ""
4
+ .TH "GEMFILE" "5" "February 2023" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBGemfile\fR \- A format for describing gem dependencies for Ruby programs
@@ -139,8 +139,8 @@ module Bundler
139
139
  out, err, status = capture(command, path)
140
140
  return out if status.success?
141
141
 
142
- if err.include?("couldn't find remote ref")
143
- raise MissingGitRevisionError.new(command_with_no_credentials, path, explicit_ref, credential_filtered_uri)
142
+ if err.include?("couldn't find remote ref") || err.include?("not our ref")
143
+ raise MissingGitRevisionError.new(command_with_no_credentials, path, commit || explicit_ref, credential_filtered_uri)
144
144
  else
145
145
  raise GitCommandError.new(command_with_no_credentials, path, err)
146
146
  end
@@ -186,8 +186,6 @@ module Bundler
186
186
  end
187
187
 
188
188
  def refspec
189
- commit = pinned_to_full_sha? ? ref : @revision
190
-
191
189
  if commit
192
190
  @commit_ref = "refs/#{commit}-sha"
193
191
  return "#{commit}:#{@commit_ref}"
@@ -206,6 +204,10 @@ module Bundler
206
204
  "#{reference}:#{reference}"
207
205
  end
208
206
 
207
+ def commit
208
+ @commit ||= pinned_to_full_sha? ? ref : @revision
209
+ end
210
+
209
211
  def fully_qualified_ref
210
212
  if branch
211
213
  "refs/heads/#{branch}"
@@ -29,7 +29,7 @@ Gem::Specification.new do |spec|
29
29
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
30
30
  spec.files = Dir.chdir(__dir__) do
31
31
  `git ls-files -z`.split("\x0").reject do |f|
32
- (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|circleci)|appveyor)})
32
+ (File.expand_path(f) == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|circleci)|appveyor)})
33
33
  end
34
34
  end
35
35
  spec.bindir = "exe"
@@ -76,9 +76,13 @@ module Bundler::PubGrub
76
76
  elsif terms.length == 1
77
77
  term = terms[0]
78
78
  if term.positive?
79
- "#{terms[0].to_s(allow_every: true)} is forbidden"
79
+ if term.constraint.any?
80
+ "#{term.package} cannot be used"
81
+ else
82
+ "#{term.to_s(allow_every: true)} cannot be used"
83
+ end
80
84
  else
81
- "#{terms[0].invert} is required"
85
+ "#{term.invert} is required"
82
86
  end
83
87
  else
84
88
  if terms.all?(&:positive?)
@@ -19,7 +19,14 @@ module Bundler::PubGrub
19
19
  version = Gem::Version.new(version)
20
20
  @packages[name] ||= {}
21
21
  raise ArgumentError, "#{name} #{version} declared twice" if @packages[name].key?(version)
22
- @packages[name][version] = deps
22
+ @packages[name][version] = clean_deps(name, version, deps)
23
+ end
24
+
25
+ private
26
+
27
+ # Exclude redundant self-referencing dependencies
28
+ def clean_deps(name, version, deps)
29
+ deps.reject {|dep_name, req| name == dep_name && Bundler::PubGrub::RubyGems.parse_range(req).include?(version) }
23
30
  end
24
31
  end
25
32
 
@@ -15,15 +15,16 @@ module Bundler::PubGrub
15
15
  package.hash ^ range.hash
16
16
  end
17
17
 
18
+ def ==(other)
19
+ package == other.package &&
20
+ range == other.range
21
+ end
22
+
18
23
  def eql?(other)
19
24
  package.eql?(other.package) &&
20
25
  range.eql?(other.range)
21
26
  end
22
27
 
23
- def ==(other)
24
- package == other.package && range == other.range
25
- end
26
-
27
28
  class << self
28
29
  def exact(package, version)
29
30
  range = VersionRange.new(min: version, max: version, include_min: true, include_max: true)
@@ -19,7 +19,7 @@ module Bundler::PubGrub
19
19
  true
20
20
  end
21
21
 
22
- def eql?
22
+ def eql?(other)
23
23
  other.empty?
24
24
  end
25
25
 
@@ -65,6 +65,7 @@ module Bundler::PubGrub
65
65
  end
66
66
 
67
67
  EMPTY = Empty.new
68
+ Empty.singleton_class.undef_method(:new)
68
69
 
69
70
  def self.empty
70
71
  EMPTY
@@ -88,7 +89,8 @@ module Bundler::PubGrub
88
89
 
89
90
  def eql?(other)
90
91
  if other.is_a?(VersionRange)
91
- min.eql?(other.min) &&
92
+ !other.empty? &&
93
+ min.eql?(other.min) &&
92
94
  max.eql?(other.max) &&
93
95
  include_min.eql?(other.include_min) &&
94
96
  include_max.eql?(other.include_max)
@@ -125,6 +125,7 @@ module Bundler::PubGrub
125
125
  package = next_package_to_try
126
126
  unsatisfied_term = solution.unsatisfied.find { |t| t.package == package }
127
127
  version = source.versions_for(package, unsatisfied_term.constraint.range).first
128
+ logger.debug { "attempting #{package} #{version}" }
128
129
 
129
130
  if version.nil?
130
131
  add_incompatibility source.no_versions_incompatibility_for(package, unsatisfied_term)
@@ -148,9 +149,11 @@ module Bundler::PubGrub
148
149
  end
149
150
 
150
151
  unless conflict
151
- logger.info { "selecting #{package} #{version}" }
152
+ logger.info { "selected #{package} #{version}" }
152
153
 
153
154
  solution.decide(package, version)
155
+ else
156
+ logger.info { "conflict: #{conflict.inspect}" }
154
157
  end
155
158
 
156
159
  package
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: false
2
2
 
3
3
  module Bundler
4
- VERSION = "2.4.6".freeze
4
+ VERSION = "2.4.7".freeze
5
5
 
6
6
  def self.bundler_major_version
7
7
  @bundler_major_version ||= VERSION.split(".").first.to_i
@@ -143,7 +143,7 @@ module Gem::Deprecate
143
143
  end
144
144
 
145
145
  # Deprecation method to deprecate Rubygems commands
146
- def rubygems_deprecate_command
146
+ def rubygems_deprecate_command(version = Gem::Deprecate.next_rubygems_major_version)
147
147
  class_eval do
148
148
  define_method "deprecated?" do
149
149
  true
@@ -151,7 +151,7 @@ module Gem::Deprecate
151
151
 
152
152
  define_method "deprecation_warning" do
153
153
  msg = [ "#{self.command} command is deprecated",
154
- ". It will be removed in Rubygems #{Gem::Deprecate.next_rubygems_major_version}.\n",
154
+ ". It will be removed in Rubygems #{version}.\n",
155
155
  ]
156
156
 
157
157
  alert_warning "#{msg.join}" unless Gem::Deprecate.skip
@@ -130,9 +130,10 @@ class Gem::Package::TarReader::Entry
130
130
  def read(len = nil)
131
131
  check_closed
132
132
 
133
- return nil if @read >= @header.size
134
-
135
133
  len ||= @header.size - @read
134
+
135
+ return nil if len > 0 && @read >= @header.size
136
+
136
137
  max_read = [len, @header.size - @read].min
137
138
 
138
139
  ret = @io.read max_read
@@ -144,9 +145,10 @@ class Gem::Package::TarReader::Entry
144
145
  def readpartial(maxlen = nil, outbuf = "".b)
145
146
  check_closed
146
147
 
147
- raise EOFError if @read >= @header.size
148
-
149
148
  maxlen ||= @header.size - @read
149
+
150
+ raise EOFError if maxlen > 0 && @read >= @header.size
151
+
150
152
  max_read = [maxlen, @header.size - @read].min
151
153
 
152
154
  @io.readpartial(max_read, outbuf)
@@ -173,6 +173,7 @@ duplicate dependency on #{dep}, (#{prev.requirement}) use:
173
173
  end
174
174
 
175
175
  ##
176
+ # Checks that the gem does not depend on itself.
176
177
  # Checks that dependencies use requirements as we recommend. Warnings are
177
178
  # issued when dependencies are open-ended or overly strict for semantic
178
179
  # versioning.
@@ -180,6 +181,10 @@ duplicate dependency on #{dep}, (#{prev.requirement}) use:
180
181
  def validate_dependencies # :nodoc:
181
182
  warning_messages = []
182
183
  @specification.dependencies.each do |dep|
184
+ if dep.name == @specification.name # warn on self reference
185
+ warning_messages << "Self referencing dependency is unnecessary and strongly discouraged."
186
+ end
187
+
183
188
  prerelease_dep = dep.requirements_list.any? do |req|
184
189
  Gem::Requirement.new(req).prerelease?
185
190
  end
data/lib/rubygems.rb CHANGED
@@ -8,7 +8,7 @@
8
8
  require "rbconfig"
9
9
 
10
10
  module Gem
11
- VERSION = "3.4.6".freeze
11
+ VERSION = "3.4.7".freeze
12
12
  end
13
13
 
14
14
  # Must be first since it unloads the prelude from 1.9.2
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "rubygems-update"
5
- s.version = "3.4.6"
5
+ s.version = "3.4.7"
6
6
  s.authors = ["Jim Weirich", "Chad Fowler", "Eric Hodel", "Luis Lavena", "Aaron Patterson", "Samuel Giddins", "André Arko", "Evan Phoenix", "Hiroshi SHIBATA"]
7
7
  s.email = ["", "", "drbrain@segment7.net", "luislavena@gmail.com", "aaron@tenderlovemaking.com", "segiddins@segiddins.me", "andre@arko.net", "evan@phx.io", "hsbt@ruby-lang.org"]
8
8
 
@@ -371,4 +371,29 @@ class TestGemCommandManager < Gem::TestCase
371
371
  ensure
372
372
  Gem::Commands.send(:remove_const, :FooCommand)
373
373
  end
374
+
375
+ def test_deprecated_command_with_version
376
+ require "rubygems/command"
377
+ foo_command = Class.new(Gem::Command) do
378
+ extend Gem::Deprecate
379
+
380
+ rubygems_deprecate_command("9.9.9")
381
+
382
+ def execute
383
+ say "pew pew!"
384
+ end
385
+ end
386
+
387
+ Gem::Commands.send(:const_set, :FooCommand, foo_command)
388
+ @command_manager.register_command(:foo, foo_command.new("foo"))
389
+
390
+ use_ui @ui do
391
+ @command_manager.process_args(%w[foo])
392
+ end
393
+
394
+ assert_equal "pew pew!\n", @ui.output
395
+ assert_match(/WARNING: foo command is deprecated. It will be removed in Rubygems 9.9.9/, @ui.error)
396
+ ensure
397
+ Gem::Commands.send(:remove_const, :FooCommand)
398
+ end
374
399
  end
@@ -144,18 +144,18 @@ dependencies = [
144
144
 
145
145
  [[package]]
146
146
  name = "rb-sys"
147
- version = "0.9.54"
147
+ version = "0.9.64"
148
148
  source = "registry+https://github.com/rust-lang/crates.io-index"
149
- checksum = "b3277448b8eee18de8bedb18883ae02dcd60d47922ddfc6ab408def77da0a9b4"
149
+ checksum = "cc8945662df8083245deda89e236647173cc7ad750f481ddcd7bbfd3afe3fa5e"
150
150
  dependencies = [
151
151
  "rb-sys-build",
152
152
  ]
153
153
 
154
154
  [[package]]
155
155
  name = "rb-sys-build"
156
- version = "0.9.54"
156
+ version = "0.9.64"
157
157
  source = "registry+https://github.com/rust-lang/crates.io-index"
158
- checksum = "c9baae802c93180af02cccb21819589d109070f8e28e14e7070a9ffdeca9b464"
158
+ checksum = "ae8c3cdf9edc3908ee1555b7a1bca58ee1b499439b32cd1c1ec3e66736a8df48"
159
159
  dependencies = [
160
160
  "bindgen",
161
161
  "regex",
@@ -7,4 +7,4 @@ edition = "2021"
7
7
  crate-type = ["cdylib"]
8
8
 
9
9
  [dependencies]
10
- rb-sys = "0.9.54"
10
+ rb-sys = "0.9.64"
@@ -125,6 +125,18 @@ class TestGemPackageTarReaderEntry < Gem::Package::TarTestCase
125
125
  assert_equal @contents, @entry.read
126
126
  end
127
127
 
128
+ def test_consecutive_read
129
+ expected = StringIO.new(@contents)
130
+ assert_equal expected.read, @entry.read
131
+ assert_equal expected.read, @entry.read
132
+ end
133
+
134
+ def test_consecutive_read_bytes_past_eof
135
+ expected = StringIO.new(@contents)
136
+ assert_equal expected.read, @entry.read
137
+ assert_equal expected.read(1), @entry.read(1)
138
+ end
139
+
128
140
  def test_read_big
129
141
  assert_equal @contents, @entry.read(@contents.size * 2)
130
142
  end
@@ -133,9 +145,24 @@ class TestGemPackageTarReaderEntry < Gem::Package::TarTestCase
133
145
  assert_equal @contents[0...100], @entry.read(100)
134
146
  end
135
147
 
136
- def test_readpartial
148
+ def test_read_remaining
149
+ @entry.read(100)
150
+ assert_equal @contents[100..-1], @entry.read
151
+ end
152
+
153
+ def test_read_partial
154
+ assert_equal @contents[0...100], @entry.readpartial(100)
155
+ end
156
+
157
+ def test_read_partial_buffer
158
+ buffer = "".b
159
+ @entry.readpartial(100, buffer)
160
+ assert_equal @contents[0...100], buffer
161
+ end
162
+
163
+ def test_readpartial_past_eof
164
+ @entry.readpartial(@contents.size)
137
165
  assert_raise(EOFError) do
138
- @entry.read(@contents.size)
139
166
  @entry.readpartial(1)
140
167
  end
141
168
  end
@@ -149,4 +176,35 @@ class TestGemPackageTarReaderEntry < Gem::Package::TarTestCase
149
176
 
150
177
  assert_equal char, @entry.getc
151
178
  end
179
+
180
+ def test_read_zero
181
+ expected = StringIO.new("")
182
+ assert_equal expected.read(0), @entry.read(0)
183
+ end
184
+
185
+ def test_readpartial_zero
186
+ expected = StringIO.new("")
187
+ assert_equal expected.readpartial(0), @entry.readpartial(0)
188
+ end
189
+
190
+ def util_zero_byte_entry
191
+ tar = String.new
192
+ tar << tar_file_header("lib/empty", "", 0, 0, Time.now)
193
+ tar << "\0" * (512 - (tar.size % 512))
194
+ util_entry tar
195
+ end
196
+
197
+ def test_zero_byte_file_read
198
+ zero_entry = util_zero_byte_entry
199
+ expected = StringIO.new("")
200
+
201
+ assert_equal expected.read, zero_entry.read
202
+ end
203
+
204
+ def test_zero_byte_file_readpartial
205
+ zero_entry = util_zero_byte_entry
206
+ expected = StringIO.new("")
207
+
208
+ assert_equal expected.readpartial(0), zero_entry.readpartial(0)
209
+ end
152
210
  end
@@ -2677,6 +2677,23 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2677
2677
  end
2678
2678
  end
2679
2679
 
2680
+ def test_validate_self_referencing_dependencies
2681
+ util_setup_validate
2682
+
2683
+ Dir.chdir @tempdir do
2684
+ @a1.add_runtime_dependency @a1.name, "1"
2685
+
2686
+ use_ui @ui do
2687
+ @a1.validate
2688
+ end
2689
+
2690
+ assert_equal <<-EXPECTED, @ui.error
2691
+ #{w}: Self referencing dependency is unnecessary and strongly discouraged.
2692
+ #{w}: See https://guides.rubygems.org/specification-reference/ for help
2693
+ EXPECTED
2694
+ end
2695
+ end
2696
+
2680
2697
  def test_validate_rake_extension_have_rake_dependency_warning
2681
2698
  util_setup_validate
2682
2699
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubygems-update
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.6
4
+ version: 3.4.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jim Weirich
@@ -16,7 +16,7 @@ authors:
16
16
  autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
- date: 2023-01-31 00:00:00.000000000 Z
19
+ date: 2023-02-15 00:00:00.000000000 Z
20
20
  dependencies: []
21
21
  description: |-
22
22
  A package (also known as a library) contains a set of functionality
@@ -261,7 +261,6 @@ files:
261
261
  - bundler/lib/bundler/templates/Executable.bundler
262
262
  - bundler/lib/bundler/templates/Executable.standalone
263
263
  - bundler/lib/bundler/templates/Gemfile
264
- - bundler/lib/bundler/templates/gems.rb
265
264
  - bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt
266
265
  - bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt
267
266
  - bundler/lib/bundler/templates/newgem/Cargo.toml.tt
@@ -834,7 +833,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
834
833
  - !ruby/object:Gem::Version
835
834
  version: '0'
836
835
  requirements: []
837
- rubygems_version: 3.4.6
836
+ rubygems_version: 3.4.7
838
837
  signing_key:
839
838
  specification_version: 4
840
839
  summary: RubyGems is a package management framework for Ruby.
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source "https://rubygems.org"
4
-
5
- # gem "rails"