-----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

(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

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

Reply via email to