add Keg#empty_installation?

Avoid using `FormulaAuditor` in `FormulaInstaller`.

Closes Homebrew/homebrew#47887.

Signed-off-by: Xu Cheng <xucheng@me.com>
This commit is contained in:
Xu Cheng 2016-01-09 18:59:34 +08:00
parent f0b22c4ce3
commit 885022a5e3
3 changed files with 19 additions and 16 deletions

View File

@ -883,20 +883,14 @@ class FormulaAuditor
def audit_prefix_has_contents
return unless formula.prefix.directory?
Pathname.glob("#{formula.prefix}/**/*") do |file|
next if file.directory?
basename = file.basename.to_s
next if Metafiles.copy?(basename)
next if %w[.DS_Store INSTALL_RECEIPT.json].include?(basename)
return
end
if Keg.new(formula.prefix).empty_installation?
problem <<-EOS.undent
The installation seems to be empty. Please ensure the prefix
is set correctly and expected files are installed.
The prefix configure/make argument may be case-sensitive.
EOS
end
end
def audit_conditional_dep(dep, condition, line)
quoted_dep = quote_dep(dep)

View File

@ -8,7 +8,6 @@ require "caveats"
require "cleaner"
require "formula_cellar_checks"
require "install_renamed"
require "cmd/audit"
require "cmd/postinstall"
require "hooks/bottles"
require "debrew"
@ -573,9 +572,7 @@ class FormulaInstaller
end
end
auditor = FormulaAuditor.new(formula)
auditor.audit_prefix_has_contents
unless formula.prefix.exist? && auditor.problems.empty?
if !formula.prefix.directory? || Keg.new(formula.prefix).empty_installation?
raise "Empty installation"
end

View File

@ -150,6 +150,18 @@ class Keg
path.exist?
end
def empty_installation?
Pathname.glob("#{path}/**/*") do |file|
next if file.directory?
basename = file.basename.to_s
next if Metafiles.copy?(basename)
next if %w[.DS_Store INSTALL_RECEIPT.json].include?(basename)
return false
end
true
end
def /(other)
path / other
end