linkage: check undeclared dependencies for --test

Also allowing access results for LinkageChecker
This commit is contained in:
Xu Cheng 2016-06-30 16:55:45 +08:00
parent abca5936f2
commit 080ddd8804
No known key found for this signature in database
GPG Key ID: C2A3860FA0B459CE

View File

@ -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