New issue
Advanced search Search tips

Issue 820653 link

Starred by 2 users

Issue metadata

Status: Available
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

Support multiple patches in bot_update

Project Member Reported by dtu@chromium.org, Mar 10 2018

Issue description

In Pinpoint, when we're bisecting to find the cause of a performance regression, we often run into commit ranges where the test is busted. To continue bisecting, we automatically apply a fix the failing range.

Sometimes, multiple failures overlap. But we have no way to apply multiple patches, since bot_update / buildbucket only supports builds with one patch applied.
 
Cc: ehmaldonado@chromium.org aga...@chromium.org
Components: Infra>Platform
+agable@ +ehmaldonado@ who may also have strong opinions on bot_update.

From my PoV, you can implement this yourself in your own recipe:
 * bot_update to checkout needed revision
 * for patch in patches:
      git fetch <patch.ref>
      git cherry-pick FETCH_HEAD
Status: Available (was: Untriaged)

Comment 3 by dtu@chromium.org, Mar 13 2018

We also want to support patches in dependent repositories, e.g. catapult, v8, skia, angle. Doing it in our own recipe would work for us, as long as we can get dependent repositories to work as well.
Getting it work for deps is more work because (in order of difficulty):
a) you need to figure out the path where DEPS-ed in project lives based on Gerrit project name.
b) for main gclient project (aka chromium/src) you apply patches then do gclient sync. For DEPS-ed in projects, you probably need to:
  1. apply all patches to chromium/src
  2. gclient sync
  3. apply all patches other than chromium/src.
c) but b) doens't support recursive DEPS (ie if say catapult had its own DEPS. If you need that, it's even more work :(
This is something I believe bot_update should support.
In the meantime:
a) 'gclient revinfo --url <project_url>' might help:
$ gclient revinfo --url https://chromium.googlesource.com/angle/angle.git
src/third_party/angle: https://chromium.googlesource.com/angle/angle.git@888081d59aae6bb4b2322501d84bd645b8a8c6de
You can get the output in json format as well.
b) I think this should work:
1. Apply all patches and commit.
2. gclient sync
c) I think 'b)' above would support recursive DEPS.
Components: Infra>SDK

Sign in to add a comment