Unverified Commit 16b01d6e authored by Carlo Cabrera's avatar Carlo Cabrera Committed by GitHub
Browse files

Merge pull request #11737 from carlocab/audit-arches

formula_cellar_checks: check keg for mismatched arches
parents 4c3a8c7e d696250d
......@@ -314,6 +314,24 @@ module FormulaCellarChecks
"No `cpuid` instruction detected. #{formula} should not use `ENV.runtime_cpu_detection`."
end
def check_binary_arches(formula)
return unless formula.prefix.directory?
# There is no `binary_executable_or_library_files` method for the generic OS
return if !OS.mac? && !OS.linux?
keg = Keg.new(formula.prefix)
mismatches = keg.binary_executable_or_library_files.reject do |file|
file.arch == Hardware::CPU.arch
end
return if mismatches.empty?
<<~EOS
Binaries built for a non-native architecture were installed into #{formula}'s prefix.
The offending files are:
#{mismatches * "\n "}
EOS
end
def audit_installed
@new_formula ||= false
......@@ -334,6 +352,7 @@ module FormulaCellarChecks
problem_if_output(check_plist(formula.prefix, formula.plist))
problem_if_output(check_python_symlinks(formula.name, formula.keg_only?))
problem_if_output(check_cpuid_instruction(formula))
problem_if_output(check_binary_arches(formula))
end
alias generic_audit_installed audit_installed
......
......@@ -33,7 +33,7 @@ module ELFShim
private_constant :ARCHITECTURE_POWERPC
ARCHITECTURE_ARM = 0x28
private_constant :ARCHITECTURE_ARM
ARCHITECTURE_X86_64 = 0x62
ARCHITECTURE_X86_64 = 0x3E
private_constant :ARCHITECTURE_X86_64
ARCHITECTURE_AARCH64 = 0xB7
private_constant :ARCHITECTURE_AARCH64
......
......@@ -29,7 +29,7 @@ module MachOShim
machos.each do |m|
arch = case m.cputype
when :x86_64, :i386, :ppc64 then m.cputype
when :x86_64, :i386, :ppc64, :arm64, :arm then m.cputype
when :ppc then :ppc7400
else :dunno
end
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment