diff options
| author | David RodrÃguez <deivid.rodriguez@riseup.net> | 2024-06-13 13:21:53 +0200 |
|---|---|---|
| committer | git <svn-admin@ruby-lang.org> | 2024-06-13 14:25:14 +0000 |
| commit | 5c573b7652ec88995ba2a6172a10f6d98e4b2dcd (patch) | |
| tree | fd6ee859a1ea16ddc3f9261ac38375c34cfb5c88 /lib | |
| parent | 8b843b0dc775a2a91d5aa1fbef75dac3a9cd589c (diff) | |
[rubygems/rubygems] Fix default gem priority when sorting specs
https://github.com/rubygems/rubygems/commit/8dbe1dbdc7
Co-authored-by: MSP-Greg <Greg.mpls@gmail.com>
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/rubygems/basic_specification.rb | 7 | ||||
| -rw-r--r-- | lib/rubygems/specification.rb | 2 |
2 files changed, 9 insertions, 0 deletions
diff --git a/lib/rubygems/basic_specification.rb b/lib/rubygems/basic_specification.rb index f25756f92c..0bb139f861 100644 --- a/lib/rubygems/basic_specification.rb +++ b/lib/rubygems/basic_specification.rb @@ -99,6 +99,13 @@ class Gem::BasicSpecification end ## + # Regular gems take precedence over default gems + + def default_gem_priority + default_gem? ? 1 : -1 + end + + ## # Returns full path to the directory where gem's extensions are installed. def extension_dir diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb index da55a2e6d3..99d2a96def 100644 --- a/lib/rubygems/specification.rb +++ b/lib/rubygems/specification.rb @@ -832,6 +832,8 @@ class Gem::Specification < Gem::BasicSpecification next versions if versions.nonzero? platforms = Gem::Platform.sort_priority(b.platform) <=> Gem::Platform.sort_priority(a.platform) next platforms if platforms.nonzero? + default_gem = a.default_gem_priority <=> b.default_gem_priority + next default_gem if default_gem.nonzero? b.base_dir == Gem.path.first ? 1 : -1 end end |
