aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/dev-cmd/linkage.rb
diff options
context:
space:
mode:
authorXu Cheng2016-06-30 16:55:45 +0800
committerXu Cheng2016-07-03 16:45:29 +0800
commit080ddd8804be14f4b18f9558b58270456ff313c2 (patch)
treef213787040de277ac5ac155e1022b630c1afc98d /Library/Homebrew/dev-cmd/linkage.rb
parentabca5936f2fdd40520519af89c17afba7c873a54 (diff)
downloadbrew-080ddd8804be14f4b18f9558b58270456ff313c2.tar.bz2
linkage: check undeclared dependencies for `--test`
Also allowing access results for LinkageChecker
Diffstat (limited to 'Library/Homebrew/dev-cmd/linkage.rb')
-rw-r--r--Library/Homebrew/dev-cmd/linkage.rb23
1 files changed, 16 insertions, 7 deletions
diff --git a/Library/Homebrew/dev-cmd/linkage.rb b/Library/Homebrew/dev-cmd/linkage.rb
index 49223068f..8c29dbe4e 100644
--- a/Library/Homebrew/dev-cmd/linkage.rb
+++ b/Library/Homebrew/dev-cmd/linkage.rb
@@ -16,27 +16,26 @@ require "formula"
module Homebrew
def linkage
- found_broken_dylibs = false
ARGV.kegs.each do |keg|
ohai "Checking #{keg.name} linkage" if ARGV.kegs.size > 1
result = LinkageChecker.new(keg)
if ARGV.include?("--test")
result.display_test_output
+ if result.broken_dylibs? || result.undeclared_deps?
+ Homebrew.failed = true
+ end
elsif ARGV.include?("--reverse")
result.display_reverse_output
else
result.display_normal_output
end
- found_broken_dylibs = true unless result.broken_dylibs.empty?
- end
- if ARGV.include?("--test") && found_broken_dylibs
- exit 1
end
end
class LinkageChecker
attr_reader :keg
- attr_reader :broken_dylibs
+ attr_reader :brewed_dylibs, :system_dylibs, :broken_dylibs, :variable_dylibs
+ attr_reader :undeclared_deps, :reverse_links
def initialize(keg)
@keg = keg
@@ -44,6 +43,7 @@ module Homebrew
@system_dylibs = Set.new
@broken_dylibs = Set.new
@variable_dylibs = Set.new
+ @undeclared_deps = []
@reverse_links = Hash.new { |h, k| h[k] = Set.new }
check_dylibs
end
@@ -76,7 +76,6 @@ module Homebrew
@undeclared_deps -= [f.name]
rescue FormulaUnavailableError
opoo "Formula unavailable: #{keg.name}"
- @undeclared_deps = []
end
end
@@ -104,6 +103,16 @@ module Homebrew
def display_test_output
display_items "Missing libraries", @broken_dylibs
puts "No broken dylib links" if @broken_dylibs.empty?
+ display_items "Possible undeclared dependencies", @undeclared_deps
+ puts "No undeclared dependencies" if @undeclared_deps.empty?
+ end
+
+ def broken_dylibs?
+ !@broken_dylibs.empty?
+ end
+
+ def undeclared_deps?
+ !@undeclared_deps.empty?
end
private