Skip to content
Snippets Groups Projects
Commit 83cdc64b authored by Jack Nagel's avatar Jack Nagel
Browse files

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: default avatarJack Nagel <jacknagel@gmail.com>
parent 140dc4c4
No related branches found
No related tags found
No related merge requests found
......@@ -67,14 +67,20 @@ class FormulaInstaller
end
unless ignore_deps
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)
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? }
end
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
needed_deps = f.recursive_deps.reject{ |d| d.installed? }
unless needed_deps.empty?
needed_deps.each do |dep|
if dep.explicitly_requested?
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment