rubygems-update 3.5.21 → 3.5.22
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +35 -0
- data/bundler/CHANGELOG.md +10 -0
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/dsl.rb +7 -7
- data/bundler/lib/bundler/installer.rb +1 -1
- data/bundler/lib/bundler/plugin/api/source.rb +1 -1
- data/bundler/lib/bundler/rubygems_ext.rb +21 -3
- data/bundler/lib/bundler/rubygems_integration.rb +0 -22
- data/bundler/lib/bundler/source/git.rb +2 -2
- data/bundler/lib/bundler/source/path.rb +1 -1
- data/bundler/lib/bundler/source/rubygems.rb +1 -4
- data/bundler/lib/bundler/stub_specification.rb +11 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +46 -8
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +2 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/version.rb +1 -1
- data/lib/rubygems/basic_specification.rb +11 -6
- data/lib/rubygems/command_manager.rb +7 -2
- data/lib/rubygems/commands/contents_command.rb +15 -8
- data/lib/rubygems/commands/pristine_command.rb +16 -6
- data/lib/rubygems/dependency.rb +1 -1
- data/lib/rubygems/specification.rb +1 -1
- data/lib/rubygems/specification_record.rb +1 -1
- data/lib/rubygems/stub_specification.rb +11 -10
- data/lib/rubygems/vendor/net-http/lib/net/http.rb +1 -1
- data/lib/rubygems/vendor/uri/lib/uri/common.rb +2 -0
- data/lib/rubygems/vendor/uri/lib/uri/version.rb +1 -1
- data/lib/rubygems.rb +3 -4
- data/rubygems-update.gemspec +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 276b006ba43b78677b3ab572a3c2fe93f5d2dba491ca7e52fe1383b045348149
|
4
|
+
data.tar.gz: c3e120a1d2e201666f9ae43967fbb6633096c79dccfb4b81dcb70239ea92966f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0dd508e5b57121a6bdb08df3f984dcdc39ce14cc5b1725fd857f3f4e67e3334053fa2f2a93d0d2bb92f3050f1a4f85acfb86ea3064113d0388652265a31ed56d
|
7
|
+
data.tar.gz: c0cae4cac2bc5af2c91a3adcf7bbaad26ff5a8662bfbe20913cfe14b2b509f16cc169654451ed58e628d5a53fb88e30b3303d7bf85e266caf76d87324f2b1ddc
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,38 @@
|
|
1
|
+
# 3.5.22 / 2024-10-16
|
2
|
+
|
3
|
+
## Enhancements:
|
4
|
+
|
5
|
+
* Prevent `._*` files in packages generated from macOS. Pull request
|
6
|
+
[#8150](https://github.com/rubygems/rubygems/pull/8150) by
|
7
|
+
deivid-rodriguez
|
8
|
+
* Fix `gem pristine etc` resetting gem twice sometimes. Pull request
|
9
|
+
[#8117](https://github.com/rubygems/rubygems/pull/8117) by
|
10
|
+
deivid-rodriguez
|
11
|
+
* Allow `gem pristine` to reset default gems too. Pull request
|
12
|
+
[#8118](https://github.com/rubygems/rubygems/pull/8118) by
|
13
|
+
deivid-rodriguez
|
14
|
+
* Update vendored `uri` and `net-http`. Pull request
|
15
|
+
[#8112](https://github.com/rubygems/rubygems/pull/8112) by segiddins
|
16
|
+
* Installs bundler 2.5.22 as a default gem.
|
17
|
+
|
18
|
+
## Bug fixes:
|
19
|
+
|
20
|
+
* Fix `gem contents` for default gems. Pull request
|
21
|
+
[#8132](https://github.com/rubygems/rubygems/pull/8132) by
|
22
|
+
deivid-rodriguez
|
23
|
+
* Fix duplicated specs when they have been previously activated. Pull
|
24
|
+
request [#8131](https://github.com/rubygems/rubygems/pull/8131) by
|
25
|
+
deivid-rodriguez
|
26
|
+
* Fix `gem install` on NFS shares. Pull request
|
27
|
+
[#8123](https://github.com/rubygems/rubygems/pull/8123) by
|
28
|
+
deivid-rodriguez
|
29
|
+
* Fix a `gem install` crash during "done installing" hooks. Pull request
|
30
|
+
[#8113](https://github.com/rubygems/rubygems/pull/8113) by
|
31
|
+
deivid-rodriguez
|
32
|
+
* Fix plugin command loading. Pull request
|
33
|
+
[#8121](https://github.com/rubygems/rubygems/pull/8121) by
|
34
|
+
deivid-rodriguez
|
35
|
+
|
1
36
|
# 3.5.21 / 2024-10-03
|
2
37
|
|
3
38
|
## Enhancements:
|
data/bundler/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
# 2.5.22 (October 16, 2024)
|
2
|
+
|
3
|
+
## Enhancements:
|
4
|
+
|
5
|
+
- Update vendored `uri` and `net-http` [#8112](https://github.com/rubygems/rubygems/pull/8112)
|
6
|
+
|
7
|
+
## Bug fixes:
|
8
|
+
|
9
|
+
- Fix bundler sometimes crashing because of trying to use a version of psych compiled for a different Ruby [#8104](https://github.com/rubygems/rubygems/pull/8104)
|
10
|
+
|
1
11
|
# 2.5.21 (October 3, 2024)
|
2
12
|
|
3
13
|
## Bug fixes:
|
@@ -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 = "2024-10-
|
8
|
-
@git_commit_sha = "
|
7
|
+
@built_at = "2024-10-16".freeze
|
8
|
+
@git_commit_sha = "342d4542fda".freeze
|
9
9
|
@release = true
|
10
10
|
# end ivars
|
11
11
|
|
data/bundler/lib/bundler/dsl.rb
CHANGED
@@ -589,21 +589,21 @@ module Bundler
|
|
589
589
|
|
590
590
|
trace_line = backtrace.find {|l| l.include?(dsl_path) } || trace_line
|
591
591
|
return m unless trace_line
|
592
|
-
|
593
|
-
return m unless
|
592
|
+
line_number = trace_line.split(":")[1].to_i - 1
|
593
|
+
return m unless line_number
|
594
594
|
|
595
595
|
lines = contents.lines.to_a
|
596
596
|
indent = " # "
|
597
597
|
indicator = indent.tr("#", ">")
|
598
|
-
first_line =
|
599
|
-
last_line = (
|
598
|
+
first_line = line_number.zero?
|
599
|
+
last_line = (line_number == (lines.count - 1))
|
600
600
|
|
601
601
|
m << "\n"
|
602
602
|
m << "#{indent}from #{trace_line.gsub(/:in.*$/, "")}\n"
|
603
603
|
m << "#{indent}-------------------------------------------\n"
|
604
|
-
m << "#{indent}#{lines[
|
605
|
-
m << "#{indicator}#{lines[
|
606
|
-
m << "#{indent}#{lines[
|
604
|
+
m << "#{indent}#{lines[line_number - 1]}" unless first_line
|
605
|
+
m << "#{indicator}#{lines[line_number]}"
|
606
|
+
m << "#{indent}#{lines[line_number + 1]}" unless last_line
|
607
607
|
m << "\n" unless m.end_with?("\n")
|
608
608
|
m << "#{indent}-------------------------------------------\n"
|
609
609
|
end
|
@@ -221,7 +221,7 @@ module Bundler
|
|
221
221
|
|
222
222
|
requested_path_gems = @definition.requested_specs.select {|s| s.source.is_a?(Source::Path) }
|
223
223
|
path_plugin_files = requested_path_gems.map do |spec|
|
224
|
-
|
224
|
+
spec.matches_for_glob("rubygems_plugin#{Bundler.rubygems.suffix_pattern}")
|
225
225
|
rescue TypeError
|
226
226
|
error_message = "#{spec.name} #{spec.version} has an invalid gemspec"
|
227
227
|
raise Gem::InvalidSpecificationException, error_message
|
@@ -131,7 +131,7 @@ module Bundler
|
|
131
131
|
Bundler::Index.build do |index|
|
132
132
|
files.each do |file|
|
133
133
|
next unless spec = Bundler.load_gemspec(file)
|
134
|
-
|
134
|
+
spec.installed_by_version = Gem::VERSION
|
135
135
|
|
136
136
|
spec.source = self
|
137
137
|
Bundler.rubygems.validate(spec)
|
@@ -36,15 +36,14 @@ module Gem
|
|
36
36
|
remove_method :open_file_with_flock if Gem.respond_to?(:open_file_with_flock)
|
37
37
|
|
38
38
|
def open_file_with_flock(path, &block)
|
39
|
-
mode
|
39
|
+
# read-write mode is used rather than read-only in order to support NFS
|
40
|
+
mode = IO::RDWR | IO::APPEND | IO::CREAT | IO::BINARY
|
40
41
|
mode |= IO::SHARE_DELETE if IO.const_defined?(:SHARE_DELETE)
|
41
42
|
|
42
43
|
File.open(path, mode) do |io|
|
43
44
|
begin
|
44
45
|
io.flock(File::LOCK_EX)
|
45
46
|
rescue Errno::ENOSYS, Errno::ENOTSUP
|
46
|
-
rescue Errno::ENOLCK # NFS
|
47
|
-
raise unless Thread.main == Thread.current
|
48
47
|
end
|
49
48
|
yield io
|
50
49
|
end
|
@@ -267,6 +266,16 @@ module Gem
|
|
267
266
|
end
|
268
267
|
out
|
269
268
|
end
|
269
|
+
|
270
|
+
if Gem.rubygems_version < Gem::Version.new("3.5.22")
|
271
|
+
module FilterIgnoredSpecs
|
272
|
+
def matching_specs(platform_only = false)
|
273
|
+
super.reject(&:ignored?)
|
274
|
+
end
|
275
|
+
end
|
276
|
+
|
277
|
+
prepend FilterIgnoredSpecs
|
278
|
+
end
|
270
279
|
end
|
271
280
|
|
272
281
|
# Requirements using lambda operator differentiate trailing zeros since rubygems 3.2.6
|
@@ -389,6 +398,15 @@ module Gem
|
|
389
398
|
end
|
390
399
|
end
|
391
400
|
end
|
401
|
+
|
402
|
+
# Can be removed once RubyGems 3.5.22 support is dropped
|
403
|
+
unless new.respond_to?(:ignored?)
|
404
|
+
def ignored?
|
405
|
+
return @ignored unless @ignored.nil?
|
406
|
+
|
407
|
+
@ignored = missing_extensions?
|
408
|
+
end
|
409
|
+
end
|
392
410
|
end
|
393
411
|
|
394
412
|
require "rubygems/name_tuple"
|
@@ -57,28 +57,6 @@ module Bundler
|
|
57
57
|
nil
|
58
58
|
end
|
59
59
|
|
60
|
-
def set_installed_by_version(spec, installed_by_version = Gem::VERSION)
|
61
|
-
return unless spec.respond_to?(:installed_by_version=)
|
62
|
-
spec.installed_by_version = Gem::Version.create(installed_by_version)
|
63
|
-
end
|
64
|
-
|
65
|
-
def spec_missing_extensions?(spec, default = true)
|
66
|
-
return spec.missing_extensions? if spec.respond_to?(:missing_extensions?)
|
67
|
-
|
68
|
-
return false if spec.default_gem?
|
69
|
-
return false if spec.extensions.empty?
|
70
|
-
|
71
|
-
default
|
72
|
-
end
|
73
|
-
|
74
|
-
def spec_matches_for_glob(spec, glob)
|
75
|
-
return spec.matches_for_glob(glob) if spec.respond_to?(:matches_for_glob)
|
76
|
-
|
77
|
-
spec.load_paths.flat_map do |lp|
|
78
|
-
Dir["#{lp}/#{glob}#{suffix_pattern}"]
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
60
|
def stub_set_spec(stub, spec)
|
83
61
|
stub.instance_variable_set(:@spec, spec)
|
84
62
|
end
|
@@ -210,7 +210,7 @@ module Bundler
|
|
210
210
|
checkout
|
211
211
|
end
|
212
212
|
|
213
|
-
generate_bin_options = { disable_extensions: !
|
213
|
+
generate_bin_options = { disable_extensions: !spec.missing_extensions?, build_args: options[:build_args] }
|
214
214
|
generate_bin(spec, generate_bin_options)
|
215
215
|
|
216
216
|
requires_checkout? ? spec.post_install_message : nil
|
@@ -299,7 +299,7 @@ module Bundler
|
|
299
299
|
# The gemspecs we cache should already be evaluated.
|
300
300
|
spec = Bundler.load_gemspec(spec_path)
|
301
301
|
next unless spec
|
302
|
-
|
302
|
+
spec.installed_by_version = Gem::VERSION
|
303
303
|
Bundler.rubygems.validate(spec)
|
304
304
|
File.open(spec_path, "wb") {|file| file.write(spec.to_ruby) }
|
305
305
|
end
|
@@ -357,10 +357,7 @@ module Bundler
|
|
357
357
|
@installed_specs ||= Index.build do |idx|
|
358
358
|
Bundler.rubygems.installed_specs.reverse_each do |spec|
|
359
359
|
spec.source = self
|
360
|
-
if
|
361
|
-
Bundler.ui.debug "Source #{self} is ignoring #{spec} because it is missing extensions"
|
362
|
-
next
|
363
|
-
end
|
360
|
+
next if spec.ignored?
|
364
361
|
idx << spec
|
365
362
|
end
|
366
363
|
end
|
@@ -28,6 +28,17 @@ module Bundler
|
|
28
28
|
|
29
29
|
# @!group Stub Delegates
|
30
30
|
|
31
|
+
def ignored?
|
32
|
+
return @ignored unless @ignored.nil?
|
33
|
+
|
34
|
+
@ignored = missing_extensions?
|
35
|
+
return false unless @ignored
|
36
|
+
|
37
|
+
warn "Source #{source} is ignoring #{self} because it is missing extensions"
|
38
|
+
|
39
|
+
true
|
40
|
+
end
|
41
|
+
|
31
42
|
def manually_installed?
|
32
43
|
# This is for manually installed gems which are gems that were fixed in place after a
|
33
44
|
# failed installation. Once the issue was resolved, the user then manually created
|
@@ -68,6 +68,8 @@ autoload :OpenSSL, 'openssl'
|
|
68
68
|
# #verify_callback :: For server certificate verification
|
69
69
|
# #verify_depth :: Depth of certificate verification
|
70
70
|
# #verify_mode :: How connections should be verified
|
71
|
+
# #verify_hostname :: Use hostname verification for server certificate
|
72
|
+
# during the handshake
|
71
73
|
#
|
72
74
|
# == Proxies
|
73
75
|
#
|
@@ -174,7 +176,7 @@ class Gem::Net::HTTP::Persistent
|
|
174
176
|
##
|
175
177
|
# The version of Gem::Net::HTTP::Persistent you are using
|
176
178
|
|
177
|
-
VERSION = '4.0.
|
179
|
+
VERSION = '4.0.4'
|
178
180
|
|
179
181
|
##
|
180
182
|
# Error class for errors raised by Gem::Net::HTTP::Persistent. Various
|
@@ -449,6 +451,21 @@ class Gem::Net::HTTP::Persistent
|
|
449
451
|
|
450
452
|
attr_reader :verify_mode
|
451
453
|
|
454
|
+
##
|
455
|
+
# HTTPS verify_hostname.
|
456
|
+
#
|
457
|
+
# If a client sets this to true and enables SNI with SSLSocket#hostname=,
|
458
|
+
# the hostname verification on the server certificate is performed
|
459
|
+
# automatically during the handshake using
|
460
|
+
# OpenSSL::SSL.verify_certificate_identity().
|
461
|
+
#
|
462
|
+
# You can set +verify_hostname+ as true to use hostname verification
|
463
|
+
# during the handshake.
|
464
|
+
#
|
465
|
+
# NOTE: This works with Ruby > 3.0.
|
466
|
+
|
467
|
+
attr_reader :verify_hostname
|
468
|
+
|
452
469
|
##
|
453
470
|
# Creates a new Gem::Net::HTTP::Persistent.
|
454
471
|
#
|
@@ -508,6 +525,7 @@ class Gem::Net::HTTP::Persistent
|
|
508
525
|
@verify_callback = nil
|
509
526
|
@verify_depth = nil
|
510
527
|
@verify_mode = nil
|
528
|
+
@verify_hostname = nil
|
511
529
|
@cert_store = nil
|
512
530
|
|
513
531
|
@generation = 0 # incremented when proxy Gem::URI changes
|
@@ -607,13 +625,23 @@ class Gem::Net::HTTP::Persistent
|
|
607
625
|
|
608
626
|
return yield connection
|
609
627
|
rescue Errno::ECONNREFUSED
|
610
|
-
|
611
|
-
|
628
|
+
if http.proxy?
|
629
|
+
address = http.proxy_address
|
630
|
+
port = http.proxy_port
|
631
|
+
else
|
632
|
+
address = http.address
|
633
|
+
port = http.port
|
634
|
+
end
|
612
635
|
|
613
636
|
raise Error, "connection refused: #{address}:#{port}"
|
614
637
|
rescue Errno::EHOSTDOWN
|
615
|
-
|
616
|
-
|
638
|
+
if http.proxy?
|
639
|
+
address = http.proxy_address
|
640
|
+
port = http.proxy_port
|
641
|
+
else
|
642
|
+
address = http.address
|
643
|
+
port = http.port
|
644
|
+
end
|
617
645
|
|
618
646
|
raise Error, "host down: #{address}:#{port}"
|
619
647
|
ensure
|
@@ -948,8 +976,10 @@ class Gem::Net::HTTP::Persistent
|
|
948
976
|
connection.min_version = @min_version if @min_version
|
949
977
|
connection.max_version = @max_version if @max_version
|
950
978
|
|
951
|
-
connection.verify_depth
|
952
|
-
connection.verify_mode
|
979
|
+
connection.verify_depth = @verify_depth
|
980
|
+
connection.verify_mode = @verify_mode
|
981
|
+
connection.verify_hostname = @verify_hostname if
|
982
|
+
@verify_hostname != nil && connection.respond_to?(:verify_hostname=)
|
953
983
|
|
954
984
|
if OpenSSL::SSL::VERIFY_PEER == OpenSSL::SSL::VERIFY_NONE and
|
955
985
|
not Object.const_defined?(:I_KNOW_THAT_OPENSSL_VERIFY_PEER_EQUALS_VERIFY_NONE_IS_WRONG) then
|
@@ -1058,6 +1088,15 @@ application:
|
|
1058
1088
|
reconnect_ssl
|
1059
1089
|
end
|
1060
1090
|
|
1091
|
+
##
|
1092
|
+
# Sets the HTTPS verify_hostname.
|
1093
|
+
|
1094
|
+
def verify_hostname= verify_hostname
|
1095
|
+
@verify_hostname = verify_hostname
|
1096
|
+
|
1097
|
+
reconnect_ssl
|
1098
|
+
end
|
1099
|
+
|
1061
1100
|
##
|
1062
1101
|
# SSL verification callback.
|
1063
1102
|
|
@@ -1070,4 +1109,3 @@ end
|
|
1070
1109
|
|
1071
1110
|
require_relative 'persistent/connection'
|
1072
1111
|
require_relative 'persistent/pool'
|
1073
|
-
|
@@ -19,6 +19,8 @@ module Bundler::URI
|
|
19
19
|
Parser = RFC2396_Parser
|
20
20
|
RFC3986_PARSER = RFC3986_Parser.new
|
21
21
|
Ractor.make_shareable(RFC3986_PARSER) if defined?(Ractor)
|
22
|
+
RFC2396_PARSER = RFC2396_Parser.new
|
23
|
+
Ractor.make_shareable(RFC2396_PARSER) if defined?(Ractor)
|
22
24
|
|
23
25
|
# Bundler::URI::Parser.new
|
24
26
|
DEFAULT_PARSER = Parser.new
|
@@ -71,11 +71,7 @@ class Gem::BasicSpecification
|
|
71
71
|
# Return true if this spec can require +file+.
|
72
72
|
|
73
73
|
def contains_requirable_file?(file)
|
74
|
-
if
|
75
|
-
return false
|
76
|
-
elsif missing_extensions?
|
77
|
-
@ignored = true
|
78
|
-
|
74
|
+
if ignored?
|
79
75
|
if platform == Gem::Platform::RUBY || Gem::Platform.local === platform
|
80
76
|
warn "Ignoring #{full_name} because its extensions are not built. " \
|
81
77
|
"Try: gem pristine #{name} --version #{version}"
|
@@ -93,8 +89,17 @@ class Gem::BasicSpecification
|
|
93
89
|
end
|
94
90
|
end
|
95
91
|
|
92
|
+
##
|
93
|
+
# Return true if this spec should be ignored because it's missing extensions.
|
94
|
+
|
95
|
+
def ignored?
|
96
|
+
return @ignored unless @ignored.nil?
|
97
|
+
|
98
|
+
@ignored = missing_extensions?
|
99
|
+
end
|
100
|
+
|
96
101
|
def default_gem?
|
97
|
-
loaded_from &&
|
102
|
+
!loaded_from.nil? &&
|
98
103
|
File.dirname(loaded_from) == Gem.default_specifications_dir
|
99
104
|
end
|
100
105
|
|
@@ -232,9 +232,14 @@ class Gem::CommandManager
|
|
232
232
|
const_name = command_name.capitalize.gsub(/_(.)/) { $1.upcase } << "Command"
|
233
233
|
|
234
234
|
begin
|
235
|
-
|
235
|
+
begin
|
236
|
+
require "rubygems/commands/#{command_name}_command"
|
237
|
+
rescue LoadError
|
238
|
+
# it may have been defined from a rubygems_plugin.rb file
|
239
|
+
end
|
240
|
+
|
236
241
|
Gem::Commands.const_get(const_name).new
|
237
|
-
rescue StandardError
|
242
|
+
rescue StandardError => e
|
238
243
|
alert_error clean_text("Loading command: #{command_name} (#{e.class})\n\t#{e}")
|
239
244
|
ui.backtrace e
|
240
245
|
end
|
@@ -103,16 +103,23 @@ prefix or only the files that are requireable.
|
|
103
103
|
|
104
104
|
def files_in_default_gem(spec)
|
105
105
|
spec.files.map do |file|
|
106
|
-
|
107
|
-
|
108
|
-
# $' is POSTMATCH
|
109
|
-
[RbConfig::CONFIG["bindir"], $']
|
110
|
-
when /\.so\z/
|
111
|
-
[RbConfig::CONFIG["archdir"], file]
|
106
|
+
if file.start_with?("#{spec.bindir}/")
|
107
|
+
[RbConfig::CONFIG["bindir"], file.delete_prefix("#{spec.bindir}/")]
|
112
108
|
else
|
113
|
-
|
109
|
+
gem spec.name, spec.version
|
110
|
+
|
111
|
+
require_path = spec.require_paths.find do |path|
|
112
|
+
file.start_with?("#{path}/")
|
113
|
+
end
|
114
|
+
|
115
|
+
requirable_part = file.delete_prefix("#{require_path}/")
|
116
|
+
|
117
|
+
resolve = $LOAD_PATH.resolve_feature_path(requirable_part)&.last
|
118
|
+
next unless resolve
|
119
|
+
|
120
|
+
[resolve.delete_suffix(requirable_part), requirable_part]
|
114
121
|
end
|
115
|
-
end
|
122
|
+
end.compact
|
116
123
|
end
|
117
124
|
|
118
125
|
def gem_contents(name)
|
@@ -134,10 +134,14 @@ extensions will be restored.
|
|
134
134
|
|
135
135
|
say "Restoring gems to pristine condition..."
|
136
136
|
|
137
|
-
specs.each do |
|
138
|
-
|
139
|
-
|
140
|
-
|
137
|
+
specs.group_by(&:full_name_with_location).values.each do |grouped_specs|
|
138
|
+
spec = grouped_specs.find {|s| !s.default_gem? } || grouped_specs.first
|
139
|
+
|
140
|
+
unless only_executables_or_plugins?
|
141
|
+
# Default gemspecs include changes provided by ruby-core installer that
|
142
|
+
# can't currently be pristined (inclusion of compiled extension targets in
|
143
|
+
# the file list). So stick to resetting executables if it's a default gem.
|
144
|
+
options[:only_executables] = true if spec.default_gem?
|
141
145
|
end
|
142
146
|
|
143
147
|
if options.key? :skip
|
@@ -147,14 +151,14 @@ extensions will be restored.
|
|
147
151
|
end
|
148
152
|
end
|
149
153
|
|
150
|
-
unless spec.extensions.empty? || options[:extensions] ||
|
154
|
+
unless spec.extensions.empty? || options[:extensions] || only_executables_or_plugins?
|
151
155
|
say "Skipped #{spec.full_name_with_location}, it needs to compile an extension"
|
152
156
|
next
|
153
157
|
end
|
154
158
|
|
155
159
|
gem = spec.cache_file
|
156
160
|
|
157
|
-
unless File.exist?(gem) ||
|
161
|
+
unless File.exist?(gem) || only_executables_or_plugins?
|
158
162
|
require_relative "../remote_fetcher"
|
159
163
|
|
160
164
|
say "Cached gem for #{spec.full_name_with_location} not found, attempting to fetch..."
|
@@ -204,4 +208,10 @@ extensions will be restored.
|
|
204
208
|
say "Restored #{spec.full_name_with_location}"
|
205
209
|
end
|
206
210
|
end
|
211
|
+
|
212
|
+
private
|
213
|
+
|
214
|
+
def only_executables_or_plugins?
|
215
|
+
options[:only_executables] || options[:only_plugins]
|
216
|
+
end
|
207
217
|
end
|
data/lib/rubygems/dependency.rb
CHANGED
@@ -2470,7 +2470,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2470
2470
|
|
2471
2471
|
if @installed_by_version
|
2472
2472
|
result << nil
|
2473
|
-
result << " s.installed_by_version = #{ruby_code Gem::VERSION}
|
2473
|
+
result << " s.installed_by_version = #{ruby_code Gem::VERSION}"
|
2474
2474
|
end
|
2475
2475
|
|
2476
2476
|
unless dependencies.empty?
|
@@ -83,11 +83,7 @@ class Gem::StubSpecification < Gem::BasicSpecification
|
|
83
83
|
# True when this gem has been activated
|
84
84
|
|
85
85
|
def activated?
|
86
|
-
@activated ||=
|
87
|
-
begin
|
88
|
-
loaded = Gem.loaded_specs[name]
|
89
|
-
loaded && loaded.version == version
|
90
|
-
end
|
86
|
+
@activated ||= !loaded_spec.nil?
|
91
87
|
end
|
92
88
|
|
93
89
|
def default_gem?
|
@@ -187,11 +183,7 @@ class Gem::StubSpecification < Gem::BasicSpecification
|
|
187
183
|
# The full Gem::Specification for this gem, loaded from evalling its gemspec
|
188
184
|
|
189
185
|
def spec
|
190
|
-
@spec ||= if @data
|
191
|
-
loaded = Gem.loaded_specs[name]
|
192
|
-
loaded if loaded && loaded.version == version
|
193
|
-
end
|
194
|
-
|
186
|
+
@spec ||= loaded_spec if @data
|
195
187
|
@spec ||= Gem::Specification.load(loaded_from)
|
196
188
|
end
|
197
189
|
alias_method :to_spec, :spec
|
@@ -231,4 +223,13 @@ class Gem::StubSpecification < Gem::BasicSpecification
|
|
231
223
|
def sort_obj # :nodoc:
|
232
224
|
[name, version, Gem::Platform.sort_priority(platform)]
|
233
225
|
end
|
226
|
+
|
227
|
+
private
|
228
|
+
|
229
|
+
def loaded_spec
|
230
|
+
spec = Gem.loaded_specs[name]
|
231
|
+
return unless spec && spec.version == version && spec.default_gem? == default_gem?
|
232
|
+
|
233
|
+
spec
|
234
|
+
end
|
234
235
|
end
|
@@ -19,6 +19,8 @@ module Gem::URI
|
|
19
19
|
Parser = RFC2396_Parser
|
20
20
|
RFC3986_PARSER = RFC3986_Parser.new
|
21
21
|
Ractor.make_shareable(RFC3986_PARSER) if defined?(Ractor)
|
22
|
+
RFC2396_PARSER = RFC2396_Parser.new
|
23
|
+
Ractor.make_shareable(RFC2396_PARSER) if defined?(Ractor)
|
22
24
|
|
23
25
|
# Gem::URI::Parser.new
|
24
26
|
DEFAULT_PARSER = Parser.new
|
data/lib/rubygems.rb
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
require "rbconfig"
|
10
10
|
|
11
11
|
module Gem
|
12
|
-
VERSION = "3.5.
|
12
|
+
VERSION = "3.5.22"
|
13
13
|
end
|
14
14
|
|
15
15
|
# Must be first since it unloads the prelude from 1.9.2
|
@@ -788,15 +788,14 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
788
788
|
# Open a file with given flags, and protect access with flock
|
789
789
|
|
790
790
|
def self.open_file_with_flock(path, &block)
|
791
|
-
mode
|
791
|
+
# read-write mode is used rather than read-only in order to support NFS
|
792
|
+
mode = IO::RDWR | IO::APPEND | IO::CREAT | IO::BINARY
|
792
793
|
mode |= IO::SHARE_DELETE if IO.const_defined?(:SHARE_DELETE)
|
793
794
|
|
794
795
|
File.open(path, mode) do |io|
|
795
796
|
begin
|
796
797
|
io.flock(File::LOCK_EX)
|
797
798
|
rescue Errno::ENOSYS, Errno::ENOTSUP
|
798
|
-
rescue Errno::ENOLCK # NFS
|
799
|
-
raise unless Thread.main == Thread.current
|
800
799
|
end
|
801
800
|
yield io
|
802
801
|
end
|
data/rubygems-update.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "rubygems-update"
|
5
|
-
s.version = "3.5.
|
5
|
+
s.version = "3.5.22"
|
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.
|
4
|
+
version: 3.5.22
|
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-10-
|
19
|
+
date: 2024-10-16 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
|
@@ -737,7 +737,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
737
737
|
- !ruby/object:Gem::Version
|
738
738
|
version: '0'
|
739
739
|
requirements: []
|
740
|
-
rubygems_version: 3.5.
|
740
|
+
rubygems_version: 3.5.22
|
741
741
|
signing_key:
|
742
742
|
specification_version: 4
|
743
743
|
summary: RubyGems is a package management framework for Ruby. This gem is downloaded
|