зеркало из https://github.com/github/ruby.git
[rubygems/rubygems] Refactor platform matching on Linux
I think this highlights better how musl is special. https://github.com/rubygems/rubygems/commit/4075771697
This commit is contained in:
Родитель
850cfb021e
Коммит
4d58ee3de0
|
@ -261,10 +261,21 @@ module Gem
|
|||
# version
|
||||
(
|
||||
(@os != "linux" && (@version.nil? || other.version.nil?)) ||
|
||||
(@os == "linux" && (other.version == "gnu#{@version}" || other.version == "musl#{@version}" || @version == "gnu#{other.version}")) ||
|
||||
(@os == "linux" && (normalized_linux_version_ext == other.normalized_linux_version_ext || other.version == "musl#{@version}")) ||
|
||||
@version == other.version
|
||||
)
|
||||
end
|
||||
|
||||
# This is a copy of RubyGems 3.3.23 or higher `normalized_linux_method`.
|
||||
# Once only 3.3.23 is supported, we can use the method in RubyGems.
|
||||
def normalized_linux_version_ext
|
||||
return nil unless @version
|
||||
|
||||
without_gnu = @version.sub(/\Agnu/, "")
|
||||
return nil if without_gnu.empty?
|
||||
|
||||
without_gnu
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -181,11 +181,20 @@ class Gem::Platform
|
|||
# version
|
||||
(
|
||||
(@os != "linux" && (@version.nil? || other.version.nil?)) ||
|
||||
(@os == "linux" && (other.version == "gnu#{@version}" || other.version == "musl#{@version}" || @version == "gnu#{other.version}")) ||
|
||||
(@os == "linux" && (normalized_linux_version == other.normalized_linux_version || other.version == "musl#{@version}")) ||
|
||||
@version == other.version
|
||||
)
|
||||
end
|
||||
|
||||
def normalized_linux_version
|
||||
return nil unless @version
|
||||
|
||||
without_gnu = @version.sub(/\Agnu/, "")
|
||||
return nil if without_gnu.empty?
|
||||
|
||||
without_gnu
|
||||
end
|
||||
|
||||
##
|
||||
# Does +other+ match this platform? If +other+ is a String it will be
|
||||
# converted to a Gem::Platform first. See #=== for matching rules.
|
||||
|
|
Загрузка…
Ссылка в новой задаче