Passing on more feedback from Russel

-----Original Message-----
From: Russel Winder [mailto:[email protected]]
Sent: 11 May 2009 09:16
To: Simon Peyton-Jones
Cc: Simon Marlow
Subject: RE: Building GHC HEAD

On Mon, 2009-05-11 at 08:10 +0100, Simon Peyton-Jones wrote:
> | It's a pity that Autotools is used for the build; it means one has to
> | have a separate copy of the source for every one of the architectures
> | being built, or they have to be done sequentially.
>
> We use a single source tree, with a linked build tree for each architecture.  
> (The Building Guide describes.)

On Mon, 2009-05-11 at 08:44 +0100, Simon Marlow wrote:

> You can do multiple build trees for a single source tree using lndir.
We describe how to do it on the wiki:
>
> http://hackage.haskell.org/trac/ghc/wiki/Building/Using
>
> I agree it's useful to be able to do this - we do it all the time!

QED re Autotools !

(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.)

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

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?

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, but Bazaar, Mercurial and Git are the main
players in the VCS game, Darcs is a minor DVCS that is unlikely to get
any traction outside the Haskell world.)

Of course using SCons instead of make would solve all the problems far
more cleanly:  the build tree has a name dependent on the platform so
exactly the same source tree can be used for as many builds as you want.
(CMake can do something similar but SCons is far superior.)

I suspect Haskell isn't going to modernize, even if it should ;-)

--
Russel.
============================================================
Dr Russel Winder                 Partner

Concertant LLP          t: +44 20 7585 2200, +44 20 7193 9203
41 Buckmaster Road,     f: +44 8700 516 084    voip:  
sip:[email protected]
London SW11 1EN, UK.    m: +44 7770 465 077    xmpp: [email protected]

Attachment: signature.asc
Description: signature.asc

_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to