Suggestion re altering the build system
Manuel M T Chakravarty
chak at cse.unsw.edu.au
Thu May 31 07:12:48 EDT 2007
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
More information about the Cvs-ghc
mailing list