classification
Title: buildbot: if a compile error occurs, the "clean" step is skipped
Type: resource usage Stage:
Components: Tests Versions: Python 3.1, Python 3.2, Python 2.7, Python 2.6
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: Nosy List: flox, loewis, orsenthil, pitrou, rhettinger
Priority: high Keywords: buildbot

Created on 2010-08-09 12:51 by flox, last changed 2010-08-09 21:45 by loewis. This issue is now closed.

Messages (8)
msg113409 - (view) Author: Florent Xicluna (flox) * (Python committer) Date: 2010-08-09 12:51
When the buildbot fails to compile, the "clean" step is not run.
 http://www.python.org/dev/buildbot/builders/i386%20Ubuntu%203.x/builds/1838/

This is a problem for issue #9545 where the Modules/Setup.dist cannot be copied to Modules/Setup on next run (file already exist).

Normally, "clean" step takes care  to remove "Modules/Setup":
 http://www.python.org/dev/buildbot/builders/i386%20Ubuntu%203.x/builds/1820/steps/clean/logs/stdio
msg113465 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2010-08-09 20:27
I think "cannot be copied" is an exaggeration. Of course it can be copied - it's just that the Makefile skips doing so.

What's the specific problem that this causes?

Not sure why this had high priority - if anybody wants to fix it, please go ahead.
msg113469 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2010-08-09 20:43
> I think "cannot be copied" is an exaggeration

It seems that the purpose is to allow local modifications to Modules/Setup. Otherwise, I don't know why the Makefile would print an elaborate message when the file exists.
If this possibility is never used then, true, we can remove the elaborate message and overwrite the existing file instead.

> Not sure why this had high priority - if anybody wants to fix it,
> please go ahead.

How do we fix it? I don't think we have access to the sequence of operations executed by buildbots.

It is high priority because this caused a mess on the buildbots and forced us to revert some perfectly good checkins. I hesitated between high and critical, because infrastructure bugs like this are actively detrimental to development activites.
msg113470 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2010-08-09 20:57
Am 09.08.2010 22:43, schrieb Antoine Pitrou:
> 
> Antoine Pitrou <pitrou@free.fr> added the comment:
> 
>> I think "cannot be copied" is an exaggeration
> 
> It seems that the purpose is to allow local modifications to
> Modules/Setup. Otherwise, I don't know why the Makefile would print
> an elaborate message when the file exists. If this possibility is
> never used then, true, we can remove the elaborate message and
> overwrite the existing file instead.

It's certainly the case that this is used. However, "cannot be copied"
sounds like a permission problem, which there is not.

>> Not sure why this had high priority - if anybody wants to fix it, 
>> please go ahead.
> 
> How do we fix it? I don't think we have access to the sequence of
> operations executed by buildbots.

Just ask for it, and you'll be granted access.

> It is high priority because this caused a mess on the buildbots and
> forced us to revert some perfectly good checkins. I hesitated between
> high and critical, because infrastructure bugs like this are actively
> detrimental to development activites.

I still fail to see the bug - it's by design that later build steps are
not executed if earlier build steps failed. It would be possible to let
the slaves start over with an entirely new checkout on every build, but
that would significantly increase bandwidth consumption, and delay
builds.

In any case, I won't have time to look into this in the near future.
msg113475 - (view) Author: Senthil Kumaran (orsenthil) * (Python committer) Date: 2010-08-09 21:10
On Mon, Aug 09, 2010 at 08:57:31PM +0000, Martin v. Löwis wrote:
> I still fail to see the bug - it's by design that later build steps are
> not executed if earlier build steps failed. It would be possible to let
> the slaves start over with an entirely new checkout on every build, but
> that would significantly increase bandwidth consumption, and delay
> builds.

I guess, you missed what we are trying to convey.

In the configure script there is this piece of code:

echo "creating Modules/Setup"
if test ! -f Modules/Setup
then
        cp $srcdir/Modules/Setup.dist Modules/Setup
fi      

And only in make clean, is the older Modules/Setup is removed!
So, in effect, if make clean is not run, any changes made in Modules/Setup.dist
will not get into the build process.

This caused a problem because, a change in the re module caused a circular
dependency and lead to compile error. This was fixed by some changes in
Setup.dist, by making a module build statically, now as make clean was not run
by the buildbot, this change is not coming into effect.

Running of make clean in the buildbot context seems to me like having a finally
clause. It is really helpful to cleanup and should always be run.

- Always copying Modules/Setup.dist to Modules/Setup may not be desirable a
fix. It might limit what Setup it is intended for, namely experimentation.
msg113478 - (view) Author: Florent Xicluna (flox) * (Python committer) Date: 2010-08-09 21:25
I agree we should run the "clean" step as a finally step, even if "compile error" occurs. It is not required in case of "svn exception", I guess.

Btw, the exact command is "make distclean" ("make clean" target does not remove "Modules/Setup").
msg113480 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2010-08-09 21:29
> I guess, you missed what we are trying to convey.

No, I fully understand what happened. STILL,
a) I don't think this is a bug in the buildbot configuration, and
b) even if it was, I don't really have the time to investigate that
   in the coming weeks.
However, since you all seem to think it's urgent, I'll investigate
for ten more minutes.
msg113482 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2010-08-09 21:45
It turns out that build steps have an alwaysRun flag, which I have now enabled for the 'make clean' step.
History
Date User Action Args
2010-08-09 21:45:23loewissetstatus: open -> closed
resolution: fixed
messages: + msg113482
2010-08-09 21:29:06loewissetmessages: + msg113480
title: buildbot: if a compile error occurs, the "clean" step is skipped -> buildbot: if a compile error occurs, the "clean" step is skipped
2010-08-09 21:25:55floxsetmessages: + msg113478
2010-08-09 21:10:16orsenthilsetmessages: + msg113475
title: buildbot: if a compile error occurs, the "clean" step is skipped -> buildbot: if a compile error occurs, the "clean" step is skipped
2010-08-09 20:57:28loewissetmessages: + msg113470
title: buildbot: if a compile error occurs, the "clean" step is skipped -> buildbot: if a compile error occurs, the "clean" step is skipped
2010-08-09 20:43:50pitrousetpriority: normal -> high

messages: + msg113469
2010-08-09 20:27:09loewissetpriority: high -> normal

messages: + msg113465
2010-08-09 12:57:46pitrousetpriority: normal -> high
nosy: + loewis
2010-08-09 12:52:42floxlinkissue9545 dependencies
2010-08-09 12:51:29floxcreate