Simon Marlow wrote,
Manuel M T Chakravarty wrote:
In the last couple of weeks I spent a lot of time just trying to compile GHC. With the constantly changing build system, incremental builds fail more often than not after new patches are pulled. And sometimes even clean builds don't work. For example, today (that is Monday morning in .au) I could neither build the ghc-ndp branch nor the head pulling the ghc sources and packages straight of darcs.

I am maybe in an especially bad situation by working on the head and a branch (ghc-ndp), but we sync the branch fairly often (although that's been discouraged by the constant build problems). I am also building on MacOS, which once in a while presents its on kinks (eg, readline breaking with the change to the Cabal build system until Roman fixed it).

Nevertheless, I don't think I am alone. For example, not long ago I met Andy Gill in #ghc trying to find a version of the head that's fairly recent and still builds.

So, let me make a suggestion. Could the changes to the build system maybe done on a branch of the repos and be integrated into the live tree in larger intervals? Then, we'd have the pain in bursts, but less often. I appreciate that this is not entirely trivial as you have to branch the packages along with the ghc repo, but the current situation is extremely frustrating.

I feel your frustration, stability of the HEAD does seem to have been a problem of late. Looking through the logs though, there was only one day in the last two weeks in which there was no successful build at all. So, problems arise and are generally fixed quickly. We're still improving our nightly build infrastructure, so I expect this situation to improve in the future - e.g. we don't currently get notifications as soon as one of the builds fails, but Ian plans to add this to the IRC bot, which should mean we're able to respond more quickly.

We should try to use the "FIX BUILD" convention more consistently. Hopefully that would allow people to get from a broken build to a working one more quickly and reliably.

I'm not sure that working on a branch would help here. In a sense the build system work *is* being done in a branch - a private branch, and making the branch public wouldn't really help, because nobody else would be testing it. I suspect we'd have a similar batch of failures when the code was merged into the HEAD and tested in a wider variety of configurations than Ian can reasonably test on his own. Add to that the extra overhead of developing on a branch (with multiple repos) and I'd say this isn't the way forward.

Maybe the work is on a branch, but it is pushed into the head frequently enough that it doesn't make a difference. And I don't agree that a public branch wouldn't help. A public branch with a call for wider testing at points where you think it actually works would get it at least some testing before it hits everybody.

Incremental builds after pulling patches can fail for many reasons, which is why we recommend doing a distclean and building from scratch after pulling. There are simply too many dependencies for the build system to track them all - for example, we can't tell when the interface format changes and the libraries need to be rebuilt.

I understand that incremental builds are more tricky, but during teaching session I often have only 2 hours to hack on a day. If I have to download a fresh repo and build from scratch before I start, I can as well leave it. So, I of course try to work from where I am. If that doesn't work then I clean components, and if that doesn't work than I start from scratch. If, like this Monday, that doesn't work either, I am *very* annoyed.

(And I am not worried about changing interface file formats, I can figure that out fine. Its the build system changes, which screwed me up most.)

We definitely need more nightly builds, in particular we don't have a current MacOS X nightly build - why is that? There are several registered, but they all seem to be offline.

I'd like to offer a host, but our Macs are all laptops.

Manuel

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

Reply via email to