[commit: ghc] wip/nfs-locking: Add `cabal new-build` based wrapper script (6432f0c)

git at git.haskell.org git at git.haskell.org
Thu Oct 26 23:56:53 UTC 2017


Repository : ssh://git@git.haskell.org/ghc

On branch  : wip/nfs-locking
Link       : http://ghc.haskell.org/trac/ghc/changeset/6432f0c241ea173bd5d7f7de4833085d6155c47f/ghc

>---------------------------------------------------------------

commit 6432f0c241ea173bd5d7f7de4833085d6155c47f
Author: Herbert Valerio Riedel <hvr at gnu.org>
Date:   Sun Jan 24 10:43:43 2016 +0100

    Add `cabal new-build` based wrapper script
    
    This makes use of the new nix-store cache for the shake library and other
    pre-requisities, rather than using the reinstall-breakage-prone old-style
    global pkg-db


>---------------------------------------------------------------

6432f0c241ea173bd5d7f7de4833085d6155c47f
 .gitignore                     | 17 ++++++++++++-----
 build.sh => build.cabal-new.sh | 28 +++++++++++++++++++---------
 2 files changed, 31 insertions(+), 14 deletions(-)

diff --git a/.gitignore b/.gitignore
index 6cc5501..967be07 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,14 @@
-.shake/
-.db/
+/.shake/
+/.db/
 cfg/system.config
+
+# build.cabal.sh specific
+/dist/
+/.cabal-sandbox/
 cabal.sandbox.config
-dist/
-.cabal-sandbox/
-.stack-work/
+
+# build.cabal-new.sh specific
+/dist-newstyle/
+
+# build.stack.sh specific
+/.stack-work/
diff --git a/build.sh b/build.cabal-new.sh
similarity index 60%
copy from build.sh
copy to build.cabal-new.sh
index 719e85e..96c194e 100755
--- a/build.sh
+++ b/build.cabal-new.sh
@@ -1,5 +1,8 @@
 #!/usr/bin/env bash
 
+# This wrapper scripts makes use of cabal 1.24+'s nix-store;
+# In order to clean/reset, remove the `dist-newstyle/` folder
+
 set -euo pipefail
 
 # readlink on os x, doesn't support -f, to prevent the
@@ -32,15 +35,22 @@ root="$(dirname "$(rl "$0")")"
 
 mkdir -p "$root/.shake"
 
-ghc                           \
-    "$root/src/Main.hs"       \
-    -Wall                     \
-    -i"$root/src"             \
-    -rtsopts                  \
-    -with-rtsopts=-I0         \
-    -outputdir="$root/.shake" \
-    -j -O                     \
-    -o "$root/.shake/build"
+# Notes/Random thoughts:
+#
+# - if ghc.git had a top-level `cabal.project` file, we could maybe avoid the
+# boilerplate above, as we could simply say `cabal exec ghc-shake` from within
+# any GHC folder not shadowed by a nearer shadowing `cabal.project` file.
+
+pushd "$root/"
+
+cabal new-build --disable-profiling --disable-documentation -j exe:ghc-shake
+
+PKGVER="$(awk '/^version:/ { print $2 }' shaking-up-ghc.cabal)"
+
+cp -v "$root/dist-newstyle/build/shaking-up-ghc-${PKGVER}/build/ghc-shake/ghc-shake" \
+      "$root/.shake/build"
+
+popd
 
 "$root/.shake/build"       \
     --lint                 \



More information about the ghc-commits mailing list