The GHC build system
ndmitchell at gmail.com
Fri May 13 20:55:47 CEST 2011
> We've talked before about the need to bootstrap occasionally, which as I
> understand was one of the reasons for using make. I agree that something
> like Neil's Shake system would be nice if it didn't require a working
> Haskell implementation to build the driver.
With Shake, it's possible to run it single threaded and dump a list of
all system commands performed. With a little bit of care (you couldn't
use your Haskell Shake code to query the global environment in
non-obvious ways), this could be used as the initial bootstrap. It's
not been done before, but I see no reason it won't work.
> I hate working on build systems as much as the next person, but I'm also
> conscious of the fact that the YHC basically died under the weight of its
> broken build system. I don't think that'll happen with GHC, but it is still
> causing me acute pain.
Yhc died because of build system choice, but I'm sure that won't
happen to GHC - it will just suck away fun and valuable Haskell
hacking time. But Shake has other benefits, such as profiling. With
detailed profile statistics about your build system you can usually
make sensible modifications and get some build time performance
improvement. Similarly, I'm sure Shake would increase the parallelism
of the build.
More information about the Cvs-ghc