Skip to content

Commit

Permalink
Fix matching of eabihf platforms
Browse files Browse the repository at this point in the history
  • Loading branch information
deivid-rodriguez committed Sep 29, 2022
1 parent 89362c1 commit a03d30c
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 4 deletions.
4 changes: 2 additions & 2 deletions bundler/lib/bundler/rubygems_ext.rb
Expand Up @@ -261,7 +261,7 @@ def ===(other)
# version
(
(@os != "linux" && (@version.nil? || other.version.nil?)) ||
(@os == "linux" && (normalized_linux_version_ext == other.normalized_linux_version_ext || other.version == "musl#{@version}" || other.version == "musleabi#{@version}")) ||
(@os == "linux" && (normalized_linux_version_ext == other.normalized_linux_version_ext || ["musl#{@version}", "musleabi#{@version}", "musleabihf#{@version}"].include?(other.version))) ||
@version == other.version
)
end
Expand All @@ -271,7 +271,7 @@ def ===(other)
def normalized_linux_version_ext
return nil unless @version

without_gnu_nor_abi_modifiers = @version.sub(/\Agnu/, "").sub(/eabi\Z/, "")
without_gnu_nor_abi_modifiers = @version.sub(/\Agnu/, "").sub(/eabi(hf)?\Z/, "")
return nil if without_gnu_nor_abi_modifiers.empty?

without_gnu_nor_abi_modifiers
Expand Down
4 changes: 2 additions & 2 deletions lib/rubygems/platform.rb
Expand Up @@ -181,15 +181,15 @@ def ===(other)
# version
(
(@os != "linux" && (@version.nil? || other.version.nil?)) ||
(@os == "linux" && (normalized_linux_version == other.normalized_linux_version || other.version == "musl#{@version}" || other.version == "musleabi#{@version}")) ||
(@os == "linux" && (normalized_linux_version == other.normalized_linux_version || ["musl#{@version}", "musleabi#{@version}", "musleabihf#{@version}"].include?(other.version))) ||
@version == other.version
)
end

def normalized_linux_version
return nil unless @version

without_gnu_nor_abi_modifiers = @version.sub(/\Agnu/, "").sub(/eabi\Z/, "")
without_gnu_nor_abi_modifiers = @version.sub(/\Agnu/, "").sub(/eabi(hf)?\Z/, "")
return nil if without_gnu_nor_abi_modifiers.empty?

without_gnu_nor_abi_modifiers
Expand Down
8 changes: 8 additions & 0 deletions test/rubygems/test_gem_platform.rb
Expand Up @@ -336,21 +336,29 @@ def test_eabi_version_is_stricter_for_linux_os
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_eabihf = Gem::Platform.new "arm-linux-eabihf"
arm_linux_gnueabi = Gem::Platform.new "arm-linux-gnueabi"
arm_linux_gnueabihf = Gem::Platform.new "arm-linux-gnueabihf"
arm_linux_musleabi = Gem::Platform.new "arm-linux-musleabi"
arm_linux_musleabihf = Gem::Platform.new "arm-linux-musleabihf"
arm_linux_uclibceabi = Gem::Platform.new "arm-linux-uclibceabi"
arm_linux_uclibceabihf = Gem::Platform.new "arm-linux-uclibceabihf"

# generic arm host runtime with eabi modifier accepts generic arm gems
assert(arm_linux === arm_linux_eabi, "arm-linux =~ arm-linux-eabi")
assert(arm_linux === arm_linux_eabihf, "arm-linux =~ arm-linux-eabihf")

# explicit gnu arm host runtime with eabi modifier accepts generic arm gems
assert(arm_linux === arm_linux_gnueabi, "arm-linux =~ arm-linux-gnueabi")
assert(arm_linux === arm_linux_gnueabihf, "arm-linux =~ arm-linux-gnueabihf")

# musl arm host runtime accepts libc-generic or statically linked gems...
assert(arm_linux === arm_linux_musleabi, "arm-linux =~ arm-linux-musleabi")
assert(arm_linux === arm_linux_musleabihf, "arm-linux =~ arm-linux-musleabihf")

# other libc arm hosts are not glibc compatible
refute(arm_linux === arm_linux_uclibceabi, "arm-linux =~ arm-linux-uclibceabi")
refute(arm_linux === arm_linux_uclibceabihf, "arm-linux =~ arm-linux-uclibceabihf")
end

def test_equals3_cpu_arm
Expand Down

0 comments on commit a03d30c

Please sign in to comment.