[前][次][番号順一覧][スレッド一覧]

ruby-changes:73530

From: David <ko1@a...>
Date: Mon, 12 Sep 2022 22:13:44 +0900 (JST)
Subject: [ruby-changes:73530] 6a21d196ba (master): [rubygems/rubygems] Let specs be sorted just once by the gem version promoter

https://git.ruby-lang.org/ruby.git/commit/?id=6a21d196ba

From 6a21d196ba774f219956ede5d4cf276b1af433c4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@r...>
Date: Wed, 24 Aug 2022 10:05:20 +0200
Subject: [rubygems/rubygems] Let specs be sorted just once by the gem version
 promoter

https://github.com/rubygems/rubygems/commit/3cea25a39d
---
 lib/bundler/gem_version_promoter.rb | 13 ++++++-------
 lib/bundler/index.rb                | 14 +-------------
 lib/bundler/resolver.rb             |  2 +-
 3 files changed, 8 insertions(+), 21 deletions(-)

diff --git a/lib/bundler/gem_version_promoter.rb b/lib/bundler/gem_version_promoter.rb
index 1ae41e2928..ee2c38a6ec 100644
--- a/lib/bundler/gem_version_promoter.rb
+++ b/lib/bundler/gem_version_promoter.rb
@@ -116,15 +116,14 @@ module Bundler https://github.com/ruby/ruby/blob/trunk/lib/bundler/gem_version_promoter.rb#L116
     end
 
     def sort_dep_specs(spec_groups, locked_spec)
-      return spec_groups unless locked_spec
-      @gem_name = locked_spec.name
-      @locked_version = locked_spec.version
+      @locked_version = locked_spec&.version
+      @gem_name = locked_spec&.name
 
       result = spec_groups.sort do |a, b|
         @a_ver = a.version
         @b_ver = b.version
 
-        unless @prerelease_specified[@gem_name]
+        unless @gem_name && @prerelease_specified[@gem_name]
           a_pre = @a_ver.prerelease?
           b_pre = @b_ver.prerelease?
 
@@ -148,7 +147,7 @@ module Bundler https://github.com/ruby/ruby/blob/trunk/lib/bundler/gem_version_promoter.rb#L147
     end
 
     def either_version_older_than_locked
-      @a_ver < @locked_version || @b_ver < @locked_version
+      @locked_version && (@a_ver < @locked_version || @b_ver < @locked_version)
     end
 
     def segments_do_not_match(level)
@@ -157,7 +156,7 @@ module Bundler https://github.com/ruby/ruby/blob/trunk/lib/bundler/gem_version_promoter.rb#L156
     end
 
     def unlocking_gem?
-      unlock_gems.empty? || unlock_gems.include?(@gem_name)
+      unlock_gems.empty? || (@gem_name && unlock_gems.include?(@gem_name))
     end
 
     # Specific version moves can't always reliably be done during sorting
@@ -165,7 +164,7 @@ module Bundler https://github.com/ruby/ruby/blob/trunk/lib/bundler/gem_version_promoter.rb#L164
     def post_sort(result)
       # default :major behavior in Bundler does not do this
       return result if major?
-      if unlocking_gem?
+      if unlocking_gem? || @locked_version.nil?
         result
       else
         move_version_to_end(result, @locked_version)
diff --git a/lib/bundler/index.rb b/lib/bundler/index.rb
index c639936cb0..9c48c9032b 100644
--- a/lib/bundler/index.rb
+++ b/lib/bundler/index.rb
@@ -57,16 +57,12 @@ module Bundler https://github.com/ruby/ruby/blob/trunk/lib/bundler/index.rb#L57
     # Search this index's specs, and any source indexes that this index knows
     # about, returning all of the results.
     def search(query)
-      sort_specs(unsorted_search(query))
-    end
-
-    def unsorted_search(query)
       results = local_search(query)
 
       seen = results.map(&:full_name).uniq unless @sources.empty?
 
       @sources.each do |source|
-        source.unsorted_search(query).each do |spec|
+        source.search(query).each do |spec|
           next if seen.include?(spec.full_name)
 
           seen << spec.full_name
@@ -76,14 +72,6 @@ module Bundler https://github.com/ruby/ruby/blob/trunk/lib/bundler/index.rb#L72
 
       results
     end
-    protected :unsorted_search
-
-    def sort_specs(specs)
-      specs.sort_by do |s|
-        platform_string = s.platform.to_s
-        [s.version, platform_string == RUBY ? NULL : platform_string]
-      end
-    end
 
     def local_search(query)
       case query
diff --git a/lib/bundler/resolver.rb b/lib/bundler/resolver.rb
index fcb3812c5a..86b7177624 100644
--- a/lib/bundler/resolver.rb
+++ b/lib/bundler/resolver.rb
@@ -284,7 +284,7 @@ module Bundler https://github.com/ruby/ruby/blob/trunk/lib/bundler/resolver.rb#L284
     end
 
     def gem_not_found_message(name, requirement, source, extra_message = "")
-      specs = source.specs.search(name)
+      specs = source.specs.search(name).sort_by {|s| [s.version, s.platform.to_s] }
       matching_part = name
       requirement_label = SharedHelpers.pretty_dependency(requirement)
       cache_message = begin
-- 
cgit v1.2.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]