From 169aa1ac391ce67894e22d24fa4dae83b5059515 Mon Sep 17 00:00:00 2001 From: Jack Nagel Date: Sun, 13 Apr 2014 13:53:46 -0500 Subject: [PATCH] Use correct basename when updating dylib IDs --- Library/Homebrew/keg_fix_install_names.rb | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/keg_fix_install_names.rb b/Library/Homebrew/keg_fix_install_names.rb index 5feae11368..35d3ddc09e 100644 --- a/Library/Homebrew/keg_fix_install_names.rb +++ b/Library/Homebrew/keg_fix_install_names.rb @@ -130,14 +130,16 @@ class Keg < Pathname end def dylib_id_for file, options={} - # the shortpath ensures that library upgrades don’t break installed tools - relative_path = file.relative_path_from(self) - shortpath = HOMEBREW_PREFIX.join(relative_path) + # 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) + relative_dirname = file.dirname.relative_path_from(self) + shortpath = HOMEBREW_PREFIX.join(relative_dirname, basename) if shortpath.exist? and not options[:keg_only] shortpath.to_s else - "#{HOMEBREW_PREFIX}/opt/#{fname}/#{relative_path}" + "#{HOMEBREW_PREFIX}/opt/#{fname}/#{relative_dirname}/#{basename}" end end