New issue
Advanced search Search tips

Issue 845425 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Jul 5
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug



Sign in to add a comment

V8: Figure out which depot tools is used by auto-roller

Project Member Reported by machenb...@chromium.org, May 22 2018

Issue description

Follow up bug after  issue 843917 .

V8's auto-roller checks out chromium with v8:
https://ci.chromium.org/buildbot/client.v8.fyi/Auto-roll%20-%20deps/

The v8-side auto-roll script is called from the V8 inside Chrome:
https://logs.chromium.org/v/?s=chromium%2Fbb%2Fclient.v8.fyi%2FAuto-roll_-_deps%2F100271%2F%2B%2Frecipes%2Fsteps%2Froll_deps%2F0%2Fstdout

V8 pins depot_tools to use it from auto-roller scripts. But:
a) The bot doesn't seem to run the hooks. So the hook that disables the depot_tools auto-update is never run (if auto-update isn't disabled it will use ToT depot_tools always).
b) Syncing is probably not recursive. So the bot will sync the depot_tools pinned in Chromium, but not the one pinned in V8.

How does it even work? It seems to work somehow?!?

Minor follow up problem: If there is ever a breakage in depot_tools like  issue 843917 , V8 can't easily revert the pinned version in V8 for the auto-roller if the Chromium depot_tools are used...


 
Based on [1], it looks like depot_tools that is pinned in V8 is not checked out as part of Chromium. I assume this happens because recursedeps at [2] does not contain "src/v8". Adding it to this list is suboptimal since it will cause all other V8's DEPS to be checked out, which may significantly increase wasted disk space on some platforms, e.g. when target_os is set to android, the android_ndk and android_tools repos will be checked out, which requires additional 6GB of disk space.

OTH using Chromium's own depot_tools is suboptimal because it does not allow us to unbreak V8's builders without updating the pin in Chromium. In manual checkout one can edit .gclient file to manually add additional repos, so perhaps there is away to do that with bot_update and gclient recipe. I'll investigate that possibility.

As for which version of depot_tools IS used, looking at the log you've referenced [4], it seems PATH only contains depot_tools located at /mnt/data/b/depot_tools, which is the depot_tools checkout out by Buildbot. Normally the auto_roll.py script imports common_includes.py, which adds V8's depot_tools at [5], but that path does exist as part of the Chromium checkout (as explained above) and thus ignored. On LUCI this will break since no depot_tools is added to the PATH by default.


[1]: https://logs.chromium.org/v/?s=chromium%2Fbb%2Fclient.v8.fyi%2FAuto-roll_-_deps%2F100271%2F%2B%2Frecipes%2Fsteps%2Fbot_update%2F0%2Flogs%2Fjson.output%2F0
[2]: https://chromium.googlesource.com/chromium/src/+/4f5f0e82de38a3678bd7c48784c754b6bfed7390/DEPS#2105
[3]: https://chromium.googlesource.com/chromium/src/+/4f5f0e82de38a3678bd7c48784c754b6bfed7390/DEPS#525
[4]: https://logs.chromium.org/v/?s=chromium%2Fbb%2Fclient.v8.fyi%2FAuto-roll_-_deps%2F100271%2F%2B%2Frecipes%2Fsteps%2Froll_deps%2F0%2Fstdout
[5]: https://chromium.googlesource.com/v8/v8/+/c45f74e29f1caadeab2d3041cd56403a64096537/tools/release/common_includes.py#60
Cc: machenb...@chromium.org
After poking around, I've realized that we need a revision to be able to manually check out depot_tools, but can't find out at which reversion depot_tools is pinned in V8 without processing V8's DEPS. Instead, I've realized that we can add a new config replacing v8_tot, that configure Chromium solution not to checkout V8 at all and instead checkout it out as another solution, in which case it's DEPS will be processed. This of course still adds all unnecessary DEPS other than depot_tools, but we can selectively use this new config just for autoroller builders thereby avoiding checking out V8's DEPS anywhere else.

WIP CL: https://crrev.com/c/1074491 (trial run: https://ci.chromium.org/swarming/task/3db405e73644f110, which did checkout V8's DEPS, but somehow placed entire V8 checkout into [START_DIR]/v8 instead of [START_DIR]/src/v8 as I expected).
Labels: -Pri-3 Pri-2
Status: Started (was: Assigned)
Update: Posted http://shortn/_UplxozNaUH (sorry, internal only).
We could also change the auto-roller and let it check out a stand-alone V8 and a workdir Chromium side-by-side. Not sure if that's glitch-free.

We'd run the auto-roller script from the V8 checkout and its deport tools. We point it to the Chromium checkout for the rolling. It'd be cleaner than this V8-in-Chromium hack.
Thank you! This is a great idea and is much simpler. CL: https://crrev.com/c/1089330
Project Member

Comment 8 by bugdroid1@chromium.org, Jun 8 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/tools/build/+/b1e0be85ba8e02369440c7a934e9a5a570a16f62

commit b1e0be85ba8e02369440c7a934e9a5a570a16f62
Author: Sergiy Byelozyorov <sergiyb@chromium.org>
Date: Fri Jun 08 08:11:41 2018

[V8] Use full V8 checkout for running release scripts

R=machenbach@chromium.org

Bug:  845425 
Change-Id: If33b532abf66530a0a9334bd3f5e93fe828706a3
Reviewed-on: https://chromium-review.googlesource.com/1089330
Commit-Queue: Sergiy Byelozyorov <sergiyb@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>

[modify] https://crrev.com/b1e0be85ba8e02369440c7a934e9a5a570a16f62/scripts/slave/recipe_modules/v8/gclient_config.py
[modify] https://crrev.com/b1e0be85ba8e02369440c7a934e9a5a570a16f62/scripts/slave/recipes/v8/auto_roll_deps.expected/stale_roll.json
[modify] https://crrev.com/b1e0be85ba8e02369440c7a934e9a5a570a16f62/scripts/slave/recipes/v8/auto_roll_deps.py
[modify] https://crrev.com/b1e0be85ba8e02369440c7a934e9a5a570a16f62/scripts/slave/recipes/v8/auto_roll_deps.expected/inconsistent_state.json
[modify] https://crrev.com/b1e0be85ba8e02369440c7a934e9a5a570a16f62/scripts/slave/recipes/v8/auto_roll_deps.expected/stale_roll_experimental.json
[modify] https://crrev.com/b1e0be85ba8e02369440c7a934e9a5a570a16f62/scripts/slave/recipes/v8/auto_roll_deps.expected/standard_experimental.json
[modify] https://crrev.com/b1e0be85ba8e02369440c7a934e9a5a570a16f62/scripts/slave/recipes/v8/auto_roll_deps.expected/standard.json

Status: Fixed (was: Started)
This was fixed. Auto-roller is now using depot_tools DEPS-ed into V8.

Sign in to add a comment