rubygems-update 3.3.21 → 3.3.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 +13 -0
- data/Manifest.txt +7 -0
- data/bundler/CHANGELOG.md +22 -0
- data/bundler/bundler.gemspec +6 -8
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli.rb +2 -1
- data/bundler/lib/bundler/current_ruby.rb +14 -5
- data/bundler/lib/bundler/definition.rb +5 -8
- data/bundler/lib/bundler/dependency.rb +18 -85
- data/bundler/lib/bundler/endpoint_specification.rb +1 -1
- data/bundler/lib/bundler/feature_flag.rb +0 -1
- data/bundler/lib/bundler/gem_version_promoter.rb +4 -18
- data/bundler/lib/bundler/injector.rb +2 -1
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- data/bundler/lib/bundler/man/bundle-add.1 +6 -2
- data/bundler/lib/bundler/man/bundle-add.1.ronn +4 -1
- data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/bundler/lib/bundler/man/bundle-cache.1 +1 -1
- data/bundler/lib/bundler/man/bundle-check.1 +1 -1
- data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +1 -1
- data/bundler/lib/bundler/man/bundle-console.1 +53 -0
- data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +1 -1
- data/bundler/lib/bundler/man/bundle-gem.1 +1 -1
- data/bundler/lib/bundler/man/bundle-help.1 +13 -0
- data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/bundler/lib/bundler/man/bundle-info.1 +1 -1
- data/bundler/lib/bundler/man/bundle-init.1 +1 -1
- data/bundler/lib/bundler/man/bundle-inject.1 +1 -1
- data/bundler/lib/bundler/man/bundle-install.1 +1 -1
- data/bundler/lib/bundler/man/bundle-list.1 +1 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
- data/bundler/lib/bundler/man/bundle-open.1 +1 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +1 -1
- data/bundler/lib/bundler/man/bundle-platform.1 +1 -1
- data/bundler/lib/bundler/man/bundle-plugin.1 +1 -1
- data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +1 -1
- data/bundler/lib/bundler/man/bundle-update.1 +1 -1
- data/bundler/lib/bundler/man/bundle-version.1 +35 -0
- data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/bundler/lib/bundler/man/bundle-viz.1 +1 -1
- data/bundler/lib/bundler/man/bundle.1 +6 -2
- data/bundler/lib/bundler/man/bundle.1.ronn +4 -1
- data/bundler/lib/bundler/man/gemfile.5 +8 -38
- data/bundler/lib/bundler/man/gemfile.5.ronn +9 -27
- data/bundler/lib/bundler/man/index.txt +3 -0
- data/bundler/lib/bundler/match_remote_metadata.rb +4 -1
- data/bundler/lib/bundler/resolver/base.rb +50 -0
- data/bundler/lib/bundler/resolver.rb +67 -84
- data/bundler/lib/bundler/rubygems_ext.rb +13 -3
- data/bundler/lib/bundler/settings.rb +0 -1
- data/bundler/lib/bundler/spec_set.rb +10 -0
- data/bundler/lib/bundler/version.rb +1 -1
- data/lib/rubygems/platform.rb +1 -1
- data/lib/rubygems/query_utils.rb +2 -2
- data/lib/rubygems.rb +1 -1
- data/rubygems-update.gemspec +1 -1
- data/test/rubygems/helper.rb +0 -2
- data/test/rubygems/test_gem_commands_info_command.rb +26 -0
- data/test/rubygems/test_gem_platform.rb +32 -0
- metadata +10 -3
@@ -3,12 +3,11 @@
|
|
3
3
|
module Bundler
|
4
4
|
class Resolver
|
5
5
|
require_relative "vendored_molinillo"
|
6
|
+
require_relative "resolver/base"
|
6
7
|
require_relative "resolver/spec_group"
|
7
8
|
|
8
9
|
include GemHelpers
|
9
10
|
|
10
|
-
attr_writer :platforms
|
11
|
-
|
12
11
|
# Figures out the best possible configuration of gems that satisfies
|
13
12
|
# the list of passed dependencies and any child dependencies without
|
14
13
|
# causing any gem activation errors.
|
@@ -27,15 +26,13 @@ module Bundler
|
|
27
26
|
|
28
27
|
def initialize(source_requirements, base, gem_version_promoter, additional_base_requirements, platforms)
|
29
28
|
@source_requirements = source_requirements
|
30
|
-
@base = base
|
29
|
+
@base = Resolver::Base.new(base, additional_base_requirements)
|
31
30
|
@resolver = Molinillo::Resolver.new(self, self)
|
32
31
|
@results_for = {}
|
33
32
|
@search_for = {}
|
34
|
-
@additional_base_requirements = additional_base_requirements
|
35
33
|
@platforms = platforms
|
36
34
|
@resolving_only_for_ruby = platforms == [Gem::Platform::RUBY]
|
37
35
|
@gem_version_promoter = gem_version_promoter
|
38
|
-
@use_gvp = Bundler.feature_flag.use_gem_version_promoter_for_major_updates? || !@gem_version_promoter.major?
|
39
36
|
end
|
40
37
|
|
41
38
|
def start(requirements, exclude_specs: [])
|
@@ -45,18 +42,11 @@ module Bundler
|
|
45
42
|
remove_from_candidates(spec)
|
46
43
|
end
|
47
44
|
|
48
|
-
@base_dg = Molinillo::DependencyGraph.new
|
49
|
-
@base.each do |ls|
|
50
|
-
dep = Dependency.new(ls.name, ls.version)
|
51
|
-
@base_dg.add_vertex(ls.name, DepProxy.get_proxy(dep, ls.platform), true)
|
52
|
-
end
|
53
|
-
@additional_base_requirements.each {|d| @base_dg.add_vertex(d.name, d) }
|
54
|
-
|
55
45
|
@gem_version_promoter.prerelease_specified = @prerelease_specified = {}
|
56
46
|
requirements.each {|dep| @prerelease_specified[dep.name] ||= dep.prerelease? }
|
57
47
|
|
58
48
|
verify_gemfile_dependencies_are_found!(requirements)
|
59
|
-
result = @resolver.resolve(requirements
|
49
|
+
result = @resolver.resolve(requirements).
|
60
50
|
map(&:payload).
|
61
51
|
reject {|sg| sg.name.end_with?("\0") }.
|
62
52
|
map(&:to_specs).
|
@@ -64,8 +54,20 @@ module Bundler
|
|
64
54
|
|
65
55
|
SpecSet.new(SpecSet.new(result).for(regular_requirements, false, @platforms))
|
66
56
|
rescue Molinillo::VersionConflict => e
|
57
|
+
conflicts = e.conflicts
|
58
|
+
|
59
|
+
deps_to_unlock = conflicts.values.inject([]) do |deps, conflict|
|
60
|
+
deps |= conflict.requirement_trees.flatten.map {|req| base_requirements[req.name] }.compact
|
61
|
+
end
|
62
|
+
|
63
|
+
if deps_to_unlock.any?
|
64
|
+
@base.unlock_deps(deps_to_unlock)
|
65
|
+
reset_spec_cache
|
66
|
+
retry
|
67
|
+
end
|
68
|
+
|
67
69
|
message = version_conflict_message(e)
|
68
|
-
raise VersionConflict.new(
|
70
|
+
raise VersionConflict.new(conflicts.keys.uniq, message)
|
69
71
|
rescue Molinillo::CircularDependencyError => e
|
70
72
|
names = e.dependencies.sort_by(&:name).map {|d| "gem '#{d.name}'" }
|
71
73
|
raise CyclicDependencyError, "Your bundle requires gems that depend" \
|
@@ -120,31 +122,22 @@ module Bundler
|
|
120
122
|
dependency = dependency_proxy.dep
|
121
123
|
name = dependency.name
|
122
124
|
@search_for[dependency_proxy] ||= begin
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
end
|
125
|
+
locked_results = @base[name].select {|spec| requirement_satisfied_by?(dependency, nil, spec) }
|
126
|
+
locked_requirement = base_requirements[name]
|
127
|
+
results = results_for(dependency) + locked_results
|
128
|
+
results = results.select {|spec| requirement_satisfied_by?(locked_requirement, nil, spec) } if locked_requirement
|
128
129
|
|
129
|
-
if !@prerelease_specified[name] &&
|
130
|
+
if !@prerelease_specified[name] && locked_results.empty?
|
130
131
|
# Move prereleases to the beginning of the list, so they're considered
|
131
132
|
# last during resolution.
|
132
133
|
pre, results = results.partition {|spec| spec.version.prerelease? }
|
133
134
|
results = pre + results
|
134
135
|
end
|
135
136
|
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
if version == spec.version
|
141
|
-
specs << spec
|
142
|
-
else
|
143
|
-
nested << [spec.version, [spec]]
|
144
|
-
end
|
145
|
-
end
|
146
|
-
nested.reduce([]) do |groups, (version, specs)|
|
147
|
-
next groups if locked_requirement && !locked_requirement.satisfied_by?(version)
|
137
|
+
if results.any?
|
138
|
+
results = @gem_version_promoter.sort_versions(dependency, results)
|
139
|
+
|
140
|
+
results.group_by(&:version).reduce([]) do |groups, (_, specs)|
|
148
141
|
next groups unless specs.any? {|spec| spec.match_platform(platform) }
|
149
142
|
|
150
143
|
specs_by_platform = Hash.new do |current_specs, current_platform|
|
@@ -167,13 +160,6 @@ module Bundler
|
|
167
160
|
else
|
168
161
|
[]
|
169
162
|
end
|
170
|
-
# GVP handles major itself, but it's still a bit risky to trust it with it
|
171
|
-
# until we get it settled with new behavior. For 2.x it can take over all cases.
|
172
|
-
if !@use_gvp
|
173
|
-
spec_groups
|
174
|
-
else
|
175
|
-
@gem_version_promoter.sort_versions(dependency, spec_groups)
|
176
|
-
end
|
177
163
|
end
|
178
164
|
end
|
179
165
|
|
@@ -199,12 +185,6 @@ module Bundler
|
|
199
185
|
"Gemfile"
|
200
186
|
end
|
201
187
|
|
202
|
-
def name_for_locking_dependency_source
|
203
|
-
Bundler.default_lockfile.basename.to_s
|
204
|
-
rescue StandardError
|
205
|
-
"Gemfile.lock"
|
206
|
-
end
|
207
|
-
|
208
188
|
def requirement_satisfied_by?(requirement, activated, spec)
|
209
189
|
requirement.matches_spec?(spec) || spec.source.is_a?(Source::Gemspec)
|
210
190
|
end
|
@@ -218,7 +198,7 @@ module Bundler
|
|
218
198
|
name = name_for(dependency)
|
219
199
|
vertex = activated.vertex_named(name)
|
220
200
|
[
|
221
|
-
@
|
201
|
+
@base[name].any? ? 0 : 1,
|
222
202
|
vertex.payload ? 0 : 1,
|
223
203
|
vertex.root? ? 0 : 1,
|
224
204
|
amount_constrained(dependency),
|
@@ -237,9 +217,12 @@ module Bundler
|
|
237
217
|
|
238
218
|
private
|
239
219
|
|
220
|
+
def base_requirements
|
221
|
+
@base.base_requirements
|
222
|
+
end
|
223
|
+
|
240
224
|
def remove_from_candidates(spec)
|
241
225
|
@base.delete(spec)
|
242
|
-
@gem_version_promoter.reset
|
243
226
|
|
244
227
|
@results_for.keys.each do |dep|
|
245
228
|
next unless dep.name == spec.name
|
@@ -247,7 +230,12 @@ module Bundler
|
|
247
230
|
@results_for[dep].reject {|s| s.name == spec.name && s.version == spec.version }
|
248
231
|
end
|
249
232
|
|
233
|
+
reset_spec_cache
|
234
|
+
end
|
235
|
+
|
236
|
+
def reset_spec_cache
|
250
237
|
@search_for = {}
|
238
|
+
@gem_version_promoter.reset
|
251
239
|
end
|
252
240
|
|
253
241
|
# returns an integer \in (-\infty, 0]
|
@@ -339,18 +327,6 @@ module Bundler
|
|
339
327
|
|
340
328
|
e.message_with_trees(
|
341
329
|
:full_message_for_conflict => lambda do |name, conflict|
|
342
|
-
o = if name.end_with?("\0")
|
343
|
-
String.new("Bundler found conflicting requirements for the #{name} version:")
|
344
|
-
else
|
345
|
-
String.new("Bundler could not find compatible versions for gem \"#{name}\":")
|
346
|
-
end
|
347
|
-
o << %(\n)
|
348
|
-
if conflict.locked_requirement
|
349
|
-
o << %( In snapshot (#{name_for_locking_dependency_source}):\n)
|
350
|
-
o << %( #{SharedHelpers.pretty_dependency(conflict.locked_requirement)}\n)
|
351
|
-
o << %(\n)
|
352
|
-
end
|
353
|
-
o << %( In #{name_for_explicit_dependency_source}:\n)
|
354
330
|
trees = conflict.requirement_trees
|
355
331
|
|
356
332
|
# called first, because we want to reduce the amount of work required to find maximal empty sets
|
@@ -369,30 +345,41 @@ module Bundler
|
|
369
345
|
trees.sort_by! {|t| t.reverse.map(&:name) }
|
370
346
|
end
|
371
347
|
|
372
|
-
|
373
|
-
|
374
|
-
|
348
|
+
if trees.size > 1 || name == "bundler"
|
349
|
+
o = if name.end_with?("\0")
|
350
|
+
String.new("Bundler found conflicting requirements for the #{name} version:")
|
351
|
+
else
|
352
|
+
String.new("Bundler could not find compatible versions for gem \"#{name}\":")
|
353
|
+
end
|
354
|
+
o << %(\n)
|
355
|
+
o << %( In #{name_for_explicit_dependency_source}:\n)
|
356
|
+
o << trees.map do |tree|
|
357
|
+
t = "".dup
|
358
|
+
depth = 2
|
375
359
|
|
376
|
-
|
377
|
-
|
360
|
+
base_tree = tree.first
|
361
|
+
base_tree_name = base_tree.name
|
378
362
|
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
363
|
+
if base_tree_name.end_with?("\0")
|
364
|
+
t = nil
|
365
|
+
else
|
366
|
+
tree.each do |req|
|
367
|
+
t << " " * depth << SharedHelpers.pretty_dependency(req)
|
368
|
+
unless tree.last == req
|
369
|
+
if spec = conflict.activated_by_name[req.name]
|
370
|
+
t << %( was resolved to #{spec.version}, which)
|
371
|
+
end
|
372
|
+
t << %( depends on)
|
387
373
|
end
|
388
|
-
t << %(
|
374
|
+
t << %(\n)
|
375
|
+
depth += 1
|
389
376
|
end
|
390
|
-
t << %(\n)
|
391
|
-
depth += 1
|
392
377
|
end
|
393
|
-
|
394
|
-
|
395
|
-
|
378
|
+
t
|
379
|
+
end.compact.join("\n")
|
380
|
+
else
|
381
|
+
o = String.new
|
382
|
+
end
|
396
383
|
|
397
384
|
if name == "bundler"
|
398
385
|
o << %(\n Current Bundler version:\n bundler (#{Bundler::VERSION}))
|
@@ -416,17 +403,13 @@ module Bundler
|
|
416
403
|
end
|
417
404
|
elsif name.end_with?("\0")
|
418
405
|
o << %(\n Current #{name} version:\n #{SharedHelpers.pretty_dependency(@metadata_requirements.find {|req| req.name == name })}\n\n)
|
419
|
-
elsif conflict.locked_requirement
|
420
|
-
o << "\n"
|
421
|
-
o << %(Deleting your #{name_for_locking_dependency_source} file and running `bundle install` will rebuild your snapshot from scratch, using only\n)
|
422
|
-
o << %(the gems in your Gemfile, which may resolve the conflict.\n)
|
423
406
|
elsif !conflict.existing
|
424
407
|
o << "\n"
|
425
408
|
|
426
409
|
relevant_source = conflict.requirement.source || source_for(name)
|
427
410
|
|
428
|
-
extra_message = if
|
429
|
-
", which is required by gem '#{SharedHelpers.pretty_dependency(
|
411
|
+
extra_message = if trees.first.size > 1
|
412
|
+
", which is required by gem '#{SharedHelpers.pretty_dependency(trees.first[-2])}',"
|
430
413
|
else
|
431
414
|
""
|
432
415
|
end
|
@@ -237,8 +237,11 @@ module Gem
|
|
237
237
|
MINGW = Gem::Platform.new("x86-mingw32")
|
238
238
|
X64_MINGW = [Gem::Platform.new("x64-mingw32"),
|
239
239
|
Gem::Platform.new("x64-mingw-ucrt")].freeze
|
240
|
+
WINDOWS = [MSWIN, MSWIN64, MINGW, X64_MINGW].flatten.freeze
|
241
|
+
X64_LINUX = Gem::Platform.new("x86_64-linux")
|
242
|
+
X64_LINUX_MUSL = Gem::Platform.new("x86_64-linux-musl")
|
240
243
|
|
241
|
-
if
|
244
|
+
if X64_LINUX === X64_LINUX_MUSL
|
242
245
|
remove_method :===
|
243
246
|
|
244
247
|
def ===(other)
|
@@ -258,7 +261,7 @@ module Gem
|
|
258
261
|
# version
|
259
262
|
(
|
260
263
|
(@os != "linux" && (@version.nil? || other.version.nil?)) ||
|
261
|
-
(@os == "linux" && (
|
264
|
+
(@os == "linux" && (other.version == "gnu#{@version}" || other.version == "musl#{@version}" || @version == "gnu#{other.version}")) ||
|
262
265
|
@version == other.version
|
263
266
|
)
|
264
267
|
end
|
@@ -274,14 +277,21 @@ module Gem
|
|
274
277
|
def match_gem?(platform, gem_name)
|
275
278
|
match_platforms?(platform, Gem.platforms)
|
276
279
|
end
|
280
|
+
end
|
281
|
+
|
282
|
+
match_platforms_defined = Gem::Platform.respond_to?(:match_platforms?, true)
|
283
|
+
|
284
|
+
if !match_platforms_defined || Gem::Platform.send(:match_platforms?, Gem::Platform::X64_LINUX_MUSL, [Gem::Platform::X64_LINUX])
|
277
285
|
|
278
286
|
private
|
279
287
|
|
288
|
+
remove_method :match_platforms? if match_platforms_defined
|
289
|
+
|
280
290
|
def match_platforms?(platform, platforms)
|
281
291
|
platforms.any? do |local_platform|
|
282
292
|
platform.nil? ||
|
283
293
|
local_platform == platform ||
|
284
|
-
(local_platform != Gem::Platform::RUBY &&
|
294
|
+
(local_platform != Gem::Platform::RUBY && platform =~ local_platform)
|
285
295
|
end
|
286
296
|
end
|
287
297
|
end
|
@@ -114,10 +114,20 @@ module Bundler
|
|
114
114
|
SpecSet.new(arr)
|
115
115
|
end
|
116
116
|
|
117
|
+
def -(other)
|
118
|
+
SpecSet.new(to_a - other.to_a)
|
119
|
+
end
|
120
|
+
|
117
121
|
def find_by_name_and_platform(name, platform)
|
118
122
|
@specs.detect {|spec| spec.name == name && spec.match_platform(platform) }
|
119
123
|
end
|
120
124
|
|
125
|
+
def delete_by_name_and_version(name, version)
|
126
|
+
@specs.reject! {|spec| spec.name == name && spec.version == version }
|
127
|
+
@lookup = nil
|
128
|
+
@sorted = nil
|
129
|
+
end
|
130
|
+
|
121
131
|
def what_required(spec)
|
122
132
|
unless req = find {|s| s.dependencies.any? {|d| d.type == :runtime && d.name == spec.name } }
|
123
133
|
return [spec]
|
data/lib/rubygems/platform.rb
CHANGED
@@ -180,7 +180,7 @@ class Gem::Platform
|
|
180
180
|
# version
|
181
181
|
(
|
182
182
|
(@os != "linux" && (@version.nil? || other.version.nil?)) ||
|
183
|
-
(@os == "linux" && (
|
183
|
+
(@os == "linux" && (other.version == "gnu#{@version}" || other.version == "musl#{@version}" || @version == "gnu#{other.version}")) ||
|
184
184
|
@version == other.version
|
185
185
|
)
|
186
186
|
end
|
data/lib/rubygems/query_utils.rb
CHANGED
@@ -151,7 +151,7 @@ module Gem::QueryUtils
|
|
151
151
|
fetcher.detect(specs_type) { true }
|
152
152
|
else
|
153
153
|
fetcher.detect(specs_type) do |name_tuple|
|
154
|
-
name === name_tuple.name
|
154
|
+
name === name_tuple.name && options[:version].satisfied_by?(name_tuple.version)
|
155
155
|
end
|
156
156
|
end
|
157
157
|
|
@@ -159,7 +159,7 @@ module Gem::QueryUtils
|
|
159
159
|
end
|
160
160
|
|
161
161
|
def specs_type
|
162
|
-
if options[:all]
|
162
|
+
if options[:all] || options[:version].specific?
|
163
163
|
if options[:prerelease]
|
164
164
|
:complete
|
165
165
|
else
|
data/lib/rubygems.rb
CHANGED
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.3.
|
5
|
+
s.version = "3.3.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
|
|
data/test/rubygems/helper.rb
CHANGED
@@ -334,8 +334,6 @@ class Gem::TestCase < Test::Unit::TestCase
|
|
334
334
|
# capture output
|
335
335
|
Gem::DefaultUserInteraction.ui = Gem::MockGemUi.new
|
336
336
|
|
337
|
-
ENV["TMPDIR"] = @tempdir
|
338
|
-
|
339
337
|
@orig_SYSTEM_WIDE_CONFIG_FILE = Gem::ConfigFile::SYSTEM_WIDE_CONFIG_FILE
|
340
338
|
Gem::ConfigFile.send :remove_const, :SYSTEM_WIDE_CONFIG_FILE
|
341
339
|
Gem::ConfigFile.send :const_set, :SYSTEM_WIDE_CONFIG_FILE,
|
@@ -40,4 +40,30 @@ class TestGemCommandsInfoCommand < Gem::TestCase
|
|
40
40
|
assert_match %r{#{@gem.summary}\n}, @ui.output
|
41
41
|
assert_match "", @ui.error
|
42
42
|
end
|
43
|
+
|
44
|
+
def test_execute_with_version_flag
|
45
|
+
spec_fetcher do |fetcher|
|
46
|
+
fetcher.spec "coolgem", "1.0"
|
47
|
+
fetcher.spec "coolgem", "2.0"
|
48
|
+
end
|
49
|
+
|
50
|
+
@cmd.handle_options %w[coolgem --remote --version 1.0]
|
51
|
+
|
52
|
+
use_ui @ui do
|
53
|
+
@cmd.execute
|
54
|
+
end
|
55
|
+
|
56
|
+
expected = <<-EOF
|
57
|
+
|
58
|
+
*** REMOTE GEMS ***
|
59
|
+
|
60
|
+
coolgem (1.0)
|
61
|
+
Author: A User
|
62
|
+
Homepage: http://example.com
|
63
|
+
|
64
|
+
this is a summary
|
65
|
+
EOF
|
66
|
+
|
67
|
+
assert_equal expected, @ui.output
|
68
|
+
end
|
43
69
|
end
|
@@ -138,6 +138,10 @@ class TestGemPlatform < Gem::TestCase
|
|
138
138
|
"x86_64-linux-gnu" => ["x86_64", "linux", "gnu"],
|
139
139
|
"x86_64-linux-musl" => ["x86_64", "linux", "musl"],
|
140
140
|
"x86_64-linux-uclibc" => ["x86_64", "linux", "uclibc"],
|
141
|
+
"arm-linux-eabi" => ["arm", "linux", "eabi"],
|
142
|
+
"arm-linux-gnueabi" => ["arm", "linux", "gnueabi"],
|
143
|
+
"arm-linux-musleabi" => ["arm", "linux", "musleabi"],
|
144
|
+
"arm-linux-uclibceabi" => ["arm", "linux", "uclibceabi"],
|
141
145
|
"x86_64-openbsd3.9" => ["x86_64", "openbsd", "3.9"],
|
142
146
|
"x86_64-openbsd4.0" => ["x86_64", "openbsd", "4.0"],
|
143
147
|
"x86_64-openbsd" => ["x86_64", "openbsd", nil],
|
@@ -301,6 +305,34 @@ class TestGemPlatform < Gem::TestCase
|
|
301
305
|
refute(x86_linux_uclibc === x86_linux, "linux-uclibc =~ linux")
|
302
306
|
end
|
303
307
|
|
308
|
+
def test_eabi_version_is_stricter_for_linux_os
|
309
|
+
arm_linux_eabi = Gem::Platform.new "arm-linux-eabi"
|
310
|
+
arm_linux_gnueabi = Gem::Platform.new "arm-linux-gnueabi"
|
311
|
+
arm_linux_musleabi = Gem::Platform.new "arm-linux-musleabi"
|
312
|
+
arm_linux_uclibceabi = Gem::Platform.new "arm-linux-uclibceabi"
|
313
|
+
|
314
|
+
# a naked linux runtime is implicit gnu, as it represents the common glibc-linked runtime
|
315
|
+
assert(arm_linux_eabi === arm_linux_gnueabi, "linux-eabi =~ linux-gnueabi")
|
316
|
+
assert(arm_linux_gnueabi === arm_linux_eabi, "linux-gnueabi =~ linux-eabi")
|
317
|
+
|
318
|
+
# musl and explicit gnu should differ
|
319
|
+
refute(arm_linux_gnueabi === arm_linux_musleabi, "linux-gnueabi =~ linux-musleabi")
|
320
|
+
refute(arm_linux_musleabi === arm_linux_gnueabi, "linux-musleabi =~ linux-gnueabi")
|
321
|
+
|
322
|
+
# explicit libc differ
|
323
|
+
refute(arm_linux_uclibceabi === arm_linux_musleabi, "linux-uclibceabi =~ linux-musleabi")
|
324
|
+
refute(arm_linux_musleabi === arm_linux_uclibceabi, "linux-musleabi =~ linux-uclibceabi")
|
325
|
+
|
326
|
+
# musl host runtime accepts libc-generic or statically linked gems...
|
327
|
+
assert(arm_linux_eabi === arm_linux_musleabi, "linux-eabi =~ linux-musleabi")
|
328
|
+
# ...but implicit gnu runtime generally does not accept musl-specific gems
|
329
|
+
refute(arm_linux_musleabi === arm_linux_eabi, "linux-musleabi =~ linux-eabi")
|
330
|
+
|
331
|
+
# other libc are not glibc compatible
|
332
|
+
refute(arm_linux_eabi === arm_linux_uclibceabi, "linux-eabi =~ linux-uclibceabi")
|
333
|
+
refute(arm_linux_uclibceabi === arm_linux_eabi, "linux-uclibceabi =~ linux-eabi")
|
334
|
+
end
|
335
|
+
|
304
336
|
def test_equals3_cpu_arm
|
305
337
|
arm = Gem::Platform.new "arm-linux"
|
306
338
|
armv5 = Gem::Platform.new "armv5-linux"
|
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.3.
|
4
|
+
version: 3.3.22
|
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: 2022-
|
19
|
+
date: 2022-09-07 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
|
@@ -159,12 +159,16 @@ files:
|
|
159
159
|
- bundler/lib/bundler/man/bundle-clean.1.ronn
|
160
160
|
- bundler/lib/bundler/man/bundle-config.1
|
161
161
|
- bundler/lib/bundler/man/bundle-config.1.ronn
|
162
|
+
- bundler/lib/bundler/man/bundle-console.1
|
163
|
+
- bundler/lib/bundler/man/bundle-console.1.ronn
|
162
164
|
- bundler/lib/bundler/man/bundle-doctor.1
|
163
165
|
- bundler/lib/bundler/man/bundle-doctor.1.ronn
|
164
166
|
- bundler/lib/bundler/man/bundle-exec.1
|
165
167
|
- bundler/lib/bundler/man/bundle-exec.1.ronn
|
166
168
|
- bundler/lib/bundler/man/bundle-gem.1
|
167
169
|
- bundler/lib/bundler/man/bundle-gem.1.ronn
|
170
|
+
- bundler/lib/bundler/man/bundle-help.1
|
171
|
+
- bundler/lib/bundler/man/bundle-help.1.ronn
|
168
172
|
- bundler/lib/bundler/man/bundle-info.1
|
169
173
|
- bundler/lib/bundler/man/bundle-info.1.ronn
|
170
174
|
- bundler/lib/bundler/man/bundle-init.1
|
@@ -193,6 +197,8 @@ files:
|
|
193
197
|
- bundler/lib/bundler/man/bundle-show.1.ronn
|
194
198
|
- bundler/lib/bundler/man/bundle-update.1
|
195
199
|
- bundler/lib/bundler/man/bundle-update.1.ronn
|
200
|
+
- bundler/lib/bundler/man/bundle-version.1
|
201
|
+
- bundler/lib/bundler/man/bundle-version.1.ronn
|
196
202
|
- bundler/lib/bundler/man/bundle-viz.1
|
197
203
|
- bundler/lib/bundler/man/bundle-viz.1.ronn
|
198
204
|
- bundler/lib/bundler/man/bundle.1
|
@@ -217,6 +223,7 @@ files:
|
|
217
223
|
- bundler/lib/bundler/process_lock.rb
|
218
224
|
- bundler/lib/bundler/remote_specification.rb
|
219
225
|
- bundler/lib/bundler/resolver.rb
|
226
|
+
- bundler/lib/bundler/resolver/base.rb
|
220
227
|
- bundler/lib/bundler/resolver/spec_group.rb
|
221
228
|
- bundler/lib/bundler/retry.rb
|
222
229
|
- bundler/lib/bundler/ruby_dsl.rb
|
@@ -824,7 +831,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
824
831
|
- !ruby/object:Gem::Version
|
825
832
|
version: '0'
|
826
833
|
requirements: []
|
827
|
-
rubygems_version: 3.
|
834
|
+
rubygems_version: 3.4.0.dev
|
828
835
|
signing_key:
|
829
836
|
specification_version: 4
|
830
837
|
summary: RubyGems is a package management framework for Ruby.
|