about summary refs log tree commit diff
path: root/pkgs/development/compilers/ghc
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2017-09-23 10:13:21 -0400
committerDomen Kožar <domen@dev.si>2017-12-25 16:36:47 +0000
commitb6867f71f4d20e544372114350f00ceb1fdca74a (patch)
tree0d70a96a9c6bd045007bfed92ae9c5d3782c6831 /pkgs/development/compilers/ghc
parent150255e318ce9d945684baafa657fee436e649fd (diff)
downloadnixlib-b6867f71f4d20e544372114350f00ceb1fdca74a.tar
nixlib-b6867f71f4d20e544372114350f00ceb1fdca74a.tar.gz
nixlib-b6867f71f4d20e544372114350f00ceb1fdca74a.tar.bz2
nixlib-b6867f71f4d20e544372114350f00ceb1fdca74a.tar.lz
nixlib-b6867f71f4d20e544372114350f00ceb1fdca74a.tar.xz
nixlib-b6867f71f4d20e544372114350f00ceb1fdca74a.tar.zst
nixlib-b6867f71f4d20e544372114350f00ceb1fdca74a.zip
ghc prebuilt: Simplify and harden Darwin fixup
 - Patch all executables and libraries, while skipping scripts. Base at
   least uses libiconv, so should need this too---I suspect it wasn't a
   problem before as we got away with the immpurity.

 - Rather than hardcoding the symlinks to add, do one per mach-o as
   needed

TEMP no -L no script
Diffstat (limited to 'pkgs/development/compilers/ghc')
-rw-r--r--pkgs/development/compilers/ghc/7.0.4-binary.nix13
-rw-r--r--pkgs/development/compilers/ghc/7.4.2-binary.nix13
2 files changed, 8 insertions, 18 deletions
diff --git a/pkgs/development/compilers/ghc/7.0.4-binary.nix b/pkgs/development/compilers/ghc/7.0.4-binary.nix
index bb592a6cfe33..c518c67d16b1 100644
--- a/pkgs/development/compilers/ghc/7.0.4-binary.nix
+++ b/pkgs/development/compilers/ghc/7.0.4-binary.nix
@@ -106,15 +106,10 @@ stdenv.mkDerivation rec {
         -exec patchelf --set-rpath "${libPath}" {} \;
   '' + stdenv.lib.optionalString stdenv.isDarwin ''
     # not enough room in the object files for the full path to libiconv :(
-    ln -s ${libiconv}/lib/libiconv.dylib $out/bin
-    ln -s ${libiconv}/lib/libiconv.dylib $out/lib/ghc-${version}/libiconv.dylib
-
-    fix () {
-      install_name_tool -change /usr/lib/libiconv.2.dylib @executable_path/libiconv.dylib $1
-    }
-
-    for file in ghc-cabal ghc-pwd ghc-stage2 ghc-pkg haddock hsc2hs hpc; do
-      fix $(find "$out" -type f -name $file)
+    for exe in $(find "$out" -type f -executable); do
+      isScript $exe && continue
+      ln -fs ${libiconv}/lib/libiconv.dylib $(dirname $exe)/libiconv.dylib
+      install_name_tool -change /usr/lib/libiconv.2.dylib @executable_path/libiconv.dylib $exe
     done
 
     for file in $(find "$out" -name setup-config); do
diff --git a/pkgs/development/compilers/ghc/7.4.2-binary.nix b/pkgs/development/compilers/ghc/7.4.2-binary.nix
index 65a3d2a7f730..3cb28e2c8207 100644
--- a/pkgs/development/compilers/ghc/7.4.2-binary.nix
+++ b/pkgs/development/compilers/ghc/7.4.2-binary.nix
@@ -107,15 +107,10 @@ stdenv.mkDerivation rec {
         -exec patchelf --set-rpath "${libPath}" {} \;
   '' + stdenv.lib.optionalString stdenv.isDarwin ''
     # not enough room in the object files for the full path to libiconv :(
-    ln -s ${libiconv}/lib/libiconv.dylib $out/bin
-    ln -s ${libiconv}/lib/libiconv.dylib $out/lib/ghc-${version}/libiconv.dylib
-
-    fix () {
-      install_name_tool -change /usr/lib/libiconv.2.dylib @executable_path/libiconv.dylib $1
-    }
-
-    for file in ghc-cabal ghc-pwd ghc-stage2 ghc-pkg haddock hsc2hs hpc; do
-      fix $(find "$out" -type f -name $file)
+    for exe in $(find "$out" -type f -executable); do
+      isScript $exe && continue
+      ln -fs ${libiconv}/lib/libiconv.dylib $(dirname $exe)/libiconv.dylib
+      install_name_tool -change /usr/lib/libiconv.2.dylib @executable_path/libiconv.dylib $exe
     done
 
     for file in $(find "$out" -name setup-config); do