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`."
|
"No `cpuid` instruction detected. #{formula} should not use `ENV.runtime_cpu_detection`."
|
||||||
end
|
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
|
def audit_installed
|
||||||
@new_formula ||= false
|
@new_formula ||= false
|
||||||
|
|
||||||
@ -334,6 +352,7 @@ module FormulaCellarChecks
|
|||||||
problem_if_output(check_plist(formula.prefix, formula.plist))
|
problem_if_output(check_plist(formula.prefix, formula.plist))
|
||||||
problem_if_output(check_python_symlinks(formula.name, formula.keg_only?))
|
problem_if_output(check_python_symlinks(formula.name, formula.keg_only?))
|
||||||
problem_if_output(check_cpuid_instruction(formula))
|
problem_if_output(check_cpuid_instruction(formula))
|
||||||
|
problem_if_output(check_binary_arches(formula))
|
||||||
end
|
end
|
||||||
alias generic_audit_installed audit_installed
|
alias generic_audit_installed audit_installed
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ module ELFShim
|
|||||||
private_constant :ARCHITECTURE_POWERPC
|
private_constant :ARCHITECTURE_POWERPC
|
||||||
ARCHITECTURE_ARM = 0x28
|
ARCHITECTURE_ARM = 0x28
|
||||||
private_constant :ARCHITECTURE_ARM
|
private_constant :ARCHITECTURE_ARM
|
||||||
ARCHITECTURE_X86_64 = 0x62
|
ARCHITECTURE_X86_64 = 0x3E
|
||||||
private_constant :ARCHITECTURE_X86_64
|
private_constant :ARCHITECTURE_X86_64
|
||||||
ARCHITECTURE_AARCH64 = 0xB7
|
ARCHITECTURE_AARCH64 = 0xB7
|
||||||
private_constant :ARCHITECTURE_AARCH64
|
private_constant :ARCHITECTURE_AARCH64
|
||||||
|
@ -29,7 +29,7 @@ module MachOShim
|
|||||||
|
|
||||||
machos.each do |m|
|
machos.each do |m|
|
||||||
arch = case m.cputype
|
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
|
when :ppc then :ppc7400
|
||||||
else :dunno
|
else :dunno
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user