FormulaInstaller: filter ARGV when testing for installed deps
In FormulaInstaller#install, needed_deps is created without first filtering ARGV for flags like --HEAD. In practice, this means that sometimes needed_deps will contain dependencies that are actually already installed; --HEAD causes Formula#installed_prefix to differ and thus checking Formula#installed? will result in false negatives. This can trigger weird bugs; for example, Homebrew/homebrew#10380, where the "Installing foo" header is displayed even though no dependencies were previously installed. Fix this by filtering ARGV before testing for installed dependencies, and do the same for requirements to maintain symmetry, and because some requiremnts check Formula#installed? as well. Fixes Homebrew/homebrew#10380. Signed-off-by: Jack Nagel <jacknagel@gmail.com>
This commit is contained in:
parent
140dc4c419
commit
83cdc64b40
@ -67,14 +67,20 @@ class FormulaInstaller
|
|||||||
end
|
end
|
||||||
|
|
||||||
unless ignore_deps
|
unless ignore_deps
|
||||||
|
needed_deps = []
|
||||||
|
needed_reqs = []
|
||||||
|
|
||||||
|
ARGV.filter_for_dependencies do
|
||||||
|
needed_deps = f.recursive_deps.reject{ |d| d.installed? }
|
||||||
needed_reqs = f.recursive_requirements.reject { |r| r.satisfied? }
|
needed_reqs = f.recursive_requirements.reject { |r| r.satisfied? }
|
||||||
puts needed_reqs.map { |r| r.message } * "\n" unless needed_reqs.empty?
|
|
||||||
unsatisfied_fatals = needed_reqs.select { |r| r.fatal? }
|
|
||||||
unless unsatisfied_fatals.empty?
|
|
||||||
raise UnsatisfiedRequirements.new(f, unsatisfied_fatals)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
needed_deps = f.recursive_deps.reject{ |d| d.installed? }
|
unless needed_reqs.empty?
|
||||||
|
puts needed_reqs.map { |r| r.message } * "\n"
|
||||||
|
fatals = needed_reqs.select { |r| r.fatal? }
|
||||||
|
raise UnsatisfiedRequirements.new(f, fatals) unless fatals.empty?
|
||||||
|
end
|
||||||
|
|
||||||
unless needed_deps.empty?
|
unless needed_deps.empty?
|
||||||
needed_deps.each do |dep|
|
needed_deps.each do |dep|
|
||||||
if dep.explicitly_requested?
|
if dep.explicitly_requested?
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user