Path recipe module change breaks Skia bots
A CL to change the path recipe module (https://codereview.chromium.org/1919193002) landed yesterday caused breakages on Skia bots due to assumptions about how the bots are set up. In particular, the CL changed the way that "root" was defined and added the assumption that everything was checked out into /b. For Skia's bots, this is not always the case:
- Bots in the Golo do use /b
- Bots in the Skia lab have build.git checked out in /home/chrome-bot/buildbot/$SLAVENAME/build or C:\%SLAVE_NUM%\build for Windows. This is to support running multiple buildslaves on a single host, eg. for hosting multiple Android bots on the same machine.
- Bots in GCE have build.git checked out in /home/chrome-bot/storage/skia-repo/buildbot/$SLAVENAME/build. I don't remember why this is the case. Windows GCE instances use C:\%SLAVE_NUM%\build like our local bots.
In the past, the "root" path was relative; it was always the parent of build.git, so no matter where the checkout was on the machine, everything worked as expected. The above CL broke Skia bots in several ways:
- gclient cache now expected to be in /b/cache which does not exist on Skia bots. This breaks "gclient sync" on all bots.
- "depot_tools" path now set to /b/depot_tools which does not exist on Skia bots. This breaks "gsutil upload" on test/perf bots since those depend on gsutil inside the depot_tools checkout.
- swarming bots fail to isolate the recipes because they're looking in /b which does not exist. This manifested as a failed "makedirs /b/third_party/infra" step.
Eventually, we'd like to change to use /b, but that represents a significant effort (manually changing many machines, re-creating disk images, rewriting setup scripts, etc etc) and so far there's been no pressure to do so. Additionally, running a single slave in /b simply will not work for machines which host multiple buildslaves (eg. Android). We're currently in the middle of migrating all of our bots to use swarming. After that transition takes place (hopefully end of quarter 2), we should be in a position where this is possible. Until then, we need to keep things working as-is.
As an aside, I don't really understand how recipes are supposed to be run locally in the new world with the /b assumption. Does that mean that all of my recipe work has to be done in /b on my local machine?
Comment 1 by phajdan.jr@chromium.org
, Apr 27 2016