aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorWilliam Woodruff2017-02-16 01:33:24 -0500
committerWilliam Woodruff2017-02-19 19:51:27 -0500
commit0f89f6520ee9054d3e1ba09a3f6e14455375d2ed (patch)
tree42e6d93f2a54f2f4b5be7e99e9fc1a763afcd0d9 /Library
parent5a2a0638028ee49991e404c1bd6397c10659474b (diff)
downloadbrew-0f89f6520ee9054d3e1ba09a3f6e14455375d2ed.tar.bz2
keg_relocate: Don't relocate dylib IDs containing metavariables.
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/extend/os/mac/keg_relocate.rb8
1 files changed, 7 insertions, 1 deletions
diff --git a/Library/Homebrew/extend/os/mac/keg_relocate.rb b/Library/Homebrew/extend/os/mac/keg_relocate.rb
index f44a97b31..476e5da4a 100644
--- a/Library/Homebrew/extend/os/mac/keg_relocate.rb
+++ b/Library/Homebrew/extend/os/mac/keg_relocate.rb
@@ -78,13 +78,19 @@ class Keg
end
end
+ def filename_contains_metavariable?(fn)
+ fn =~ /^@(loader_|executable_|r)path/
+ end
+
def each_install_name_for(file, &block)
dylibs = file.dynamically_linked_libraries
- dylibs.reject! { |fn| fn =~ /^@(loader_|executable_|r)path/ }
+ dylibs.reject! { |fn| filename_contains_metavariable?(fn) }
dylibs.each(&block)
end
def dylib_id_for(file)
+ return file.dylib_id if filename_contains_metavariable?(file.dylib_id)
+
# The new dylib ID should have the same basename as the old dylib ID, not
# the basename of the file itself.
basename = File.basename(file.dylib_id)