diff options
| author | Mike McQuaid | 2017-09-18 19:28:19 +0100 |
|---|---|---|
| committer | GitHub | 2017-09-18 19:28:19 +0100 |
| commit | 81d9f71edbd770b60a57f2c44709fca1e0066ca1 (patch) | |
| tree | bf3b68f009aa2292f7e5ec238a4c54c1ada10d22 | |
| parent | 6bde1de30953d855481b6c83b6f290c036452025 (diff) | |
| parent | f2531d129069a1ffc0d8a273a5aeb8871eb4530c (diff) | |
| download | brew-81d9f71edbd770b60a57f2c44709fca1e0066ca1.tar.bz2 | |
Merge pull request #3103 from maxim-belkin/extraneous_deps
linkage_checker: add a check for extraneous dependencies
| -rw-r--r-- | Library/Homebrew/os/mac/linkage_checker.rb | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/Library/Homebrew/os/mac/linkage_checker.rb b/Library/Homebrew/os/mac/linkage_checker.rb index 786827852..2e8256ce4 100644 --- a/Library/Homebrew/os/mac/linkage_checker.rb +++ b/Library/Homebrew/os/mac/linkage_checker.rb @@ -5,7 +5,7 @@ require "formula" class LinkageChecker attr_reader :keg, :formula attr_reader :brewed_dylibs, :system_dylibs, :broken_dylibs, :variable_dylibs - attr_reader :undeclared_deps, :reverse_links + attr_reader :undeclared_deps, :unnecessary_deps, :reverse_links def initialize(keg, formula = nil) @keg = keg @@ -16,6 +16,7 @@ class LinkageChecker @variable_dylibs = Set.new @undeclared_deps = [] @reverse_links = Hash.new { |h, k| h[k] = Set.new } + @unnecessary_deps = [] check_dylibs end @@ -51,7 +52,7 @@ class LinkageChecker end end - @undeclared_deps = check_undeclared_deps if formula + @undeclared_deps, @unnecessary_deps = check_undeclared_deps if formula end def check_undeclared_deps @@ -77,6 +78,12 @@ class LinkageChecker a <=> b end end + unnecessary_deps = declared_dep_names.reject do |full_name| + name = full_name.split("/").last + next true if Formula[name].bin.directory? + @brewed_dylibs.keys.map { |x| x.split("/").last }.include?(name) + end + [undeclared_deps, unnecessary_deps] end def display_normal_output @@ -85,6 +92,7 @@ class LinkageChecker display_items "Variable-referenced libraries", @variable_dylibs display_items "Missing libraries", @broken_dylibs display_items "Possible undeclared dependencies", @undeclared_deps + display_items "Possible unnecessary dependencies", @unnecessary_deps end def display_reverse_output @@ -102,6 +110,7 @@ class LinkageChecker def display_test_output display_items "Missing libraries", @broken_dylibs + display_items "Possible unnecessary dependencies", @unnecessary_deps puts "No broken dylib links" if @broken_dylibs.empty? end @@ -113,6 +122,10 @@ class LinkageChecker !@undeclared_deps.empty? end + def unnecessary_deps? + !@unnecessary_deps.empty? + end + private # Whether or not dylib is a harmless broken link, meaning that it's |
