Merge pull request #11737 from carlocab/audit-arches
formula_cellar_checks: check keg for mismatched arches
This commit is contained in:
commit
16b01d6e01
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user