#4862 closed defect (fixed)
BUILDBOT: configure phase not handled well
Reported by: | fingolfin | Owned by: | dhewg |
---|---|---|---|
Priority: | normal | Component: | --Other-- |
Version: | Keywords: | ||
Cc: | Game: |
Description
Looking at our buildbot, every build has at least two phases: A "configure" and a "build" phase. However, the "configure" phase apparently does nothing right now, even though IMO it should: I would expect that if the "configure" script is modified, then our buildbot would re-run it, with the currently active set of parameters, during the configure phase.
What happens instead is that nothing is done in the configure phase (always), and our build system takes care of re-running configure; see <http://buildbot.scummvm.org/buildbot/builders/trunk-lenny/builds/3924>.
This is bad for at least two reasons: 1) It's confusing that if one is looking for configure re-runs, then this information is *not* on the "configure phase" page 2) If we want to make changes to the configure params passed by buildbot to configure, there is currently no good way to get buildbot to do that.
We should look into fixing this up
Ticket imported from: #2989300. Ticket imported from: bugs/4862.
Change History (5)
comment:1 by , 15 years ago
comment:2 by , 15 years ago
tried to solve 1) with r48960 with the mentioned splitted-step/build-property approach. Let's wait and see...
comment:3 by , 15 years ago
Owner: | set to |
---|
comment:4 by , 15 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:5 by , 6 years ago
Component: | → --Other-- |
---|
I disliked 1) from day one, but unfortunately I didn't find a non-hackish way to do it... yet.
The problem is buildbot's slave and master architecture. While the RemoteCommand class is pure python code, it's executed on the master. Afaict there is no member you can overwrite to make python code run on the slave, like a simple "if os.stat('config.mk').st_mtime < os.stat('configure').st_mtime" we could use here ;)
See http://djmitche.github.com/buildbot/docs/current/reference/buildbot.process.buildstep.RemoteCommand-class.html
Our setup has only one master and one slave, and both on the same box. With that info, a quick and dirty way might be to check the slave build folder within the Configure class. But that's a nasty approach, because we don't even know the slave path, we would have to hardcode it. (The slave is completely independent of the master. It's a distinct setup, which could be anywhere within the filesystem).
It might be possible to split the Configure build step into two commands. The first just checks if config.mk is too old and stores that as a build property, and the second command uses that info in the start() method to return SKIPPED if a configure run is not necessary. But then again, it's not clear to me how to realise the first part too :\
The current approach is a result of "I tried, but didn't know any better". Suggestions welcome :)