diff options
| author | Max Howell | 2010-04-13 20:17:28 +0100 |
|---|---|---|
| committer | Max Howell | 2010-04-13 20:17:28 +0100 |
| commit | 808f2d07341e2c83506d0446fe45f619fb56b2ed (patch) | |
| tree | 47eceac28c594471c8240236224658399d8ccc9a | |
| parent | 64ab3d41ffe5ceeee438aa0d11fa3f561671cd78 (diff) | |
| download | homebrew-808f2d07341e2c83506d0446fe45f619fb56b2ed.tar.bz2 | |
Fix couchdb by fixing icu4c install_names
Bad icu4c, but this presses the point that we should be in general fixing stuff when it is installed. This code can be generalised, but there are some caveats.
| -rw-r--r-- | Library/Formula/icu4c.rb | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/Library/Formula/icu4c.rb b/Library/Formula/icu4c.rb index d5071fa20..e3bc0ef44 100644 --- a/Library/Formula/icu4c.rb +++ b/Library/Formula/icu4c.rb @@ -22,6 +22,26 @@ class Icu4c <Formula system "make" system "make install" end + + # fix install_names + lib.children.reject{ |pn| pn.symlink? or pn.extname != '.dylib' }.each do |dylib| + bad_names(dylib) do |id, bad_names| + cd lib do + system "install_name_tool", "-id", (lib+id).realpath, dylib.basename + bad_names.each do |bad| + system "install_name_tool", "-change", bad, (lib+bad.basename).realpath, dylib.basename + end + end + end + end + end + + def bad_names pn + ENV['HOMEBREW_PN'] = pn.to_s + rx = /\t(.*) \(compatibility version (\d+\.)*\d+, current version (\d+\.)*\d+\)/ + dylibs = `otool -L "$HOMEBREW_PN"`.split "\n" + dylibs = dylibs.map{ |fn| rx =~ fn && $1 }.compact.reject{ |fn| fn[0].chr == '/' }.map{ |fn| p fn; Pathname.new fn } + yield dylibs.shift, dylibs end end |
