summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hadrian/hadrian.cabal2
-rw-r--r--hadrian/src/Main.hs10
2 files changed, 11 insertions, 1 deletions
diff --git a/hadrian/hadrian.cabal b/hadrian/hadrian.cabal
index e895334bae..1e7287cb92 100644
--- a/hadrian/hadrian.cabal
+++ b/hadrian/hadrian.cabal
@@ -128,7 +128,7 @@ executable hadrian
, mtl == 2.2.*
, parsec >= 3.1 && < 3.2
, QuickCheck >= 2.6 && < 2.13
- , shake >= 0.17.6
+ , shake >= 0.18.3
, transformers >= 0.4 && < 0.6
, unordered-containers >= 0.2.1 && < 0.3
build-tools: alex >= 3.1
diff --git a/hadrian/src/Main.hs b/hadrian/src/Main.hs
index 34e2afe23e..63001fe53b 100644
--- a/hadrian/src/Main.hs
+++ b/hadrian/src/Main.hs
@@ -41,6 +41,16 @@ main = do
, shakeTimings = True
, shakeExtra = extra
+ -- Setting shakeSymlink to False ensures files are copied out of
+ -- shake's cloud cache instead of hard linked. This is important as
+ -- the hard link mode makes all such files read only to avoid
+ -- accidentally modifying cache files via the hard link. It turns
+ -- out, many Hadrian rules attempt read access to such files and
+ -- hence would in the hard link mode. These rules could be
+ -- refactored to avoid write access, but setting shakeSymlink to
+ -- False is a much simpler solution.
+ , shakeSymlink = False
+
-- Enable linting file accesses in the build dir and ghc root dir
-- (cwd) when using the `--lint-fsatrace` option.
, shakeLintInside = [ cwd, buildRoot ]