linkage: check undeclared dependencies for --test
Also allowing access results for LinkageChecker
This commit is contained in:
parent
abca5936f2
commit
080ddd8804
@ -16,27 +16,26 @@ require "formula"
|
|||||||
|
|
||||||
module Homebrew
|
module Homebrew
|
||||||
def linkage
|
def linkage
|
||||||
found_broken_dylibs = false
|
|
||||||
ARGV.kegs.each do |keg|
|
ARGV.kegs.each do |keg|
|
||||||
ohai "Checking #{keg.name} linkage" if ARGV.kegs.size > 1
|
ohai "Checking #{keg.name} linkage" if ARGV.kegs.size > 1
|
||||||
result = LinkageChecker.new(keg)
|
result = LinkageChecker.new(keg)
|
||||||
if ARGV.include?("--test")
|
if ARGV.include?("--test")
|
||||||
result.display_test_output
|
result.display_test_output
|
||||||
|
if result.broken_dylibs? || result.undeclared_deps?
|
||||||
|
Homebrew.failed = true
|
||||||
|
end
|
||||||
elsif ARGV.include?("--reverse")
|
elsif ARGV.include?("--reverse")
|
||||||
result.display_reverse_output
|
result.display_reverse_output
|
||||||
else
|
else
|
||||||
result.display_normal_output
|
result.display_normal_output
|
||||||
end
|
end
|
||||||
found_broken_dylibs = true unless result.broken_dylibs.empty?
|
|
||||||
end
|
|
||||||
if ARGV.include?("--test") && found_broken_dylibs
|
|
||||||
exit 1
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class LinkageChecker
|
class LinkageChecker
|
||||||
attr_reader :keg
|
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)
|
def initialize(keg)
|
||||||
@keg = keg
|
@keg = keg
|
||||||
@ -44,6 +43,7 @@ module Homebrew
|
|||||||
@system_dylibs = Set.new
|
@system_dylibs = Set.new
|
||||||
@broken_dylibs = Set.new
|
@broken_dylibs = Set.new
|
||||||
@variable_dylibs = Set.new
|
@variable_dylibs = Set.new
|
||||||
|
@undeclared_deps = []
|
||||||
@reverse_links = Hash.new { |h, k| h[k] = Set.new }
|
@reverse_links = Hash.new { |h, k| h[k] = Set.new }
|
||||||
check_dylibs
|
check_dylibs
|
||||||
end
|
end
|
||||||
@ -76,7 +76,6 @@ module Homebrew
|
|||||||
@undeclared_deps -= [f.name]
|
@undeclared_deps -= [f.name]
|
||||||
rescue FormulaUnavailableError
|
rescue FormulaUnavailableError
|
||||||
opoo "Formula unavailable: #{keg.name}"
|
opoo "Formula unavailable: #{keg.name}"
|
||||||
@undeclared_deps = []
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -104,6 +103,16 @@ module Homebrew
|
|||||||
def display_test_output
|
def display_test_output
|
||||||
display_items "Missing libraries", @broken_dylibs
|
display_items "Missing libraries", @broken_dylibs
|
||||||
puts "No broken dylib links" if @broken_dylibs.empty?
|
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
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user