diff options
| author | Xu Cheng | 2016-07-02 03:42:58 +0800 | 
|---|---|---|
| committer | Xu Cheng | 2016-07-03 16:45:30 +0800 | 
| commit | 9167fbf8766e1cc4438ffbb583627505784c60cf (patch) | |
| tree | a5bd149838e5f02884e77bfee228302686d4c1ef /Library/Homebrew/dev-cmd/linkage.rb | |
| parent | 080ddd8804be14f4b18f9558b58270456ff313c2 (diff) | |
| download | brew-9167fbf8766e1cc4438ffbb583627505784c60cf.tar.bz2 | |
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>
Diffstat (limited to 'Library/Homebrew/dev-cmd/linkage.rb')
| -rw-r--r-- | Library/Homebrew/dev-cmd/linkage.rb | 8 | 
1 files changed, 7 insertions, 1 deletions
diff --git a/Library/Homebrew/dev-cmd/linkage.rb b/Library/Homebrew/dev-cmd/linkage.rb index 8c29dbe4e..f6a5b52c4 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}"  | 
