diff options
| author | David RodrÃguez <deivid.rodriguez@riseup.net> | 2022-09-28 12:12:13 +0200 |
|---|---|---|
| committer | git <svn-admin@ruby-lang.org> | 2022-10-01 05:46:40 +0900 |
| commit | 8252ea214061e1e8601ecfe178d010ed92ee8600 (patch) | |
| tree | 9511e8be9e600e3664b3eb8e76c3ad067ec02887 | |
| parent | 4d58ee3de0ecf8a3b3201359f3c593142cf92d7b (diff) | |
[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>
| -rw-r--r-- | lib/bundler/rubygems_ext.rb | 8 | ||||
| -rw-r--r-- | lib/rubygems/platform.rb | 8 | ||||
| -rw-r--r-- | test/rubygems/test_gem_platform.rb | 20 |
3 files changed, 28 insertions, 8 deletions
diff --git a/lib/bundler/rubygems_ext.rb b/lib/bundler/rubygems_ext.rb index 201d2fef17..1747b7cf22 100644 --- a/lib/bundler/rubygems_ext.rb +++ b/lib/bundler/rubygems_ext.rb @@ -261,7 +261,7 @@ module Gem # version ( (@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 ) end @@ -271,10 +271,10 @@ module Gem def normalized_linux_version_ext return nil unless @version - without_gnu = @version.sub(/\Agnu/, "") - return nil if without_gnu.empty? + without_gnu_nor_abi_modifiers = @version.sub(/\Agnu/, "").sub(/eabi\Z/, "") + return nil if without_gnu_nor_abi_modifiers.empty? - without_gnu + without_gnu_nor_abi_modifiers end end end diff --git a/lib/rubygems/platform.rb b/lib/rubygems/platform.rb index 1144879f9c..0935fd8971 100644 --- a/lib/rubygems/platform.rb +++ b/lib/rubygems/platform.rb @@ -181,7 +181,7 @@ class Gem::Platform # version ( (@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 ) end @@ -189,10 +189,10 @@ class Gem::Platform def normalized_linux_version return nil unless @version - without_gnu = @version.sub(/\Agnu/, "") - return nil if without_gnu.empty? + without_gnu_nor_abi_modifiers = @version.sub(/\Agnu/, "").sub(/eabi\Z/, "") + return nil if without_gnu_nor_abi_modifiers.empty? - without_gnu + without_gnu_nor_abi_modifiers end ## diff --git a/test/rubygems/test_gem_platform.rb b/test/rubygems/test_gem_platform.rb index 3bd4a862c5..03417d755a 100644 --- a/test/rubygems/test_gem_platform.rb +++ b/test/rubygems/test_gem_platform.rb @@ -333,6 +333,26 @@ class TestGemPlatform < Gem::TestCase refute(arm_linux_uclibceabi === arm_linux_eabi, "linux-uclibceabi =~ linux-eabi") 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 arm = Gem::Platform.new "arm-linux" armv5 = Gem::Platform.new "armv5-linux" |
