aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cmd
diff options
context:
space:
mode:
authorMike McQuaid2017-01-17 19:58:30 +0000
committerGitHub2017-01-17 19:58:30 +0000
commit1497dfaced84d92b87dc1b77dd95d9d3a952298c (patch)
tree7d07fdebf41f947c36bf290c3f4bc753c921c186 /Library/Homebrew/cmd
parenta5019d281ef0757adcc0f4157e7f15495da01cdf (diff)
parent36c1c8e9b0e5919a5165ffb5eaeddb54db1238b0 (diff)
downloadbrew-1497dfaced84d92b87dc1b77dd95d9d3a952298c.tar.bz2
Merge pull request #1862 from alyssais/uses_include_optional
uses: fix recursive requirement resolution
Diffstat (limited to 'Library/Homebrew/cmd')
-rw-r--r--Library/Homebrew/cmd/uses.rb22
1 files changed, 18 insertions, 4 deletions
diff --git a/Library/Homebrew/cmd/uses.rb b/Library/Homebrew/cmd/uses.rb
index fb11a31a7..e5e140d36 100644
--- a/Library/Homebrew/cmd/uses.rb
+++ b/Library/Homebrew/cmd/uses.rb
@@ -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) }