Build system woes

Simon Marlow marlowsd at
Wed Jul 30 09:46:41 EDT 2008

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.


More information about the Glasgow-haskell-users mailing list