summaryrefslogtreecommitdiff
path: root/hadrian/src/Rules.hs
diff options
context:
space:
mode:
authorArtem Pyanykh <artempyanykh@gmail.com>2019-09-11 21:12:32 +0100
committerMarge Bot <ben+marge-bot@smart-cactus.org>2019-09-23 17:54:04 -0400
commitd0c2f3a2b6ec2d3ee2b9f017eb52c72cf6187d6f (patch)
tree8d1499509979fe3fc2363188664fb8168bdd013d /hadrian/src/Rules.hs
parent2778929466dafefd55a0673625f4520a234df986 (diff)
downloadhaskell-d0c2f3a2b6ec2d3ee2b9f017eb52c72cf6187d6f.tar.gz
[hadrian] Rebuild programs on dynamicGhcPrograms/ghcProfiled change
Currently, if you change these ^ flavour parameters, rebuilding is not triggered, since `programContext` doesn't set up a dependency on those values. Exposing these values via an oracle does set the dependency and properly triggers a rebuild of binaries. Several attempts to factor out these actions ended up in cyclic dependency here or there. I'm not absolutely happy with this variant either, but at least it works. ==== Issue repro: In UserSettings.hs: ``` dbgDynamic = defaultFlavour { name = "dbg-dynamic" , dynamicGhcPrograms = pure True, ... } dbgStatic = defaultFlavour { name = "dbg-static" , dynamicGhcPrograms = pure False ... } ``` Then in console: ``` $ hadrian/build.sh -j --flavour=dbg-dynamic ... does the build $ hadrian/build.sh -j --flavour=dbg-static ... does nothing, considers binaries up to date ```
Diffstat (limited to 'hadrian/src/Rules.hs')
-rw-r--r--hadrian/src/Rules.hs4
1 files changed, 3 insertions, 1 deletions
diff --git a/hadrian/src/Rules.hs b/hadrian/src/Rules.hs
index 5b2682390a..e72623d4ce 100644
--- a/hadrian/src/Rules.hs
+++ b/hadrian/src/Rules.hs
@@ -8,6 +8,7 @@ import qualified Hadrian.Oracles.Path
import qualified Hadrian.Oracles.TextFile
import Expression
+import qualified Oracles.Flavour
import qualified Oracles.ModuleFiles
import Packages
import qualified Rules.BinaryDist
@@ -24,10 +25,10 @@ import qualified Rules.Register
import qualified Rules.Rts
import qualified Rules.SimpleTargets
import Settings
+import Settings.Program (programContext)
import Target
import UserSettings
-
-- | @tool-args@ is used by tooling in order to get the arguments necessary
-- to set up a GHC API session which can compile modules from GHC. When
-- run, the target prints out the arguments that would be passed to @ghc@
@@ -176,4 +177,5 @@ oracleRules = do
Hadrian.Oracles.DirectoryContents.directoryContentsOracle
Hadrian.Oracles.Path.pathOracle
Hadrian.Oracles.TextFile.textFileOracle
+ Oracles.Flavour.oracles
Oracles.ModuleFiles.moduleFilesOracle