rubygems-update 3.5.14 → 3.5.16

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 (66) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +40 -0
  3. data/bundler/CHANGELOG.md +32 -0
  4. data/bundler/lib/bundler/build_metadata.rb +2 -2
  5. data/bundler/lib/bundler/cli/gem.rb +7 -14
  6. data/bundler/lib/bundler/cli.rb +3 -0
  7. data/bundler/lib/bundler/definition.rb +37 -25
  8. data/bundler/lib/bundler/env.rb +1 -1
  9. data/bundler/lib/bundler/gem_helpers.rb +14 -7
  10. data/bundler/lib/bundler/injector.rb +1 -4
  11. data/bundler/lib/bundler/installer/standalone.rb +0 -3
  12. data/bundler/lib/bundler/installer.rb +1 -3
  13. data/bundler/lib/bundler/lazy_specification.rb +1 -0
  14. data/bundler/lib/bundler/man/bundle-add.1 +1 -1
  15. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  16. data/bundler/lib/bundler/man/bundle-cache.1 +1 -1
  17. data/bundler/lib/bundler/man/bundle-check.1 +1 -1
  18. data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
  19. data/bundler/lib/bundler/man/bundle-config.1 +1 -1
  20. data/bundler/lib/bundler/man/bundle-console.1 +1 -1
  21. data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
  22. data/bundler/lib/bundler/man/bundle-exec.1 +1 -1
  23. data/bundler/lib/bundler/man/bundle-gem.1 +7 -1
  24. data/bundler/lib/bundler/man/bundle-gem.1.ronn +11 -0
  25. data/bundler/lib/bundler/man/bundle-help.1 +1 -1
  26. data/bundler/lib/bundler/man/bundle-info.1 +1 -1
  27. data/bundler/lib/bundler/man/bundle-init.1 +1 -1
  28. data/bundler/lib/bundler/man/bundle-inject.1 +1 -1
  29. data/bundler/lib/bundler/man/bundle-install.1 +1 -1
  30. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  31. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  32. data/bundler/lib/bundler/man/bundle-open.1 +1 -1
  33. data/bundler/lib/bundler/man/bundle-outdated.1 +1 -1
  34. data/bundler/lib/bundler/man/bundle-platform.1 +1 -1
  35. data/bundler/lib/bundler/man/bundle-plugin.1 +1 -1
  36. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  37. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  38. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  39. data/bundler/lib/bundler/man/bundle-update.1 +1 -1
  40. data/bundler/lib/bundler/man/bundle-version.1 +1 -1
  41. data/bundler/lib/bundler/man/bundle-viz.1 +1 -1
  42. data/bundler/lib/bundler/man/bundle.1 +1 -1
  43. data/bundler/lib/bundler/man/gemfile.5 +1 -1
  44. data/bundler/lib/bundler/resolver/base.rb +4 -0
  45. data/bundler/lib/bundler/resolver/candidate.rb +4 -16
  46. data/bundler/lib/bundler/resolver/package.rb +4 -0
  47. data/bundler/lib/bundler/resolver/spec_group.rb +20 -2
  48. data/bundler/lib/bundler/resolver.rb +18 -9
  49. data/bundler/lib/bundler/rubygems_ext.rb +69 -1
  50. data/bundler/lib/bundler/rubygems_gem_installer.rb +31 -1
  51. data/bundler/lib/bundler/rubygems_integration.rb +2 -2
  52. data/bundler/lib/bundler/runtime.rb +1 -1
  53. data/bundler/lib/bundler/self_manager.rb +17 -2
  54. data/bundler/lib/bundler/source/rubygems.rb +1 -0
  55. data/bundler/lib/bundler/spec_set.rb +14 -12
  56. data/bundler/lib/bundler/stub_specification.rb +8 -0
  57. data/bundler/lib/bundler/vendored_net_http.rb +17 -6
  58. data/bundler/lib/bundler/version.rb +1 -1
  59. data/lib/rubygems/config_file.rb +13 -8
  60. data/lib/rubygems/installer.rb +8 -7
  61. data/lib/rubygems/platform.rb +2 -2
  62. data/lib/rubygems/specification.rb +9 -5
  63. data/lib/rubygems/specification_policy.rb +14 -4
  64. data/lib/rubygems.rb +20 -14
  65. data/rubygems-update.gemspec +1 -1
  66. metadata +3 -3
@@ -500,8 +500,7 @@ class Gem::Installer
500
500
  dir_mode = options[:prog_mode] || (mode | 0o111)
