diff options
| author | Mike McQuaid | 2015-02-20 14:29:43 +0000 |
|---|---|---|
| committer | Mike McQuaid | 2015-02-20 15:39:34 +0000 |
| commit | f60396f64af911f24125edc1eb168d54e5ed51fe (patch) | |
| tree | ca2f508bbe94cb9682a833a52a6bef7853736d37 /Library | |
| parent | 15bebd6e7e8710c9475f76702c4c321c6c6626a8 (diff) | |
| download | brew-f60396f64af911f24125edc1eb168d54e5ed51fe.tar.bz2 | |
bottle: ignore go libexec path for stuff using go.
These paths cannot be removed and are just used for debug stacktraces so seem
to not be harmful for us to selectively ignore.
Closes Homebrew/homebrew#36894.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/cmd/bottle.rb | 48 |
1 files changed, 31 insertions, 17 deletions
diff --git a/Library/Homebrew/cmd/bottle.rb b/Library/Homebrew/cmd/bottle.rb index 7b5df314e..1836e5d96 100644 --- a/Library/Homebrew/cmd/bottle.rb +++ b/Library/Homebrew/cmd/bottle.rb @@ -33,30 +33,37 @@ BOTTLE_ERB = <<-EOS EOS module Homebrew - def keg_contains string, keg - if not ARGV.homebrew_developer? - return quiet_system 'fgrep', '--recursive', '--quiet', '--max-count=1', string, keg.to_s + def print_filename string, filename + unless @put_string_exists_header + opoo "String '#{string}' still exists in these files:" + @put_string_exists_header = true end + @put_filenames ||= [] + unless @put_filenames.include? filename + puts "#{Tty.red}#{filename}#{Tty.reset}" + @put_filenames << filename + end + end + + def keg_contains string, keg, ignores result = false - index = 0 keg.each_unique_file_matching(string) do |file| - if ARGV.verbose? - opoo "String '#{string}' still exists in these files:" if index.zero? - puts "#{Tty.red}#{file}#{Tty.reset}" - end + put_filename = false # Check dynamic library linkage. Importantly, do not run otool on static # libraries, which will falsely report "linkage" to themselves. if file.mach_o_executable? or file.dylib? or file.mach_o_bundle? linked_libraries = file.dynamically_linked_libraries linked_libraries = linked_libraries.select { |lib| lib.include? string } + result ||= linked_libraries.any? else linked_libraries = [] end if ARGV.verbose? + print_filename(string, file) if linked_libraries.any? linked_libraries.each do |lib| puts " #{Tty.gray}-->#{Tty.reset} links to #{lib}" end @@ -67,30 +74,32 @@ module Homebrew until io.eof? str = io.readline.chomp + next if ignores.any? {|i| i =~ str } + next unless str.include? string offset, match = str.split(" ", 2) next if linked_libraries.include? match # Don't bother reporting a string if it was found by otool + result ||= true + if ARGV.verbose? + print_filename string, file puts " #{Tty.gray}-->#{Tty.reset} match '#{match}' at offset #{Tty.em}0x#{offset}#{Tty.reset}" end end end - - index += 1 - result = true end - index = 0 + put_symlink_header = false keg.find do |pn| if pn.symlink? && (link = pn.readlink).absolute? - if link.to_s.start_with?(string) - opoo "Absolute symlink starting with #{string}:" if index.zero? + if !put_symlink_header && link.to_s.start_with?(string) + opoo "Absolute symlink starting with #{string}:" puts " #{pn} -> #{pn.resolved_path}" + put_symlink_header = true end - index += 1 result = true end end @@ -163,8 +172,13 @@ module Homebrew prefix_check = prefix end - relocatable = !keg_contains(prefix_check, keg) - relocatable = !keg_contains(cellar, keg) && relocatable + ignores = [] + if f.deps.any? { |dep| dep.name == "go" } + ignores << %r{#{HOMEBREW_CELLAR}/go/[\d\.]+/libexec} + end + + relocatable = !keg_contains(prefix_check, keg, ignores) + relocatable = !keg_contains(cellar, keg, ignores) && relocatable puts if !relocatable && ARGV.verbose? rescue Interrupt ignore_interrupts { bottle_path.unlink if bottle_path.exist? } |
