From d3ef56425a6b4c190317c2527137b97c0ff5daf8 Mon Sep 17 00:00:00 2001 From: William Woodruff Date: Fri, 24 Jun 2016 21:27:52 -0400 Subject: keg_relocate: Exclude hardlinks from mach_o_files. --- Library/Homebrew/keg_relocate.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'Library') diff --git a/Library/Homebrew/keg_relocate.rb b/Library/Homebrew/keg_relocate.rb index b1a72f1ef..be41841f1 100644 --- a/Library/Homebrew/keg_relocate.rb +++ b/Library/Homebrew/keg_relocate.rb @@ -157,10 +157,15 @@ class Keg end def mach_o_files + hardlinks = Set.new mach_o_files = [] path.find do |pn| next if pn.symlink? || pn.directory? - mach_o_files << pn if pn.dylib? || pn.mach_o_bundle? || pn.mach_o_executable? + next unless pn.dylib? || pn.mach_o_bundle? || pn.mach_o_executable? + # if we've already processed a file, ignore its hardlinks (which have the same dev ID and inode) + # this prevents relocations from being performed on a binary more than once + next unless hardlinks.add? [pn.stat.dev, pn.stat.ino] + mach_o_files << pn end mach_o_files -- cgit v1.2.3