
We can talk about the general issues on IRC. But I thought I'd answer a few of the specific questions quickly: Roman Leschinskiy wrote:
I don't think I understand how GHC itself is built any longer, either. What does cabal-bin do?
It's effectively a pre-compiled Setup.hs for packages that have no need for a custom Setup.hs. cabal-install does the same job for end-users, but we can't rely on having cabal-install in the GHC build system.
What is runghc.wrapper?
it's a template used to make a shell wrapper for a binary. There seems to be new functionality in Cabal to support this.
What is the difference between make.library.* and build.library.* and why do we need both
This one is my fault. build.* runs 'cabal-bin build', whereas make.* runs 'cabal-bin makefile' followed by 'make'. That is, build.* ends up using ghc --make, whereas make.* ends up using a traditional makefile with ghc -M for dependencies and individual single-module compilations. The latter was added so that we could (a) use make -j and (b) compile single modules for testing/debugging purposes. We don't *need* both - the build system normally only uses make.* (and it would also work perfectly well using build.*, except you'd get no parallelism). One day make.* will go away when Cabal provides the necessary functionality via 'cabal build'.
(and why doesn't one of them work for dph)?
no idea about that, sorry. Cheers, Simon