FW: Building GHC HEAD

Simon Marlow marlowsd at gmail.com
Tue May 12 05:58:07 EDT 2009


> -----Original Message-----
> From: Russel Winder [mailto:russel.winder at concertant.com]
> Sent: 11 May 2009 09:16
> To: Simon Peyton-Jones
> Cc: Simon Marlow
> Subject: RE: Building GHC HEAD
>
> (Actually the page
> http://hackage.haskell.org/trac/ghc/wiki/Building/Using doesn't really
> give me enough detailed process information to be confident of what to
> do to create and use multiple build trees.  I infer that actually
> Haskell doesn't separate the notions of source and build tree, you just
> have a tree and you have to copy the whole thing to a separate root for
> a separate platform.  It just happens that Unix links or symbolic links
> are a way of doing this without having multiple copies of 350MB of
> stuff.)

Yes - but why make things more complex than they need to be?

> The problem here is that the build assumes it takes place in ./inplace
> which is a fixed name and not platform dependent -- big error !

./inplace is just where the final binaries end up, so you can easily use 
the results of the build without having to search the build tree for 
executables.

If you're using multiple build trees, then each one would have a single 
build for a single platform.

> The current solution is very Unix oriented, workable, but . . .
>
> Could you just mandate GNU Make and use VPATH as a way of handling
> remote source trees?

In my experience VPATH never works right.  In fact, I'm not sure I even 
understand what it does.  Our build system is complex enough without 
adding VPATH to the mix!  We have multiple builds per source directory 
already (e.g. GHC is built multiple times per build, and packages are 
built multiple ways).

Why add special support for multiple build trees to the build system, 
when lndir does the right thing and costs nothing?

> A neater solution assuming the necessity to copy the entire tree would
> be:  Use Bazaar to create a master mirror of the source then use
> lightweight checkouts to create new working trees for each architecture.
> Saves the hassle of using commands that have to be held in the Haskell
> source tree.  (Git can do something similar, and I am sure Mercurial
> will be able to soon as well.  I appreciate that Haskell is basically
> tied to Darcs in perpetuity,

Not at all!  We already decided to switch to git, although we may 
re-evaluate that decision.  We're not tied to any particular VC system. 
  However, the fact that our sources are in multiple repositories does 
make it tricky to switch. See

http://hackage.haskell.org/trac/ghc/wiki/DarcsEvaluation

darcs with hashed repositories can duplicate trees pretty quickly. 
We're a bit behind the darcs curve and aren't using hashed repos for our 
main repos, but there's nothing stopping you using hashed repos locally. 
  Then you can have one copy of the patches shared by all your local GHC 
repos, transparently.

Cheers,
	Simon



More information about the Cvs-ghc mailing list