audit generic binary names

Binaries with names like 'run' or 'service' are likely to conflict.
Warn about these and suggest a libexec-style install instead.
This commit is contained in:
Adam Vandenberg 2013-11-10 12:51:24 -08:00
parent e08ec21abe
commit 81bf8a168a
3 changed files with 21 additions and 0 deletions

View File

@ -562,7 +562,9 @@ class FormulaAuditor
audit_check_output(check_jars) audit_check_output(check_jars)
audit_check_output(check_non_libraries) audit_check_output(check_non_libraries)
audit_check_output(check_non_executables(f.bin)) audit_check_output(check_non_executables(f.bin))
audit_check_output(check_generic_executables(f.bin))
audit_check_output(check_non_executables(f.sbin)) audit_check_output(check_non_executables(f.sbin))
audit_check_output(check_generic_executables(f.sbin))
end end
def audit def audit

View File

@ -89,4 +89,21 @@ module FormulaCellarChecks
EOS EOS
] ]
end end
def check_generic_executables bin
return unless bin.directory?
generics = bin.children.select { |g| g.to_s =~ /\/(run|service)$/}
return if generics.empty?
["Generic binaries were installed to \"#{bin}\".",
<<-EOS.undent
Binaries with generic names are likely to conflict with other software,
and suggest that this software should be installed to "libexec" and
then symlinked as needed.
The offending files are:
#{generics * "\n "}
EOS
]
end
end end

View File

@ -499,11 +499,13 @@ class FormulaInstaller
def audit_bin def audit_bin
print_check_output(check_PATH(f.bin)) unless f.keg_only? print_check_output(check_PATH(f.bin)) unless f.keg_only?
print_check_output(check_non_executables(f.bin)) print_check_output(check_non_executables(f.bin))
print_check_output(check_generic_executables(f.bin))
end end
def audit_sbin def audit_sbin
print_check_output(check_PATH(f.sbin)) unless f.keg_only? print_check_output(check_PATH(f.sbin)) unless f.keg_only?
print_check_output(check_non_executables(f.sbin)) print_check_output(check_non_executables(f.sbin))
print_check_output(check_generic_executables(f.sbin))
end end
def audit_lib def audit_lib