Opened 8 years ago

Closed 8 years ago

Last modified 7 years ago

#52765 closed enhancement (fixed)

buildbot: implement "successcache"

Reported by: ryandesign (Ryan Carsten Schmidt) Owned by: admin@…
Priority: Normal Milestone:
Component: buildbot/mpbb Version:
Keywords: buildbot Cc: mojca (Mojca Miklavec), mkae (Marko Käning), larryv (Lawrence Velázquez)
Port:

Description

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)

comment:1 Changed 8 years ago by mojca (Mojca Miklavec)

Keywords: buildbot added

comment:2 Changed 8 years ago by mkae (Marko Käning)

Cc: mkae added

comment:3 Changed 8 years ago by larryv (Lawrence Velázquez)

Cc: larryv added

comment:4 Changed 8 years ago by larryv (Lawrence Velázquez)

comment:5 Changed 8 years ago by jmroot (Joshua Root)

Resolution: fixed
Status: newclosed

In 426f9e7/mpbb:

add successcache support to mpbb

Check if the archive for the requested port exists in its installed
location, and if so, simply skip installing.

Do the same for each dependency. Dependencies are still built if not
already installed (even if the requested port is somehow already
installed), so their archives can be uploaded.

Deactivate all ports between builds when installing dependencies.
Activate all the dependencies after they are all installed iff the
requested port will need to be built.

Fixes: #52765

comment:6 Changed 7 years ago by neverpanic (Clemens Lang)

Component: server/hostingbuildbot/mpbb
Note: See TracTickets for help on using tickets.