зеркало из https://github.com/github/ruby.git
[rubygems/rubygems] Fix matching of linux platforms with eabi modifiers
https://github.com/rubygems/rubygems/commit/89362c18ef Co-authored-by: Mike Dalessio <mike.dalessio@gmail.com>
This commit is contained in:
Родитель
4d58ee3de0
Коммит
8252ea2140
|
@ -261,7 +261,7 @@ module Gem
|
||||||
# version
|
# version
|
||||||
(
|
(
|
||||||
(@os != "linux" && (@version.nil? || other.version.nil?)) ||
|
(@os != "linux" && (@version.nil? || other.version.nil?)) ||
|
||||||
(@os == "linux" && (normalized_linux_version_ext == other.normalized_linux_version_ext || other.version == "musl#{@version}")) ||
|
(@os == "linux" && (normalized_linux_version_ext == other.normalized_linux_version_ext || other.version == "musl#{@version}" || other.version == "musleabi#{@version}")) ||
|
||||||
@version == other.version
|
@version == other.version
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
@ -271,10 +271,10 @@ module Gem
|
||||||
def normalized_linux_version_ext
|
def normalized_linux_version_ext
|
||||||
return nil unless @version
|
return nil unless @version
|
||||||
|
|
||||||
without_gnu = @version.sub(/\Agnu/, "")
|
without_gnu_nor_abi_modifiers = @version.sub(/\Agnu/, "").sub(/eabi\Z/, "")
|
||||||
return nil if without_gnu.empty?
|
return nil if without_gnu_nor_abi_modifiers.empty?
|
||||||
|
|
||||||
without_gnu
|
without_gnu_nor_abi_modifiers
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -181,7 +181,7 @@ class Gem::Platform
|
||||||
# version
|
# version
|
||||||
(
|
(
|
||||||
(@os != "linux" && (@version.nil? || other.version.nil?)) ||
|
(@os != "linux" && (@version.nil? || other.version.nil?)) ||
|
||||||
(@os == "linux" && (normalized_linux_version == other.normalized_linux_version || other.version == "musl#{@version}")) ||
|
(@os == "linux" && (normalized_linux_version == other.normalized_linux_version || other.version == "musl#{@version}" || other.version == "musleabi#{@version}")) ||
|
||||||
@version == other.version
|
@version == other.version
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
@ -189,10 +189,10 @@ class Gem::Platform
|
||||||
def normalized_linux_version
|
def normalized_linux_version
|
||||||
return nil unless @version
|
return nil unless @version
|
||||||
|
|
||||||
without_gnu = @version.sub(/\Agnu/, "")
|
without_gnu_nor_abi_modifiers = @version.sub(/\Agnu/, "").sub(/eabi\Z/, "")
|
||||||
return nil if without_gnu.empty?
|
return nil if without_gnu_nor_abi_modifiers.empty?
|
||||||
|
|
||||||
without_gnu
|
without_gnu_nor_abi_modifiers
|
||||||
end
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
|
|
|
@ -333,6 +333,26 @@ class TestGemPlatform < Gem::TestCase
|
||||||
refute(arm_linux_uclibceabi === arm_linux_eabi, "linux-uclibceabi =~ linux-eabi")
|
refute(arm_linux_uclibceabi === arm_linux_eabi, "linux-uclibceabi =~ linux-eabi")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_eabi_and_nil_version_combination_strictness
|
||||||
|
arm_linux = Gem::Platform.new "arm-linux"
|
||||||
|
arm_linux_eabi = Gem::Platform.new "arm-linux-eabi"
|
||||||
|
arm_linux_gnueabi = Gem::Platform.new "arm-linux-gnueabi"
|
||||||
|
arm_linux_musleabi = Gem::Platform.new "arm-linux-musleabi"
|
||||||
|
arm_linux_uclibceabi = Gem::Platform.new "arm-linux-uclibceabi"
|
||||||
|
|
||||||
|
# generic arm host runtime with eabi modifier accepts generic arm gems
|
||||||
|
assert(arm_linux === arm_linux_eabi, "arm-linux =~ arm-linux-eabi")
|
||||||
|
|
||||||
|
# explicit gnu arm host runtime with eabi modifier accepts generic arm gems
|
||||||
|
assert(arm_linux === arm_linux_gnueabi, "arm-linux =~ arm-linux-gnueabi")
|
||||||
|
|
||||||
|
# musl arm host runtime accepts libc-generic or statically linked gems...
|
||||||
|
assert(arm_linux === arm_linux_musleabi, "arm-linux =~ arm-linux-musleabi")
|
||||||
|
|
||||||
|
# other libc arm hosts are not glibc compatible
|
||||||
|
refute(arm_linux === arm_linux_uclibceabi, "arm-linux =~ arm-linux-uclibceabi")
|
||||||
|
end
|
||||||
|
|
||||||
def test_equals3_cpu_arm
|
def test_equals3_cpu_arm
|
||||||
arm = Gem::Platform.new "arm-linux"
|
arm = Gem::Platform.new "arm-linux"
|
||||||
armv5 = Gem::Platform.new "armv5-linux"
|
armv5 = Gem::Platform.new "armv5-linux"
|
||||||
|
|
Загрузка…
Ссылка в новой задаче