buildbot: implement "successcache"
The buildbot should not attempt to install a port if it has already been installed. This situation might arise if a commit is made that only modifies a portfile's whitespace but the port was already built successfully on the buildbot before, or if some but not all of a port's subports are updated (e.g. the php port). This currently just wastes potentially a lot of time thrashing the disk activating and deactivating ports (e.g. the leopard-ppc-legacy builder can take over a day to process an update to the php port).
We just need to check if the port's archive file already exists on disk. The old macOS forge buildbot did this. We can borrow code for this from the old buildports script.
An open question for me is where to do this check: in portwatcher, or in portbuilder, or both? I would say we certainly need it in portbuilder. Doing it in portwatcher also would have advantages. For example, if portwatcher sees that 226 of the 264 subports of php have already been built, it would save a lot of time to only schedule the 38 needed portbuilder builds. And we eventually want to be able to do a build of "all" ports on each builder, but not waste time processing ports that have already been installed. On the other hand, that wouldn't give portbuilder a chance to upload possibly missed archives, as Mojca suggested to do in #51995.
Change History (6)
Resolution: |
→ fixed
|
Status: |
new →
closed
|
Component: |
server/hosting →
buildbot/mpbb
|
Josh to the rescue: https://github.com/macports/mpbb/pull/1