diff options
author | Artem Pyanykh <artempyanykh@gmail.com> | 2019-09-11 21:12:32 +0100 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2019-09-23 17:54:04 -0400 |
commit | d0c2f3a2b6ec2d3ee2b9f017eb52c72cf6187d6f (patch) | |
tree | 8d1499509979fe3fc2363188664fb8168bdd013d /hadrian/src/Rules.hs | |
parent | 2778929466dafefd55a0673625f4520a234df986 (diff) | |
download | haskell-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.hs | 4 |
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 |