501
501
 
502
502
  unless dir_mode == mode
503
- require "fileutils"
504
- FileUtils.chmod dir_mode, bin_path
503
+ File.chmod dir_mode, bin_path
505
504
  end
506
505
 
507
506
  check_executable_overwrite filename
@@ -539,12 +538,14 @@ class Gem::Installer
539
538
  def generate_bin_script(filename, bindir)
540
539
  bin_script_path = File.join bindir, formatted_program_filename(filename)
541
540
 
542
- require "fileutils"
543
- FileUtils.rm_f bin_script_path # prior install may have been --no-wrappers
541
+ Gem.open_file_with_flock("#{bin_script_path}.lock") do
542
+ require "fileutils"
543
+ FileUtils.rm_f bin_script_path # prior install may have been --no-wrappers
544
544
 
545
- File.open bin_script_path, "wb", 0o755 do |file|
546
- file.print app_script_text(filename)
547
- file.chmod(options[:prog_mode] || 0o755)
545
+ File.open(bin_script_path, "wb", 0o755) do |file|
546
+ file.write app_script_text(filename)
547
+ file.chmod(options[:prog_mode] || 0o755)
548
+ end
548
549
  end
549
550
 
550
551
  verbose bin_script_path
@@ -176,7 +176,7 @@ class Gem::Platform
176
176
  # they have the same version, or either one has no version
177
177
  #
178
178
  # Additionally, the platform will match if the local CPU is 'arm' and the
179
- # other CPU starts with "arm" (for generic ARM family support).
179
+ # other CPU starts with "armv" (for generic 32-bit ARM family support).
180
180
  #
181
181
  # Of note, this method is not commutative. Indeed the OS 'linux' has a
182
182
  # special case: the version is the libc name, yet while "no version" stands
@@ -197,7 +197,7 @@ class Gem::Platform
197
197
 
198
198
  # cpu
199
199
  ([nil,"universal"].include?(@cpu) || [nil, "universal"].include?(other.cpu) || @cpu == other.cpu ||
200
- (@cpu == "arm" && other.cpu.start_with?("arm"))) &&
200
+ (@cpu == "arm" && other.cpu.start_with?("armv"))) &&
201
201
 
202
202
  # os
203
203
  @os == other.os &&
@@ -175,7 +175,7 @@ class Gem::Specification < Gem::BasicSpecification
175
175
  end
176
176
 
177
177
  @@attributes = @@default_value.keys.sort_by(&:to_s)
178
- @@array_attributes = @@default_value.reject {|_k,v| v != [] }.keys
178
+ @@array_attributes = @@default_value.select {|_k,v| v.is_a?(Array) }.keys
179
179
  @@nil_attributes, @@non_nil_attributes = @@default_value.keys.partition do |k|
180
180
  @@default_value[k].nil?
181
181
  end
@@ -546,9 +546,9 @@ class Gem::Specification < Gem::BasicSpecification
546
546
  #
547
547
  # Usage:
548
548
  #
549
- # spec.add_runtime_dependency 'example', '~> 1.1', '>= 1.1.4'
549
+ # spec.add_dependency 'example', '~> 1.1', '>= 1.1.4'
550
550
 
551
- def add_runtime_dependency(gem, *requirements)
551
+ def add_dependency(gem, *requirements)
552
552
  if requirements.uniq.size != requirements.size
553
553
  warn "WARNING: duplicated #{gem} dependency #{requirements}"
554
554
  end
@@ -874,7 +874,7 @@ class Gem::Specification < Gem::BasicSpecification
874
874
  # You probably want to use one of the Enumerable methods instead.
875
875
 
876
876
  def self.all
877
- warn "NOTE: Specification.all called from #{caller.first}" unless
877
+ warn "NOTE: Specification.all called from #{caller(1, 1).first}" unless
878
878
  Gem::Deprecate.skip
879
879
  _all
880
880
  end
@@ -1504,7 +1504,7 @@ class Gem::Specification < Gem::BasicSpecification
1504
1504
 
1505
1505
  private :add_dependency_with_type
1506
1506
 
1507
- alias_method :add_dependency, :add_runtime_dependency
1507
+ alias_method :add_runtime_dependency, :add_dependency
1508
1508
 
1509
1509
  ##
1510
1510
  # Adds this spec's require paths to LOAD_PATH, in the proper location.
