aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike McQuaid2017-09-18 19:28:19 +0100
committerGitHub2017-09-18 19:28:19 +0100
commit81d9f71edbd770b60a57f2c44709fca1e0066ca1 (patch)
treebf3b68f009aa2292f7e5ec238a4c54c1ada10d22
parent6bde1de30953d855481b6c83b6f290c036452025 (diff)
parentf2531d129069a1ffc0d8a273a5aeb8871eb4530c (diff)
downloadbrew-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.rb17
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