Support Shake's --lint-fsatrace feature.
authorDavid Eichmann <EichmannD@gmail.com>
Thu, 7 Mar 2019 17:35:09 +0000 (17:35 +0000)
committerMarge Bot <ben+marge-bot@smart-cactus.org>
Mon, 1 Apr 2019 07:32:34 +0000 (03:32 -0400)
Using this feature requires fsatrace (e.g. https://github.com/jacereda/fsatrace).
Simply use the `--lint-fsatrace` option when running hadrian.
Shake version >= 0.17.7 is required to support linting out of tree build dirs.

hadrian/src/Main.hs
hadrian/stack.yaml

index fe5dbbb..11ee233 100644 (file)
@@ -1,5 +1,6 @@
 module Main (main) where
 
+import System.Directory (getCurrentDirectory)
 import Development.Shake
 import Hadrian.Expression
 import Hadrian.Utilities
@@ -30,14 +31,20 @@ main = do
         rebuild = [ (RebuildLater, buildRoot -/- "stage0//*")
                   | CommandLine.lookupFreeze1 argsMap ]
 
-        options :: ShakeOptions
+    cwd <- getCurrentDirectory
+    let options :: ShakeOptions
         options = shakeOptions
             { shakeChange   = ChangeModtimeAndDigest
             , shakeFiles    = buildRoot -/- Base.shakeFilesDir
             , shakeProgress = progressSimple
             , shakeRebuild  = rebuild
             , shakeTimings  = True
-            , shakeExtra    = extra }
+            , shakeExtra    = extra
+
+            -- Enable linting file accesses in the build dir and ghc root dir
+            -- (cwd) when using the `--lint-fsatrace` option.
+            , shakeLintInside = [ cwd, buildRoot ]
+            }
 
         rules :: Rules ()
         rules = do
index 7f06944..d121892 100644 (file)
@@ -1,7 +1,7 @@
 # For more information, see: http://docs.haskellstack.org/en/stable/yaml_configuration.html
 
 # Specifies the GHC version and set of packages available (e.g., lts-3.5, nightly-2015-09-21, ghc-7.10.2)
-resolver: lts-13.6
+resolver: lts-13.14
 
 # Local packages, usually specified by relative directory name
 packages:
@@ -18,10 +18,6 @@ packages:
 # TODO: Remove this once it's no longer necessary
 allow-newer: true
 
-# shake-0.17.4 and below depend on heaps, which depends on a specific Cabal
-extra-deps:
-- shake-0.17.5
-
 nix:
    enable: false
    packages: