rubygems-update 3.5.14 → 3.5.16

Sign up to get free protection for your applications and to get access to all the features.
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