install: suppress redundunt warnings with depends_on requirement

When a formula depends on any requirements, they evaluated at most three times:
before locking, before installing dependent, before building formula.
When a non-fatal requirement is specified and thus evaluated three times,
mostly the same warning message is also emitted three times.

This change restricts printing the warning messages only when a bottle is
successfully installed or before building.
Since this timing is after the final dependency computation for each cases,
the warnings will be most useful to check what is not yet satisfied.
This commit is contained in:
Kaito Udagawa 2016-11-19 02:03:30 +09:00
parent e9815bf2bd
commit 61c8fff0ee

View File

@ -251,6 +251,7 @@ class FormulaInstaller
opoo "Bottle installation failed: building from source." opoo "Bottle installation failed: building from source."
raise BuildToolsError, [formula] unless DevelopmentTools.installed? raise BuildToolsError, [formula] unless DevelopmentTools.installed?
else else
puts @requirement_messages
@poured_bottle = true @poured_bottle = true
end end
end end
@ -260,6 +261,7 @@ class FormulaInstaller
unless @poured_bottle unless @poured_bottle
not_pouring = !pour_bottle || @pour_failed not_pouring = !pour_bottle || @pour_failed
compute_and_install_dependencies if not_pouring && !ignore_deps? compute_and_install_dependencies if not_pouring && !ignore_deps?
puts @requirement_messages
build build
clean clean
@ -334,17 +336,21 @@ class FormulaInstaller
end end
def check_requirements(req_map) def check_requirements(req_map)
@requirement_messages = []
fatals = [] fatals = []
req_map.each_pair do |dependent, reqs| req_map.each_pair do |dependent, reqs|
next if dependent.installed? next if dependent.installed?
reqs.each do |req| reqs.each do |req|
puts "#{dependent}: #{req.message}" @requirement_messages << "#{dependent}: #{req.message}"
fatals << req if req.fatal? fatals << req if req.fatal?
end end
end end
raise UnsatisfiedRequirements, fatals unless fatals.empty? return if fatals.empty?
puts @requirement_messages
raise UnsatisfiedRequirements, fatals
end end
def install_requirement_default_formula?(req, dependent, build) def install_requirement_default_formula?(req, dependent, build)