about summary refs log tree commit diff
path: root/pkgs/development/compilers/ghc
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2008-02-22 14:09:29 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2008-02-22 14:09:29 +0000
commitd2d8d83f37118153ca92d58acca6ea22dc627fd9 (patch)
tree8c1c7d5f67df7a050a8bfc68bb3c6285341d375c /pkgs/development/compilers/ghc
parent3e72751bd99f1d40760796f34c45e00deef680b6 (diff)
downloadnixlib-d2d8d83f37118153ca92d58acca6ea22dc627fd9.tar
nixlib-d2d8d83f37118153ca92d58acca6ea22dc627fd9.tar.gz
nixlib-d2d8d83f37118153ca92d58acca6ea22dc627fd9.tar.bz2
nixlib-d2d8d83f37118153ca92d58acca6ea22dc627fd9.tar.lz
nixlib-d2d8d83f37118153ca92d58acca6ea22dc627fd9.tar.xz
nixlib-d2d8d83f37118153ca92d58acca6ea22dc627fd9.tar.zst
nixlib-d2d8d83f37118153ca92d58acca6ea22dc627fd9.zip
* A clever hack (due to Audrey Tang, see
  http://consttype.blogspot.com/2007_07_01_archive.html) around the 
  fact that Perl 5.10 no longer supports the $* variable, which GHC's
  evil mangler requires.

svn path=/nixpkgs/branches/stdenv-updates-merge/; revision=10833
Diffstat (limited to 'pkgs/development/compilers/ghc')
-rw-r--r--pkgs/development/compilers/ghc/boot.nix17
1 files changed, 13 insertions, 4 deletions
diff --git a/pkgs/development/compilers/ghc/boot.nix b/pkgs/development/compilers/ghc/boot.nix
index 254a9fb855a0..02cb9866739c 100644
--- a/pkgs/development/compilers/ghc/boot.nix
+++ b/pkgs/development/compilers/ghc/boot.nix
@@ -38,7 +38,7 @@ stdenv.mkDerivation {
   # The binaries for Darwin use frameworks, so fake those frameworks,
   # and create some wrapper scripts that set DYLD_FRAMEWORK_PATH so
   # that the executables work with no special setup.
-  postInstall = if stdenv.isDarwin then "
+  postInstall = (if stdenv.isDarwin then ''
 
     ensureDir $out/frameworks/GMP.framework/Versions/A
     ln -s ${gmp}/lib/libgmp.dylib $out/frameworks/GMP.framework/GMP
@@ -50,11 +50,20 @@ stdenv.mkDerivation {
     mv $out/bin $out/bin-orig
     mkdir $out/bin
     for i in $(cd $out/bin-orig && ls); do
-        echo \"#! $SHELL -e\" >> $out/bin/$i
-        echo \"DYLD_FRAMEWORK_PATH=$out/frameworks exec $out/bin-orig/$i -framework-path $out/frameworks \\\"\\$@\\\"\" >> $out/bin/$i
+        echo "#! $SHELL -e" >> $out/bin/$i
+        echo "DYLD_FRAMEWORK_PATH=$out/frameworks exec $out/bin-orig/$i -framework-path $out/frameworks \"\$@\"" >> $out/bin/$i
         chmod +x $out/bin/$i
     done
 
-  " else "";
+  '' else "") + ''
+
+    # Hack for Perl 5.10 compatibility ($* no longer works).
+    substituteInPlace $out/lib/*/ghc-asm --replace 'local($*) = 1;' '
+      BEGIN {
+        require overload; overload::constant( qr => sub { "(?m:$_[1])" } );
+      }
+    '
+  
+  '';
 
 }