From 9167fbf8766e1cc4438ffbb583627505784c60cf Mon Sep 17 00:00:00 2001
From: Xu Cheng <xucheng@me.com>
Date: Sat, 2 Jul 2016 03:42:58 +0800
Subject: [PATCH] linkage: fix edge cases for undeclared_deps

* take requirements into account.
* handle full qualified formula name.
* filter out build time or unused optional deps/requirements.

Closes #424.

Signed-off-by: Xu Cheng <xucheng@me.com>
---
 Library/Homebrew/dev-cmd/linkage.rb | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/Library/Homebrew/dev-cmd/linkage.rb b/Library/Homebrew/dev-cmd/linkage.rb
index 8c29dbe4e7..f6a5b52c49 100644
--- a/Library/Homebrew/dev-cmd/linkage.rb
+++ b/Library/Homebrew/dev-cmd/linkage.rb
@@ -72,7 +72,13 @@ module Homebrew
 
       begin
         f = Formulary.from_rack(keg.rack)
-        @undeclared_deps = @brewed_dylibs.keys - f.deps.map(&:name)
+        f.build = Tab.for_keg(keg)
+        filter_out = proc do |dep|
+          dep.build? || (dep.optional? && !dep.option_names.any? { |n| f.build.with?(n) })
+        end
+        declared_deps = f.deps.reject { |dep| filter_out.call(dep) }.map(&:name) +
+                        f.requirements.reject { |req| filter_out.call(req) }.map(&:default_formula).compact
+        @undeclared_deps = @brewed_dylibs.keys - declared_deps.map { |dep| dep.split("/").last }
         @undeclared_deps -= [f.name]
       rescue FormulaUnavailableError
         opoo "Formula unavailable: #{keg.name}"
-- 
GitLab