diff options
| author | William Woodruff | 2016-11-07 19:37:52 -0500 |
|---|---|---|
| committer | William Woodruff | 2016-11-08 09:45:56 -0500 |
| commit | 79b124b78d04bc57ac5d0df67a0dcca8dbbcb922 (patch) | |
| tree | 6b61ed1cdd018a76b1d91f2bd296d034d922f264 /Library/Homebrew | |
| parent | 89e82226c636027471a10d68c8b42f97a4c2cb8b (diff) | |
| download | brew-79b124b78d04bc57ac5d0df67a0dcca8dbbcb922.tar.bz2 | |
os/mac: Allow MachO.dynamically_linked_libraries to be filtered by dylib type.
This allows us to filter out weak linkages during audits, preventing
a false error from occurring when the dylib cannot be found.
Diffstat (limited to 'Library/Homebrew')
| -rw-r--r-- | Library/Homebrew/os/mac/linkage_checker.rb | 5 | ||||
| -rw-r--r-- | Library/Homebrew/os/mac/mach.rb | 6 |
2 files changed, 8 insertions, 3 deletions
diff --git a/Library/Homebrew/os/mac/linkage_checker.rb b/Library/Homebrew/os/mac/linkage_checker.rb index e014e3816..e72227fc4 100644 --- a/Library/Homebrew/os/mac/linkage_checker.rb +++ b/Library/Homebrew/os/mac/linkage_checker.rb @@ -23,7 +23,10 @@ class LinkageChecker @keg.find do |file| next if file.symlink? || file.directory? next unless file.dylib? || file.mach_o_executable? || file.mach_o_bundle? - file.dynamically_linked_libraries.each do |dylib| + + # weakly loaded dylibs may not actually exist on disk, so skip them + # when checking for broken linkage + file.dynamically_linked_libraries(except: :LC_LOAD_WEAK_DYLIB).each do |dylib| @reverse_links[dylib] << file if dylib.start_with? "@" @variable_dylibs << dylib diff --git a/Library/Homebrew/os/mac/mach.rb b/Library/Homebrew/os/mac/mach.rb index 07598a23d..44c5ee50a 100644 --- a/Library/Homebrew/os/mac/mach.rb +++ b/Library/Homebrew/os/mac/mach.rb @@ -51,8 +51,10 @@ module MachO end end - def dynamically_linked_libraries - macho.linked_dylibs + def dynamically_linked_libraries(except: :none) + lcs = macho.dylib_load_commands.reject { |lc| lc.type == except } + + lcs.map(&:name).map(&:to_s) end def dylib_id |
