summary refs log tree commit diff
path: root/pkgs/development/compilers/ghc
diff options
context:
space:
mode:
authorAndres Löh <mail@andres-loeh.de>2011-12-04 16:07:39 +0000
committerAndres Löh <mail@andres-loeh.de>2011-12-04 16:07:39 +0000
commitf237a3a4183459cd64b9d28e5806a2efb64e040d (patch)
treec0cf5450f248ec2b97d44dee161abc264a3d2024 /pkgs/development/compilers/ghc
parentdccc3f83b3390db80bab0853b295cbf81eb2b376 (diff)
downloadnixlib-f237a3a4183459cd64b9d28e5806a2efb64e040d.tar
nixlib-f237a3a4183459cd64b9d28e5806a2efb64e040d.tar.gz
nixlib-f237a3a4183459cd64b9d28e5806a2efb64e040d.tar.bz2
nixlib-f237a3a4183459cd64b9d28e5806a2efb64e040d.tar.lz
nixlib-f237a3a4183459cd64b9d28e5806a2efb64e040d.tar.xz
nixlib-f237a3a4183459cd64b9d28e5806a2efb64e040d.tar.zst
nixlib-f237a3a4183459cd64b9d28e5806a2efb64e040d.zip
Extended ghcWithPackages to link binaries.
svn path=/nixpkgs/trunk/; revision=30726
Diffstat (limited to 'pkgs/development/compilers/ghc')
-rw-r--r--pkgs/development/compilers/ghc/with-packages.nix83
1 files changed, 48 insertions, 35 deletions
diff --git a/pkgs/development/compilers/ghc/with-packages.nix b/pkgs/development/compilers/ghc/with-packages.nix
index 2535e28ebc1f..b405a89b6421 100644
--- a/pkgs/development/compilers/ghc/with-packages.nix
+++ b/pkgs/development/compilers/ghc/with-packages.nix
@@ -1,7 +1,7 @@
-{stdenv, ghcPlain, packages ? [], makeWrapper}:
+{stdenv, ghc, packages ? [], makeWrapper}:
 
 stdenv.mkDerivation rec {
-  name = "ghc-${ghcPlain.version}-linkdir";
+  name = "ghc-${ghc.version}-linkdir";
 
   allPackages = stdenv.lib.closePropagation packages;
   buildInputs = allPackages ++ [makeWrapper];
@@ -10,58 +10,71 @@ stdenv.mkDerivation rec {
   unpackPhase = "true";
 
   installPhase = ''
-    originalTopDir="${ghcPlain}/lib/ghc-${ghcPlain.version}"
+    originalTopDir="${ghc}/lib/ghc-${ghc.version}"
     originalPkgDir="$originalTopDir/package.conf.d"
     linkedTopDir="$out/lib"
     linkedPkgDir="$linkedTopDir/package.conf.d"
 
     ensureDir $out/bin
-    cd $out/bin
+    ensureDir $linkedTopDir
+    ensureDir $linkedPkgDir
 
-    echo "Generating wrappers ..."
+    echo "Linking GHC core libraries:"
 
-    for prg in ghc ghci ghc-${ghcPlain.version} ghci-${ghcPlain.version}; do
-      makeWrapper ${ghcPlain}/bin/$prg $out/bin/$prg --add-flags "-B$linkedTopDir"
-    done
+    if test -f $originalTopDir/settings; then
+      echo -n "Linking $originalTopDir/settings "
+      ln -s $originalTopDir/settings $linkedTopDir
+      echo .
+    fi
 
-    for prg in runghc runhaskell; do
-      makeWrapper ${ghcPlain}/bin/$prg $out/bin/$prg --add-flags "-f $out/bin/ghc"
+    echo -n "Linking $originalPkgDir "
+    for f in $originalPkgDir/*.conf; do
+      ln -s $f $linkedPkgDir
+      echo -n .
     done
+    echo
 
-    for prg in ghc-pkg ghc-pkg-${ghcPlain.version}; do
-      makeWrapper ${ghcPlain}/bin/$prg $out/bin/$prg --add-flags "--global-conf $linkedPkgDir"
-    done
+    echo "Linking selected packages and dependencies:"
 
-    for prg in hp2ps hpc hasktags hsc2hs haddock haddock-${ghcPlain.version}; do
-      test -x ${ghcPlain}/bin/$prg && ln -s ${ghcPlain}/bin/$prg $out/bin/$prg
+    for currentPath in ${stdenv.lib.concatStringsSep " " allPackages}; do
+      currentPkgDir="$currentPath/lib/ghc-pkgs/ghc-${ghc.version}"
+      echo -n "Linking $currentPath "
+      for f in $currentPath/bin/*; do
+        ln -s $f $out/bin
+        echo -n .
+      done
+      for f in $currentPkgDir/*.conf; do
+        ln -s $f $linkedPkgDir
+        echo -n .
+      done
+      echo
     done
 
-    ensureDir $linkedTopDir
-    cd $linkedTopDir
-
-    if test -f $originalTopDir/settings; then
-      echo "Linking $originalTopDir/settings ..."
-      ln -s $originalTopDir/settings .
-    fi
+    echo "Generating package cache ..."
+    ${ghc}/bin/ghc-pkg --global-conf $linkedPkgDir recache
 
-    ensureDir $linkedPkgDir
-    cd $linkedPkgDir
+    echo -n "Generating wrappers "
 
-    echo "Linking $originalPkgDir ..."
-    ln -s $originalPkgDir/*.conf .
+    for prg in ghc ghci ghc-${ghc.version} ghci-${ghc.version}; do
+      makeWrapper ${ghc}/bin/$prg $out/bin/$prg --add-flags "-B$linkedTopDir"
+      echo -n .
+    done
 
-    for currentPath in ${stdenv.lib.concatStringsSep " " allPackages}; do
-      currentPkgDir="$currentPath/lib/ghc-pkgs/ghc-${ghcPlain.version}"
-      if test -d $currentPkgDir; then
-        echo "Linking $currentPkgDir ..."
-        ln -s $currentPkgDir/*.conf .
-      fi
+    for prg in runghc runhaskell; do
+      makeWrapper ${ghc}/bin/$prg $out/bin/$prg --add-flags "-f $out/bin/ghc"
+      echo -n .
     done
 
-    echo "Generating package cache ..."
-    ${ghcPlain}/bin/ghc-pkg --global-conf $linkedPkgDir recache
+    for prg in ghc-pkg ghc-pkg-${ghc.version}; do
+      makeWrapper ${ghc}/bin/$prg $out/bin/$prg --add-flags "--global-conf $linkedPkgDir"
+      echo -n .
+    done
 
+    for prg in hp2ps hpc hasktags hsc2hs haddock haddock-${ghc.version}; do
+      test -x ${ghc}/bin/$prg && ln -s ${ghc}/bin/$prg $out/bin/$prg && echo -n .
+    done
+    echo
   '';
 
-  # inherit ghc.meta;
+  meta = ghc.meta;
 }