diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2009-04-16 19:25:22 +0000 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2009-04-16 19:25:22 +0000 |
commit | 79cb8d11a65b3318f8c5ece4fbdface72fe09129 (patch) | |
tree | 709b944dda71b30361d2795e68f29ca8e17af2ae /pkgs/development/compilers/ghc/6.4.2-binary.nix | |
parent | d182df55264c14860f52b496f9ba820240c18a2a (diff) |
* editline: renamed to libedit (which seems to be the proper name for
the package). * Removed the old ghc-wrapper, which hasn't been used for a long time. * Renamed the "boot" GHC to "binary", which is more descriptive. (They *can* be used for other things than bootstrapping a GHC source build.) * Updated the GHC 6.10.1 binary to 6.10.2. svn path=/nixpkgs/trunk/; revision=15095
Diffstat (limited to 'pkgs/development/compilers/ghc/6.4.2-binary.nix')
-rw-r--r-- | pkgs/development/compilers/ghc/6.4.2-binary.nix | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/pkgs/development/compilers/ghc/6.4.2-binary.nix b/pkgs/development/compilers/ghc/6.4.2-binary.nix new file mode 100644 index 0000000000000..31777244521a0 --- /dev/null +++ b/pkgs/development/compilers/ghc/6.4.2-binary.nix @@ -0,0 +1,65 @@ +{stdenv, fetchurl, perl, readline, ncurses, gmp}: + +stdenv.mkDerivation { + name = if stdenv.system == "i686-darwin" then "ghc-6.6.1-binary" else "ghc-6.4.2-binary"; + + src = + if stdenv.system == "i686-linux" then + fetchurl { + url = http://nixos.org/tarballs/ghc-6.4.2-i386-unknown-linux.tar.bz2; + md5 = "092fe2e25dab22b926babe97cc77db1f"; + } + else if stdenv.system == "x86_64-linux" then + fetchurl { + url = http://haskell.org/ghc/dist/6.4.2/ghc-6.4.2-x86_64-unknown-linux.tar.bz2; + md5 = "8f5fe48798f715cd05214a10987bf6d5"; + } + else if stdenv.system == "i686-darwin" then + /* Yes, this isn't GHC 6.4.2. But IIRC either there was no + 6.4.2 binary for Darwin, or it didn't work. In any case, in + Nixpkgs we just need this bootstrapping a "real" GHC. */ + fetchurl { + url = http://www.haskell.org/ghc/dist/6.6.1/ghc-6.6.1-i386-apple-darwin.tar.bz2; + sha256 = "1drbsicanr6jlykvs4vs6gbi2q9ac1bcaxz2vzwh3pfv3lfibwia"; + } + else throw "cannot bootstrap GHC on this platform"; + + buildInputs = [perl]; + + # On Linux, use patchelf to modify the executables so that they can + # find readline/gmp. + postBuild = if stdenv.isLinux then " + find . -type f -perm +100 \\ + -exec patchelf --interpreter \"$(cat $NIX_GCC/nix-support/dynamic-linker)\" \\ + --set-rpath \"${readline}/lib:${ncurses}/lib:${gmp}/lib\" {} \\; + " else ""; + + # Stripping combined with patchelf breaks the executables (they die + # with a segfault or the kernel even refuses the execve). (NIXPKGS-85) + dontStrip = true; + + # 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 '' + + ensureDir $out/frameworks/GMP.framework/Versions/A + ln -s ${gmp}/lib/libgmp.dylib $out/frameworks/GMP.framework/GMP + ln -s ${gmp}/lib/libgmp.dylib $out/frameworks/GMP.framework/Versions/A/GMP + ensureDir $out/frameworks/GNUreadline.framework/Versions/A + ln -s ${readline}/lib/libreadline.dylib $out/frameworks/GNUreadline.framework/GNUreadline + ln -s ${readline}/lib/libreadline.dylib $out/frameworks/GNUreadline.framework/Versions/A/GNUreadline + + mkdir $out/bin-orig + for i in $(cd $out/bin && ls *); do + mv $out/bin/$i $out/bin-orig/$i + echo "#! $SHELL -e" >> $out/bin/$i + extraFlag= + if test $i != ghc-pkg; then extraFlag="-framework-path $out/frameworks"; fi + echo "DYLD_FRAMEWORK_PATH=$out/frameworks exec $out/bin-orig/$i $extraFlag \"\$@\"" >> $out/bin/$i + chmod +x $out/bin/$i + done + + '' else ""; + +} |