On 19/12/2007, at 8:44 PM, Duncan Coutts wrote:

On Wed, 2007-12-19 at 18:12 +0700, Peter Gammie wrote:
I hope that is clear. While hacking HSQL and HaskellDB I ran into this
problem all the time, so I usually did clean/configure/build/haddock/
install all the time, which is no fun on one package let alone the 6
or so in that chain. Also there was no way to be sure that I'd
recompiled them in the right order. For a release I expect the
versioning takes care of that.

Actually, how about a command that does all that in one go? Something
like:

runghc Setup buildAll <configure options>

Yes, so this is what I was talking about above, building a collection of
related packages, respecting their dependencies.

Ah, I had in mind nothing so complicated. I want a one-shot command that does clean/configure/build/haddock/install/whatever else. I could write a script but I'd prefer not to. I always forget at least one of those and so things get out of sync and generally screwed up.

runghc Setup DoItFromScratchAndGetOnWithIt --configure-opts

As we've all had experiences with dependency tracking gone awry (ever try to build Haskell projects using 'make'? - that was fun), I suggest that some brute-force command is still very useful. I'd use this when things get screwy, not all the time.

(I *always* forget to say "haddock" and wonder why I don't get any docs. Bjorn's solution is to write a Makefile :-) and the commands look something like "runghc ... clean && runghc ... build && runghc .. install" :-)

Later when you have the dependency stuff, you could say:

runghc Setup DoItFromScratchAndGetOnWithIt --configure-opts -- allTheDepsTooThanks

and get something rebuilt from the ground up.

While I'm on that topic, I'm a little worried that cabal-install is less than helpful in my case. I have a heavily hacked HSQL and HaskellDB that provides some better concurrency guarantees and data descriptions, but I've only plumbed the PostgreSQL backend. I'm sure the others are doable but I have no time or interest in doing them. So, I can't expect my far-reaching patches to be included in the main repos.

This implies that if someone wants to install my stuff, they'll have to trawl my darcs repos and do a lot of it by hand. Can cabal-install be re-targeted to say "prioritise those repos over these repos", ala Debian's APT? If not, the above command would be super-useful.

This needs a proper dependencies infrastructure in Cabal, which is the
next major architectural project in Cabal and is something we need more
help with. Many new features are blocking on this.

That's a shame, there's already the code in GHC and hmake... I hope you can recycle it somehow.

Sorry for all the armchair comments, I'm up to my eyeballs in hacking Bjorn's Hope.

cheers
peter

_______________________________________________
cabal-devel mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cabal-devel

Reply via email to