about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/compilers/ghcjs/8.10/configured-ghcjs-src.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/compilers/ghcjs/8.10/configured-ghcjs-src.nix')
-rw-r--r--nixpkgs/pkgs/development/compilers/ghcjs/8.10/configured-ghcjs-src.nix60
1 files changed, 60 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/compilers/ghcjs/8.10/configured-ghcjs-src.nix b/nixpkgs/pkgs/development/compilers/ghcjs/8.10/configured-ghcjs-src.nix
new file mode 100644
index 000000000000..9fa6fae1a593
--- /dev/null
+++ b/nixpkgs/pkgs/development/compilers/ghcjs/8.10/configured-ghcjs-src.nix
@@ -0,0 +1,60 @@
+{ perl
+, autoconf
+, automake
+, python3
+, gcc
+, cabal-install
+, runCommand
+, lib
+, stdenv
+
+, ghc
+, happy
+, alex
+
+, ghcjsSrc
+, version
+}:
+
+runCommand "configured-ghcjs-src" {
+  nativeBuildInputs = [
+    perl
+    autoconf
+    automake
+    python3
+    ghc
+    happy
+    alex
+    cabal-install
+  ] ++ lib.optionals stdenv.isDarwin [
+    gcc # https://github.com/ghcjs/ghcjs/issues/663
+  ];
+  inherit ghcjsSrc;
+} ''
+  export HOME=$(pwd)
+  mkdir $HOME/.cabal
+  touch $HOME/.cabal/config
+  cp -r "$ghcjsSrc" "$out"
+  chmod -R +w "$out"
+  cd "$out"
+
+  # TODO: Find a better way to avoid impure version numbers
+  sed -i 's/RELEASE=NO/RELEASE=YES/' ghc/configure.ac
+
+  # These files are needed by ghc-boot package, and these are generated by the
+  # make/hadrian build system when compiling ghc. Since we dont have access to
+  # the generated code of the ghc while it got built, here is a little hack to
+  # generate these again.
+  runhaskell ${./generate_host_version.hs}
+  mkdir -p utils/pkg-cache/ghc/libraries/ghc-boot/dist-install/build/GHC/Platform
+  mv Host.hs utils/pkg-cache/ghc/libraries/ghc-boot/dist-install/build/GHC/Platform/Host.hs
+  mv Version.hs utils/pkg-cache/ghc/libraries/ghc-boot/dist-install/build/GHC/Version.hs
+
+  # The ghcjs has the following hardcoded paths of lib dir in its code. Patching
+  # these to match the path expected by the nixpkgs's generic-builder, etc.
+  sed -i 's/libSubDir = "lib"/libSubDir = "lib\/ghcjs-${version}"/' src-bin/Boot.hs
+  sed -i 's@let libDir = takeDirectory haddockPath </> ".." </> "lib"@let libDir = takeDirectory haddockPath </> ".." </> "lib/ghcjs-${version}"@' src-bin/HaddockDriver.hs
+
+  patchShebangs .
+  ./utils/makePackages.sh copy
+''