diff --git a/Library/Homebrew/extend/pathname.rb b/Library/Homebrew/extend/pathname.rb index 0df8d17dd4..49f5d0111d 100644 --- a/Library/Homebrew/extend/pathname.rb +++ b/Library/Homebrew/extend/pathname.rb @@ -469,6 +469,11 @@ class Pathname false end + sig { params(_wanted_arch: Symbol).returns(T::Boolean) } + def arch_compatible?(_wanted_arch) + true + end + sig { returns(T::Array[String]) } def rpaths [] diff --git a/Library/Homebrew/linkage_checker.rb b/Library/Homebrew/linkage_checker.rb index 1f3bb08cc3..7d98610424 100644 --- a/Library/Homebrew/linkage_checker.rb +++ b/Library/Homebrew/linkage_checker.rb @@ -115,6 +115,7 @@ class LinkageChecker @keg.find do |file| next if file.symlink? || file.directory? next if !file.dylib? && !file.binary_executable? && !file.mach_o_bundle? + next unless file.arch_compatible?(Hardware::CPU.arch) # weakly loaded dylibs may not actually exist on disk, so skip them # when checking for broken linkage diff --git a/Library/Homebrew/os/linux/elf.rb b/Library/Homebrew/os/linux/elf.rb index 91c4407670..116c9ea23f 100644 --- a/Library/Homebrew/os/linux/elf.rb +++ b/Library/Homebrew/os/linux/elf.rb @@ -68,6 +68,12 @@ module ELFShim end end + def arch_compatible?(wanted_arch) + return true unless elf? + + wanted_arch == arch + end + def elf_type return :dunno unless elf?