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_non_libraries)
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_generic_executables(f.sbin))
end
def audit

View File

@ -89,4 +89,21 @@ module FormulaCellarChecks
EOS
]
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

View File

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