
#16242: Hadrian is too aggressive in rebuilding -------------------------------------+------------------------------------- Reporter: goldfire | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Build System | Version: 8.6.3 (Hadrian) | Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by snowleopard):
Edit a comment in one file. [...] What happens though is that stage-1 is rebuilt
Restore the LAX_DEPENDENCIES feature. I don't know the specification of
Wait, this doesn't sound right. Which file did you edit? Here is what should have happened: the corresponding compiler should have been rerun generating the same object file, at which point the rebuild should have stopped (we call this feature "early cutoff"). Are we hitting GHC non- determinism here, i.e. the resulting object file was different after editing a comment? that feature, but my experience is that it just did the Right Thing Although I agree that having a flag that does the Right Thing would be useful, I'd like to point out that Hadrian provides a general mechanism for skipping the rebuild of any collection of files. `--freeze1` simply uses this mechanism by skipping everything in `stage0//*`. Here is the corresponding code fragment: https://gitlab.haskell.org/ghc/ghc/blob/10faf44d97095b2f8516b6d449d266f6889d... You can specify the files that should be ignored from the command line using `--skip` flag. For example, the equivalent of the flag `--freeze1` is `--skip=stage0//*`.
Somewhat separately, it might be nice to package up common idioms into smaller command lines.
I think "build flavours" are the intended mechanism for common idioms, although typing `--flavour=...` is indeed inconvenient. We could add a shorthand `-f` for this. Separate scripts for such idioms sounds like a plausible approach too, although there is a risk that having multiple ways to do the same thing may be confusing. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/16242#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler