Skip to content
Snippets Groups Projects
Commit 36c1c8e9 authored by Alyssa Ross's avatar Alyssa Ross
Browse files

uses: fix recursive requirement resolution

Fixes #1848 by sharing recursive dependency resolution between
dependencies and requirements.

Coincidentally, this also fixes the errors introduced by #1784 that
necessitated it being reverted in #1797.
parent 9dca10f9
No related branches found
No related tags found
No related merge requests found
......@@ -58,15 +58,29 @@ module Homebrew
Dependency.prune unless includes.include?("build?")
end
end
reqs = f.recursive_requirements do |dependent, req|
dep_formulae = deps.map do |dep|
begin
dep.to_formula
rescue
end
end.compact
reqs_by_formula = ([f] + dep_formulae).flat_map do |formula|
formula.requirements.map { |req| [formula, req] }
end
reqs_by_formula.reject! do |dependent, req|
if req.recommended?
Requirement.prune if ignores.include?("recommended?") || dependent.build.without?(req)
ignores.include?("recommended?") || dependent.build.without?(req)
elsif req.optional?
Requirement.prune if !includes.include?("optional?") && !dependent.build.with?(req)
!includes.include?("optional?") && !dependent.build.with?(req)
elsif req.build?
Requirement.prune unless includes.include?("build?")
!includes.include?("build?")
end
end
reqs = reqs_by_formula.map(&:last)
else
deps = f.deps.reject do |dep|
ignores.any? { |ignore| dep.send(ignore) } && !includes.any? { |include| dep.send(include) }
......
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