rubygems-update 3.3.19 → 3.3.20
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +20 -0
- data/bin/update_rubygems +1 -1
- data/bundler/CHANGELOG.md +26 -0
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli/install.rb +5 -2
- data/bundler/lib/bundler/cli/outdated.rb +12 -3
- data/bundler/lib/bundler/cli/platform.rb +1 -1
- data/bundler/lib/bundler/cli.rb +5 -3
- data/bundler/lib/bundler/definition.rb +61 -11
- data/bundler/lib/bundler/fetcher.rb +6 -6
- data/bundler/lib/bundler/gem_helpers.rb +7 -1
- data/bundler/lib/bundler/installer/standalone.rb +1 -1
- data/bundler/lib/bundler/installer.rb +8 -1
- data/bundler/lib/bundler/lazy_specification.rb +21 -21
- data/bundler/lib/bundler/man/bundle-cache.1 +6 -0
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +7 -0
- data/bundler/lib/bundler/man/bundle-config.1 +2 -2
- data/bundler/lib/bundler/man/bundle-config.1.ronn +3 -3
- data/bundler/lib/bundler/man/bundle-install.1 +4 -0
- data/bundler/lib/bundler/man/bundle-install.1.ronn +6 -0
- data/bundler/lib/bundler/man/bundle-platform.1 +15 -5
- data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
- data/bundler/lib/bundler/man/bundle.1 +3 -6
- data/bundler/lib/bundler/man/bundle.1.ronn +3 -4
- data/bundler/lib/bundler/resolver.rb +2 -1
- data/bundler/lib/bundler/ruby_dsl.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +5 -5
- data/bundler/lib/bundler/rubygems_ext.rb +13 -0
- data/bundler/lib/bundler/source/metadata.rb +1 -1
- data/bundler/lib/bundler/source_list.rb +4 -0
- data/bundler/lib/bundler/spec_set.rb +15 -28
- data/bundler/lib/bundler/version.rb +1 -1
- data/lib/rubygems/available_set.rb +3 -3
- data/lib/rubygems/basic_specification.rb +2 -2
- data/lib/rubygems/command.rb +6 -6
- data/lib/rubygems/commands/cert_command.rb +1 -1
- data/lib/rubygems/commands/cleanup_command.rb +1 -1
- data/lib/rubygems/commands/contents_command.rb +1 -1
- data/lib/rubygems/commands/dependency_command.rb +4 -4
- data/lib/rubygems/commands/fetch_command.rb +2 -2
- data/lib/rubygems/commands/generate_index_command.rb +2 -2
- data/lib/rubygems/commands/install_command.rb +7 -7
- data/lib/rubygems/commands/pristine_command.rb +5 -5
- data/lib/rubygems/commands/setup_command.rb +4 -4
- data/lib/rubygems/commands/sources_command.rb +3 -3
- data/lib/rubygems/commands/specification_command.rb +2 -2
- data/lib/rubygems/commands/uninstall_command.rb +4 -4
- data/lib/rubygems/commands/update_command.rb +5 -5
- data/lib/rubygems/commands/which_command.rb +1 -1
- data/lib/rubygems/config_file.rb +7 -7
- data/lib/rubygems/core_ext/kernel_warn.rb +1 -1
- data/lib/rubygems/defaults.rb +1 -1
- data/lib/rubygems/dependency.rb +5 -5
- data/lib/rubygems/dependency_installer.rb +5 -5
- data/lib/rubygems/dependency_list.rb +4 -4
- data/lib/rubygems/doctor.rb +4 -4
- data/lib/rubygems/exceptions.rb +1 -1
- data/lib/rubygems/ext/ext_conf_builder.rb +2 -2
- data/lib/rubygems/gemcutter_utilities.rb +1 -1
- data/lib/rubygems/indexer.rb +3 -3
- data/lib/rubygems/installer.rb +5 -13
- data/lib/rubygems/name_tuple.rb +3 -3
- data/lib/rubygems/package/tar_header.rb +17 -17
- data/lib/rubygems/package/tar_writer.rb +1 -1
- data/lib/rubygems/package.rb +19 -8
- data/lib/rubygems/platform.rb +15 -15
- data/lib/rubygems/query_utils.rb +6 -6
- data/lib/rubygems/remote_fetcher.rb +3 -3
- data/lib/rubygems/request/connection_pools.rb +2 -2
- data/lib/rubygems/request/http_pool.rb +1 -1
- data/lib/rubygems/request.rb +1 -1
- data/lib/rubygems/request_set/gem_dependency_api.rb +3 -3
- data/lib/rubygems/request_set/lockfile/parser.rb +12 -12
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +2 -2
- data/lib/rubygems/request_set.rb +3 -3
- data/lib/rubygems/requirement.rb +1 -1
- data/lib/rubygems/resolver/api_specification.rb +4 -4
- data/lib/rubygems/resolver/best_set.rb +3 -3
- data/lib/rubygems/resolver/conflict.rb +3 -3
- data/lib/rubygems/resolver/git_specification.rb +3 -3
- data/lib/rubygems/resolver/index_specification.rb +3 -2
- data/lib/rubygems/resolver/installed_specification.rb +2 -2
- data/lib/rubygems/resolver/installer_set.rb +7 -12
- data/lib/rubygems/resolver/lock_set.rb +1 -1
- data/lib/rubygems/resolver/lock_specification.rb +1 -1
- data/lib/rubygems/resolver/vendor_specification.rb +3 -3
- data/lib/rubygems/resolver.rb +4 -4
- data/lib/rubygems/security/policy.rb +6 -6
- data/lib/rubygems/security/signer.rb +1 -1
- data/lib/rubygems/security.rb +1 -1
- data/lib/rubygems/source/git.rb +4 -4
- data/lib/rubygems/source.rb +1 -1
- data/lib/rubygems/spec_fetcher.rb +1 -1
- data/lib/rubygems/specification.rb +26 -24
- data/lib/rubygems/specification_policy.rb +4 -4
- data/lib/rubygems/uninstaller.rb +4 -4
- data/lib/rubygems/user_interaction.rb +2 -2
- data/lib/rubygems/version.rb +12 -4
- data/lib/rubygems.rb +8 -8
- data/rubygems-update.gemspec +1 -1
- data/setup.rb +1 -1
- data/test/rubygems/helper.rb +5 -5
- data/test/rubygems/test_gem_config_file.rb +17 -5
- data/test/rubygems/test_gem_dependency_installer.rb +2 -2
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.lock +4 -4
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.toml +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +4 -4
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +1 -1
- data/test/rubygems/test_gem_installer.rb +6 -3
- data/test/rubygems/test_gem_package.rb +22 -0
- data/test/rubygems/test_gem_package_tar_reader.rb +1 -1
- data/test/rubygems/test_gem_requirement.rb +9 -3
- data/test/rubygems/test_gem_resolver_index_specification.rb +1 -1
- data/test/rubygems/test_gem_resolver_installer_set.rb +44 -0
- data/test/rubygems/test_gem_specification.rb +11 -2
- data/test/rubygems/test_gem_version.rb +9 -2
- data/test/rubygems/test_require.rb +1 -1
- data/test/rubygems/utilities.rb +4 -4
- metadata +3 -3
@@ -114,7 +114,7 @@ class Gem::RemoteFetcher
|
|
114
114
|
cache_dir =
|
115
115
|
if Dir.pwd == install_dir # see fetch_command
|
116
116
|
install_dir
|
117
|
-
elsif File.writable?(install_cache_dir) || (File.writable?(install_dir) && (
|
117
|
+
elsif File.writable?(install_cache_dir) || (File.writable?(install_dir) && (!File.exist?(install_cache_dir)))
|
118
118
|
install_cache_dir
|
119
119
|
else
|
120
120
|
File.join Gem.user_dir, "cache"
|
@@ -247,7 +247,7 @@ class Gem::RemoteFetcher
|
|
247
247
|
|
248
248
|
data = send "fetch_#{uri.scheme}", uri, mtime, head
|
249
249
|
|
250
|
-
if data
|
250
|
+
if data && !head && uri.to_s.end_with?(".gz")
|
251
251
|
begin
|
252
252
|
data = Gem::Util.gunzip data
|
253
253
|
rescue Zlib::GzipFile::Error
|
@@ -288,7 +288,7 @@ class Gem::RemoteFetcher
|
|
288
288
|
return Gem.read_binary(path)
|
289
289
|
end
|
290
290
|
|
291
|
-
if update
|
291
|
+
if update && path
|
292
292
|
Gem.write_binary(path, data)
|
293
293
|
end
|
294
294
|
|
@@ -39,7 +39,7 @@ class Gem::Request::ConnectionPools # :nodoc:
|
|
39
39
|
def get_no_proxy_from_env
|
40
40
|
env_no_proxy = ENV["no_proxy"] || ENV["NO_PROXY"]
|
41
41
|
|
42
|
-
return [] if env_no_proxy.nil?
|
42
|
+
return [] if env_no_proxy.nil? || env_no_proxy.empty?
|
43
43
|
|
44
44
|
env_no_proxy.split(/\s*,\s*/)
|
45
45
|
end
|
@@ -78,7 +78,7 @@ class Gem::Request::ConnectionPools # :nodoc:
|
|
78
78
|
|
79
79
|
no_proxy = get_no_proxy_from_env
|
80
80
|
|
81
|
-
if proxy_uri
|
81
|
+
if proxy_uri && !no_proxy?(hostname, no_proxy)
|
82
82
|
proxy_hostname = proxy_uri.respond_to?(:hostname) ? proxy_uri.hostname : proxy_uri.host
|
83
83
|
net_http_args + [
|
84
84
|
proxy_hostname,
|
data/lib/rubygems/request.rb
CHANGED
@@ -173,7 +173,7 @@ class Gem::Request
|
|
173
173
|
require "uri"
|
174
174
|
uri = URI(Gem::UriFormatter.new(env_proxy).normalize)
|
175
175
|
|
176
|
-
if uri
|
176
|
+
if uri && uri.user.nil? && uri.password.nil?
|
177
177
|
user = ENV["#{_scheme}_proxy_user"] || ENV["#{_SCHEME}_PROXY_USER"]
|
178
178
|
password = ENV["#{_scheme}_proxy_pass"] || ENV["#{_SCHEME}_PROXY_PASS"]
|
179
179
|
|
@@ -371,7 +371,7 @@ class Gem::RequestSet::GemDependencyAPI
|
|
371
371
|
duplicate = @dependencies.include? name
|
372
372
|
|
373
373
|
@dependencies[name] =
|
374
|
-
if requirements.empty?
|
374
|
+
if requirements.empty? && !source_set
|
375
375
|
Gem::Requirement.default
|
376
376
|
elsif source_set
|
377
377
|
Gem::Requirement.source_set
|
@@ -789,7 +789,7 @@ Gem dependencies file #{@path} includes git reference for both ref/branch and ta
|
|
789
789
|
|
790
790
|
raise ArgumentError,
|
791
791
|
"You must specify engine_version along with the Ruby engine" if
|
792
|
-
engine
|
792
|
+
engine && !engine_version
|
793
793
|
|
794
794
|
return true if @installing
|
795
795
|
|
@@ -800,7 +800,7 @@ Gem dependencies file #{@path} includes git reference for both ref/branch and ta
|
|
800
800
|
raise Gem::RubyVersionMismatch, message
|
801
801
|
end
|
802
802
|
|
803
|
-
if engine
|
803
|
+
if engine && engine != Gem.ruby_engine
|
804
804
|
message = "Your Ruby engine is #{Gem.ruby_engine}, " +
|
805
805
|
"but your #{gem_deps_file} requires #{engine}"
|
806
806
|
|
@@ -30,7 +30,7 @@ class Gem::RequestSet::Lockfile::Parser
|
|
30
30
|
when "PLATFORMS" then
|
31
31
|
parse_PLATFORMS
|
32
32
|
else
|
33
|
-
token = get until @tokens.empty?
|
33
|
+
token = get until @tokens.empty? || peek.first == :section
|
34
34
|
end
|
35
35
|
else
|
36
36
|
raise "BUG: unhandled token #{token.type} (#{token.value.inspect}) at line #{token.line} column #{token.column}"
|
@@ -44,7 +44,7 @@ class Gem::RequestSet::Lockfile::Parser
|
|
44
44
|
def get(expected_types = nil, expected_value = nil) # :nodoc:
|
45
45
|
token = @tokens.shift
|
46
46
|
|
47
|
-
if expected_types
|
47
|
+
if expected_types && !Array(expected_types).include?(token.type)
|
48
48
|
unget token
|
49
49
|
|
50
50
|
message = "unexpected token [#{token.type.inspect}, #{token.value.inspect}], " +
|
@@ -53,7 +53,7 @@ class Gem::RequestSet::Lockfile::Parser
|
|
53
53
|
raise Gem::RequestSet::Lockfile::ParseError.new message, token.column, token.line, @filename
|
54
54
|
end
|
55
55
|
|
56
|
-
if expected_value
|
56
|
+
if expected_value && expected_value != token.value
|
57
57
|
unget token
|
58
58
|
|
59
59
|
message = "unexpected token [#{token.type.inspect}, #{token.value.inspect}], " +
|
@@ -67,7 +67,7 @@ class Gem::RequestSet::Lockfile::Parser
|
|
67
67
|
end
|
68
68
|
|
69
69
|
def parse_DEPENDENCIES # :nodoc:
|
70
|
-
while
|
70
|
+
while !@tokens.empty? && :text == peek.type do
|
71
71
|
token = get :text
|
72
72
|
|
73
73
|
requirements = []
|
@@ -127,7 +127,7 @@ class Gem::RequestSet::Lockfile::Parser
|
|
127
127
|
set = Gem::Resolver::LockSet.new sources
|
128
128
|
last_specs = nil
|
129
129
|
|
130
|
-
while
|
130
|
+
while !@tokens.empty? && :text == peek.type do
|
131
131
|
token = get :text
|
132
132
|
name = token.value
|
133
133
|
column = token.column
|
@@ -144,7 +144,7 @@ class Gem::RequestSet::Lockfile::Parser
|
|
144
144
|
type = token.type
|
145
145
|
data = token.value
|
146
146
|
|
147
|
-
if type == :text
|
147
|
+
if type == :text && column == 4
|
148
148
|
version, platform = data.split "-", 2
|
149
149
|
|
150
150
|
platform =
|
@@ -183,7 +183,7 @@ class Gem::RequestSet::Lockfile::Parser
|
|
183
183
|
|
184
184
|
type = peek.type
|
185
185
|
value = peek.value
|
186
|
-
if type == :entry
|
186
|
+
if type == :entry && %w[branch ref tag].include?(value)
|
187
187
|
get
|
188
188
|
get :text
|
189
189
|
|
@@ -199,7 +199,7 @@ class Gem::RequestSet::Lockfile::Parser
|
|
199
199
|
|
200
200
|
last_spec = nil
|
201
201
|
|
202
|
-
while
|
202
|
+
while !@tokens.empty? && :text == peek.type do
|
203
203
|
token = get :text
|
204
204
|
name = token.value
|
205
205
|
column = token.column
|
@@ -214,7 +214,7 @@ class Gem::RequestSet::Lockfile::Parser
|
|
214
214
|
type = token.type
|
215
215
|
data = token.value
|
216
216
|
|
217
|
-
if type == :text
|
217
|
+
if type == :text && column == 4
|
218
218
|
last_spec = set.add_git_spec name, data, repository, revision, true
|
219
219
|
else
|
220
220
|
dependency = parse_dependency name, data
|
@@ -246,7 +246,7 @@ class Gem::RequestSet::Lockfile::Parser
|
|
246
246
|
set = Gem::Resolver::VendorSet.new
|
247
247
|
last_spec = nil
|
248
248
|
|
249
|
-
while
|
249
|
+
while !@tokens.empty? && :text == peek.first do
|
250
250
|
token = get :text
|
251
251
|
name = token.value
|
252
252
|
column = token.column
|
@@ -261,7 +261,7 @@ class Gem::RequestSet::Lockfile::Parser
|
|
261
261
|
type = token.type
|
262
262
|
data = token.value
|
263
263
|
|
264
|
-
if type == :text
|
264
|
+
if type == :text && column == 4
|
265
265
|
last_spec = set.add_vendor_gem name, directory
|
266
266
|
else
|
267
267
|
dependency = parse_dependency name, data
|
@@ -281,7 +281,7 @@ class Gem::RequestSet::Lockfile::Parser
|
|
281
281
|
end
|
282
282
|
|
283
283
|
def parse_PLATFORMS # :nodoc:
|
284
|
-
while
|
284
|
+
while !@tokens.empty? && :text == peek.first do
|
285
285
|
name = get(:text).value
|
286
286
|
|
287
287
|
@platforms << name
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# frozen_string_literal: true
|
1
|
+
#) frozen_string_literal: true
|
2
2
|
require_relative "parser"
|
3
3
|
|
4
4
|
class Gem::RequestSet::Lockfile::Tokenizer
|
@@ -26,7 +26,7 @@ class Gem::RequestSet::Lockfile::Tokenizer
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def skip(type)
|
29
|
-
@tokens.shift while
|
29
|
+
@tokens.shift while !@tokens.empty? && peek.type == type
|
30
30
|
end
|
31
31
|
|
32
32
|
##
|
data/lib/rubygems/request_set.rb
CHANGED
@@ -443,14 +443,14 @@ class Gem::RequestSet
|
|
443
443
|
|
444
444
|
def tsort_each_child(node) # :nodoc:
|
445
445
|
node.spec.dependencies.each do |dep|
|
446
|
-
next if dep.type == :development
|
446
|
+
next if dep.type == :development && !@development
|
447
447
|
|
448
448
|
match = @requests.find do |r|
|
449
|
-
dep.match? r.spec.name, r.spec.version, @prerelease
|
449
|
+
dep.match? r.spec.name, r.spec.version, r.spec.is_a?(Gem::Resolver::InstalledSpecification) || @prerelease
|
450
450
|
end
|
451
451
|
|
452
452
|
unless match
|
453
|
-
next if dep.type == :development
|
453
|
+
next if dep.type == :development && @development_shallow
|
454
454
|
next if @soft_missing
|
455
455
|
raise Gem::DependencyError,
|
456
456
|
"Unresolved dependency found during sorting - #{dep} (requested by #{node.spec.full_name})"
|
data/lib/rubygems/requirement.rb
CHANGED
@@ -253,7 +253,7 @@ class Gem::Requirement
|
|
253
253
|
def specific?
|
254
254
|
return true if @requirements.length > 1 # GIGO, > 1, > 2 is silly
|
255
255
|
|
256
|
-
|
256
|
+
!%w[> >=].include? @requirements.first.first # grab the operator
|
257
257
|
end
|
258
258
|
|
259
259
|
def to_s # :nodoc:
|
@@ -40,10 +40,10 @@ class Gem::Resolver::APISpecification < Gem::Resolver::Specification
|
|
40
40
|
end
|
41
41
|
|
42
42
|
def ==(other) # :nodoc:
|
43
|
-
self.class === other
|
44
|
-
@set == other.set
|
45
|
-
@name == other.name
|
46
|
-
@version == other.version
|
43
|
+
self.class === other &&
|
44
|
+
@set == other.set &&
|
45
|
+
@name == other.name &&
|
46
|
+
@version == other.version &&
|
47
47
|
@platform == other.platform
|
48
48
|
end
|
49
49
|
|
@@ -25,7 +25,7 @@ class Gem::Resolver::BestSet < Gem::Resolver::ComposedSet
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def find_all(req) # :nodoc:
|
28
|
-
pick_sets if @remote
|
28
|
+
pick_sets if @remote && @sets.empty?
|
29
29
|
|
30
30
|
super
|
31
31
|
rescue Gem::RemoteFetcher::FetchError => e
|
@@ -35,7 +35,7 @@ class Gem::Resolver::BestSet < Gem::Resolver::ComposedSet
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def prefetch(reqs) # :nodoc:
|
38
|
-
pick_sets if @remote
|
38
|
+
pick_sets if @remote && @sets.empty?
|
39
39
|
|
40
40
|
super
|
41
41
|
end
|
@@ -63,7 +63,7 @@ class Gem::Resolver::BestSet < Gem::Resolver::ComposedSet
|
|
63
63
|
uri = uri + "."
|
64
64
|
|
65
65
|
raise error unless api_set = @sets.find do |set|
|
66
|
-
Gem::Resolver::APISet === set
|
66
|
+
Gem::Resolver::APISet === set && set.dep_uri == uri
|
67
67
|
end
|
68
68
|
|
69
69
|
index_set = Gem::Resolver::IndexSet.new api_set.source
|
@@ -27,9 +27,9 @@ class Gem::Resolver::Conflict
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def ==(other) # :nodoc:
|
30
|
-
self.class === other
|
31
|
-
@dependency == other.dependency
|
32
|
-
@activated == other.activated
|
30
|
+
self.class === other &&
|
31
|
+
@dependency == other.dependency &&
|
32
|
+
@activated == other.activated &&
|
33
33
|
@failed_dep == other.failed_dep
|
34
34
|
end
|
35
35
|
|
@@ -6,9 +6,9 @@
|
|
6
6
|
|
7
7
|
class Gem::Resolver::GitSpecification < Gem::Resolver::SpecSpecification
|
8
8
|
def ==(other) # :nodoc:
|
9
|
-
self.class === other
|
10
|
-
@set == other.set
|
11
|
-
@spec == other.spec
|
9
|
+
self.class === other &&
|
10
|
+
@set == other.set &&
|
11
|
+
@spec == other.spec &&
|
12
12
|
@source == other.source
|
13
13
|
end
|
14
14
|
|
@@ -21,7 +21,8 @@ class Gem::Resolver::IndexSpecification < Gem::Resolver::Specification
|
|
21
21
|
@name = name
|
22
22
|
@version = version
|
23
23
|
@source = source
|
24
|
-
@platform = platform.to_s
|
24
|
+
@platform = Gem::Platform.new(platform.to_s)
|
25
|
+
@original_platform = platform.to_s
|
25
26
|
|
26
27
|
@spec = nil
|
27
28
|
end
|
@@ -91,7 +92,7 @@ class Gem::Resolver::IndexSpecification < Gem::Resolver::Specification
|
|
91
92
|
def spec # :nodoc:
|
92
93
|
@spec ||=
|
93
94
|
begin
|
94
|
-
tuple = Gem::NameTuple.new @name, @version, @
|
95
|
+
tuple = Gem::NameTuple.new @name, @version, @original_platform
|
95
96
|
|
96
97
|
@source.fetch_spec tuple
|
97
98
|
end
|
@@ -61,13 +61,12 @@ class Gem::Resolver::InstallerSet < Gem::Resolver::Set
|
|
61
61
|
found = find_all request
|
62
62
|
|
63
63
|
found.delete_if do |s|
|
64
|
-
s.version.prerelease?
|
64
|
+
s.version.prerelease? && !s.local?
|
65
65
|
end unless dependency.prerelease?
|
66
66
|
|
67
67
|
found = found.select do |s|
|
68
|
-
Gem::Source::SpecificFile === s.source
|
69
|
-
Gem::Platform
|
70
|
-
Gem::Platform.local === s.platform
|
68
|
+
Gem::Source::SpecificFile === s.source ||
|
69
|
+
Gem::Platform.match(s.platform)
|
71
70
|
end
|
72
71
|
|
73
72
|
found = found.sort_by do |s|
|
@@ -111,14 +110,14 @@ class Gem::Resolver::InstallerSet < Gem::Resolver::Set
|
|
111
110
|
# Should local gems should be considered?
|
112
111
|
|
113
112
|
def consider_local? # :nodoc:
|
114
|
-
@domain == :both
|
113
|
+
@domain == :both || @domain == :local
|
115
114
|
end
|
116
115
|
|
117
116
|
##
|
118
117
|
# Should remote gems should be considered?
|
119
118
|
|
120
119
|
def consider_remote? # :nodoc:
|
121
|
-
@domain == :both
|
120
|
+
@domain == :both || @domain == :remote
|
122
121
|
end
|
123
122
|
|
124
123
|
##
|
@@ -137,8 +136,8 @@ class Gem::Resolver::InstallerSet < Gem::Resolver::Set
|
|
137
136
|
|
138
137
|
dep = req.dependency
|
139
138
|
|
140
|
-
return res if @ignore_dependencies
|
141
|
-
|
139
|
+
return res if @ignore_dependencies &&
|
140
|
+
@always_install.none? {|spec| dep.match? spec }
|
142
141
|
|
143
142
|
name = dep.name
|
144
143
|
|
@@ -168,10 +167,6 @@ class Gem::Resolver::InstallerSet < Gem::Resolver::Set
|
|
168
167
|
end
|
169
168
|
end
|
170
169
|
|
171
|
-
res.delete_if do |spec|
|
172
|
-
spec.version.prerelease? and not dep.prerelease?
|
173
|
-
end
|
174
|
-
|
175
170
|
res.concat @remote_set.find_all req if consider_remote?
|
176
171
|
|
177
172
|
res
|
@@ -54,7 +54,7 @@ class Gem::Resolver::LockSet < Gem::Resolver::Set
|
|
54
54
|
dep = Gem::Dependency.new name, version
|
55
55
|
|
56
56
|
found = @specs.find do |spec|
|
57
|
-
dep.matches_spec?
|
57
|
+
dep.matches_spec?(spec) && spec.platform == platform
|
58
58
|
end
|
59
59
|
|
60
60
|
tuple = Gem::NameTuple.new found.name, found.version, found.platform
|
@@ -71,7 +71,7 @@ class Gem::Resolver::LockSpecification < Gem::Resolver::Specification
|
|
71
71
|
|
72
72
|
def spec
|
73
73
|
@spec ||= Gem::Specification.find do |spec|
|
74
|
-
spec.name == @name
|
74
|
+
spec.name == @name && spec.version == @version
|
75
75
|
end
|
76
76
|
|
77
77
|
@spec ||= Gem::Specification.new do |s|
|
@@ -6,9 +6,9 @@
|
|
6
6
|
|
7
7
|
class Gem::Resolver::VendorSpecification < Gem::Resolver::SpecSpecification
|
8
8
|
def ==(other) # :nodoc:
|
9
|
-
self.class === other
|
10
|
-
@set == other.set
|
11
|
-
@spec == other.spec
|
9
|
+
self.class === other &&
|
10
|
+
@set == other.set &&
|
11
|
+
@spec == other.spec &&
|
12
12
|
@source == other.source
|
13
13
|
end
|
14
14
|
|
data/lib/rubygems/resolver.rb
CHANGED
@@ -153,10 +153,10 @@ class Gem::Resolver
|
|
153
153
|
s.fetch_development_dependencies if @development
|
154
154
|
|
155
155
|
s.dependencies.reverse_each do |d|
|
156
|
-
next if d.type == :development
|
157
|
-
next if d.type == :development
|
156
|
+
next if d.type == :development && !@development
|
157
|
+
next if d.type == :development && @development_shallow &&
|
158
158
|
act.development?
|
159
|
-
next if d.type == :development
|
159
|
+
next if d.type == :development && @development_shallow &&
|
160
160
|
act.parent
|
161
161
|
|
162
162
|
reqs << Gem::Resolver::DependencyRequest.new(d, act)
|
@@ -192,7 +192,7 @@ class Gem::Resolver
|
|
192
192
|
conflict = e.conflicts.values.first
|
193
193
|
raise Gem::DependencyResolutionError, Conflict.new(conflict.requirement_trees.first.first, conflict.existing, conflict.requirement)
|
194
194
|
ensure
|
195
|
-
@output.close if defined?(@output)
|
195
|
+
@output.close if defined?(@output) && !debug?
|
196
196
|
end
|
197
197
|
|
198
198
|
##
|
@@ -88,16 +88,16 @@ class Gem::Security::Policy
|
|
88
88
|
|
89
89
|
message = "certificate #{signer.subject}"
|
90
90
|
|
91
|
-
if not_before = signer.not_before
|
91
|
+
if (not_before = signer.not_before) && not_before > time
|
92
92
|
raise Gem::Security::Exception,
|
93
93
|
"#{message} not valid before #{not_before}"
|
94
94
|
end
|
95
95
|
|
96
|
-
if not_after = signer.not_after
|
96
|
+
if (not_after = signer.not_after) && not_after < time
|
97
97
|
raise Gem::Security::Exception, "#{message} not valid after #{not_after}"
|
98
98
|
end
|
99
99
|
|
100
|
-
if issuer
|
100
|
+
if issuer && !signer.verify(issuer.public_key)
|
101
101
|
raise Gem::Security::Exception,
|
102
102
|
"#{message} was not issued by #{issuer.subject}"
|
103
103
|
end
|
@@ -109,7 +109,7 @@ class Gem::Security::Policy
|
|
109
109
|
# Ensures the public key of +key+ matches the public key in +signer+
|
110
110
|
|
111
111
|
def check_key(signer, key)
|
112
|
-
unless signer
|
112
|
+
unless signer && key
|
113
113
|
return true unless @only_signed
|
114
114
|
|
115
115
|
raise Gem::Security::Exception, "missing key or signature"
|
@@ -231,7 +231,7 @@ class Gem::Security::Policy
|
|
231
231
|
|
232
232
|
if @verify_data
|
233
233
|
raise Gem::Security::Exception, "no digests provided (probable bug)" if
|
234
|
-
signer_digests.nil?
|
234
|
+
signer_digests.nil? || signer_digests.empty?
|
235
235
|
else
|
236
236
|
signer_digests = {}
|
237
237
|
end
|
@@ -248,7 +248,7 @@ class Gem::Security::Policy
|
|
248
248
|
|
249
249
|
if @only_trusted
|
250
250
|
check_trust chain, digester, trust_dir
|
251
|
-
elsif signatures.empty?
|
251
|
+
elsif signatures.empty? && digests.empty?
|
252
252
|
# trust is irrelevant if there's no signatures to verify
|
253
253
|
else
|
254
254
|
alert_warning "#{subject signer} is not trusted for #{full_name}"
|
@@ -141,7 +141,7 @@ class Gem::Security::Signer
|
|
141
141
|
|
142
142
|
raise Gem::Security::Exception, "no certs provided" if @cert_chain.empty?
|
143
143
|
|
144
|
-
if @cert_chain.length == 1
|
144
|
+
if @cert_chain.length == 1 && @cert_chain.last.not_after < Time.now
|
145
145
|
alert("Your certificate has expired, trying to re-sign it...")
|
146
146
|
|
147
147
|
re_sign_key(
|
data/lib/rubygems/security.rb
CHANGED
data/lib/rubygems/source/git.rb
CHANGED
@@ -76,10 +76,10 @@ class Gem::Source::Git < Gem::Source
|
|
76
76
|
end
|
77
77
|
|
78
78
|
def ==(other) # :nodoc:
|
79
|
-
super
|
80
|
-
@name == other.name
|
81
|
-
@repository == other.repository
|
82
|
-
@reference == other.reference
|
79
|
+
super &&
|
80
|
+
@name == other.name &&
|
81
|
+
@repository == other.repository &&
|
82
|
+
@reference == other.reference &&
|
83
83
|
@need_submodules == other.need_submodules
|
84
84
|
end
|
85
85
|
|
data/lib/rubygems/source.rb
CHANGED
@@ -98,7 +98,7 @@ class Gem::SpecFetcher
|
|
98
98
|
|
99
99
|
found[source] = specs.select do |tup|
|
100
100
|
if dependency.match?(tup)
|
101
|
-
if matching_platform
|
101
|
+
if matching_platform && !Gem::Platform.match_gem?(tup.platform, tup.name)
|
102
102
|
pm = (
|
103
103
|
rejected_specs[dependency] ||= \
|
104
104
|
Gem::PlatformMismatch.new(tup.name, tup.version))
|