@@ -2585,6 +2585,10 @@ class Gem::Specification < Gem::BasicSpecification
2585
2585
  @test_files.delete_if {|x| File.directory?(x) && !File.symlink?(x) }
2586
2586
  end
2587
2587
 
2588
+ def validate_for_resolution
2589
+ Gem::SpecificationPolicy.new(self).validate_for_resolution
2590
+ end
2591
+
2588
2592
  def validate_metadata
2589
2593
  Gem::SpecificationPolicy.new(self).validate_metadata
2590
2594
  end
@@ -45,6 +45,7 @@ class Gem::SpecificationPolicy
45
45
 
46
46
  def validate(strict = false)
47
47
  validate_required!
48
+ validate_required_metadata!
48
49
 
49
50
  validate_optional(strict) if packaging || strict
50
51
 
@@ -85,15 +86,17 @@ class Gem::SpecificationPolicy
85
86
 
86
87
  validate_authors_field
87
88
 
88
- validate_metadata
89
-
90
89
  validate_licenses_length
91
90
 
92
- validate_lazy_metadata
93
-
94
91
  validate_duplicate_dependencies
95
92
  end
96
93
 
94
+ def validate_required_metadata!
95
+ validate_metadata
96
+
97
+ validate_lazy_metadata
98
+ end
99
+
97
100
  def validate_optional(strict)
98
101
  validate_licenses
99
102
 
@@ -120,6 +123,13 @@ class Gem::SpecificationPolicy
120
123
  end
121
124
  end
122
125
 
126
+ ##
127
+ # Implementation for Specification#validate_for_resolution
128
+
129
+ def validate_for_resolution
130
+ validate_required!
131
+ end
132
+
123
133
  ##
124
134
  # Implementation for Specification#validate_metadata
125
135
 
data/lib/rubygems.rb CHANGED
@@ -9,7 +9,7 @@
9
9
  require "rbconfig"
10
10
 
11
11
  module Gem
12
- VERSION = "3.5.14"
12
+ VERSION = "3.5.16"
13
13
  end
14
14
 
15
15
  # Must be first since it unloads the prelude from 1.9.2
@@ -760,6 +760,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
760
760
 
761
761
  ##
762
762
  # Safely write a file in binary mode on all platforms.
763
+
763
764
  def self.write_binary(path, data)
764
765
  open_file(path, "wb") do |io|
765
766
  io.write data
@@ -771,24 +772,29 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
771
772
  end
772
773
 
773
774
  ##
774
- # Open a file with given flags, and on Windows protect access with flock
775
+ # Open a file with given flags
775
776
 
776
777
  def self.open_file(path, flags, &block)
778
+ File.open(path, flags, &block)
779
+ end
780
+
781
+ ##
782
+ # Open a file with given flags, and protect access with flock
783
+
784
+ def self.open_file_with_flock(path, &block)
785
+ flags = File.exist?(path) ? "r+" : "a+"
786
+
777
787
  File.open(path, flags) do |io|
778
- if !java_platform? && win_platform?
779
- begin
780
- io.flock(File::LOCK_EX)
781
- rescue Errno::ENOSYS, Errno::ENOTSUP
782
- end
788
+ begin
789
+ io.flock(File::LOCK_EX)
790
+ rescue Errno::ENOSYS, Errno::ENOTSUP
783
791
  end
784
792
  yield io
785
- end
786
- rescue Errno::ENOLCK # NFS
787
- if Thread.main != Thread.current
788
- raise
789
- else
790
- File.open(path, flags) do |io|
791
- yield io
793
+ rescue Errno::ENOLCK # NFS
794
+ if Thread.main != Thread.current
795
+ raise
796
+ else
797
+ open_file(path, flags, &block)
792
798
  end
793
799
  end
794
800
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "rubygems-update"
5
- s.version = "3.5.14"
5
+ s.version = "3.5.16"
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
 
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.5.14
4
+ version: 3.5.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jim Weirich
@@ -16,7 +16,7 @@ authors:
16
16
  autorequire:
17
17
  bindir: exe
18
18
  cert_chain: []
19
- date: 2024-06-21 00:00:00.000000000 Z
19
+ date: 2024-07-18 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
@@ -727,7 +727,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
727
727
  - !ruby/object:Gem::Version
728
728
  version: '0'
729
729
  requirements: []
730
- rubygems_version: 3.5.14
730
+ rubygems_version: 3.5.16
731
731
  signing_key:
732
732
  specification_version: 4
733
733
  summary: RubyGems is a package management framework for Ruby. This gem is downloaded