Add --reverse to brew linkage
For each dylib the keg references, print the dylib followed by the binaries which link to it. Closes #431.
This commit is contained in:
parent
fbac41d95b
commit
abca5936f2
@ -22,6 +22,8 @@ module Homebrew
|
|||||||
result = LinkageChecker.new(keg)
|
result = LinkageChecker.new(keg)
|
||||||
if ARGV.include?("--test")
|
if ARGV.include?("--test")
|
||||||
result.display_test_output
|
result.display_test_output
|
||||||
|
elsif ARGV.include?("--reverse")
|
||||||
|
result.display_reverse_output
|
||||||
else
|
else
|
||||||
result.display_normal_output
|
result.display_normal_output
|
||||||
end
|
end
|
||||||
@ -42,6 +44,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
|
||||||
|
@reverse_links = Hash.new { |h, k| h[k] = Set.new }
|
||||||
check_dylibs
|
check_dylibs
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -50,6 +53,7 @@ module Homebrew
|
|||||||
next if file.symlink? || file.directory?
|
next if file.symlink? || file.directory?
|
||||||
next unless file.dylib? || file.mach_o_executable? || file.mach_o_bundle?
|
next unless file.dylib? || file.mach_o_executable? || file.mach_o_bundle?
|
||||||
file.dynamically_linked_libraries.each do |dylib|
|
file.dynamically_linked_libraries.each do |dylib|
|
||||||
|
@reverse_links[dylib] << file
|
||||||
if dylib.start_with? "@"
|
if dylib.start_with? "@"
|
||||||
@variable_dylibs << dylib
|
@variable_dylibs << dylib
|
||||||
else
|
else
|
||||||
@ -84,6 +88,19 @@ module Homebrew
|
|||||||
display_items "Possible undeclared dependencies", @undeclared_deps
|
display_items "Possible undeclared dependencies", @undeclared_deps
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def display_reverse_output
|
||||||
|
return if @reverse_links.empty?
|
||||||
|
sorted = @reverse_links.sort
|
||||||
|
sorted.each do |dylib, files|
|
||||||
|
puts dylib
|
||||||
|
files.each do |f|
|
||||||
|
unprefixed = f.to_s.strip_prefix "#{@keg.to_s}/"
|
||||||
|
puts " #{unprefixed}"
|
||||||
|
end
|
||||||
|
puts unless dylib == sorted.last[0]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
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?
|
||||||
|
Loading…
x
Reference in New Issue
Block a user