Commit Graph

12 Commits (5a93263d930cc4cb91e76ebb376b960864d413cd)

Author SHA1 Message Date
Ben Pastene 8d2d507a49 Add a method to gsutil recipe_module to disable multiprocessing on mac
In https://crbug.com/1327371, we started encountering hanging gsutil
calls. These were triggered under very specific circumstances, but
were essentially due to a multi-processing bug in python on MacOS:
https://bugs.python.org/issue33725

When running gsutil on mac, it explicitly suggests disabling
multi-processing for this reason:
https://source.chromium.org/chromium/chromium/src/+/main:third_party/catapult/third_party/gsutil/gslib/command.py;drc=3a12d6ccdec28da8bda09d9ff826aae1f9504e59;l=1331

So this CL simply puts that suggestion into practice. There are two
options for doing so: adding a line to an active Boto file, or adding
a "-o" arg to every gsutil invocation. Since chromium has multiple
copies of gsutil and multiple different locations where `gsutil` is
invoked, the latter option is considered intractable.

Instead, we choose the Boto file option by adding a context manager
to the gsutil recipe module that will insert a custom Boto file into
the environment that only disables multi-threading. Due to the fact
that the BOTO_PATH env var takes multiple paths, we can safely
incorporate both our custom Boto along with LUCI's per-build Boto file
in the same gsutil invocation. And when the context manager exits, the
environment should revert back to its original state.

Chromium incorporates this method in crrev.com/c/3662023. See it take
effect during the "gclient runhooks" step in this led build:
https://ci.chromium.org/swarming/task/5b0c5174e70cb010?server=chromium-swarm.appspot.com

Bug: 1327371
Change-Id: I75cfdf16d0ec023bf81ea57991dde996694a46c6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/3661949
Reviewed-by: Josip Sokcevic <sokcevic@google.com>
Commit-Queue: Ben Pastene <bpastene@chromium.org>
3 years ago
Aravind Vasudevan e210b54290 Use py3 in gsutil receipe module
Manual Recipe Change: https://crrev.com/c/3460620

Recipe-Manual-Change: build
Recipe-Nontrivial-Roll: build_limited
Recipe-Nontrivial-Roll: chrome_release
Recipe-Nontrivial-Roll: chromiumos
Recipe-Nontrivial-Roll: infra
Bug: 1289280
Change-Id: Ibdadf1eee3d2d5f385f520340a4f4bd8844f7bbd
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/3440919
Reviewed-by: Josip Sokcevic <sokcevic@google.com>
Reviewed-by: Gavin Mak <gavinmak@google.com>
Commit-Queue: Aravind Vasudevan <aravindvasudev@google.com>
3 years ago
Gavin Mak 7d3c9f6d1f Add python3 support to gsutil recipe module
Bug: 1227140
Change-Id: I2a27289335c66f34adaa47be1e9fd0fd13abcc56
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/3010716
Commit-Queue: Anthony Polito <apolito@google.com>
Reviewed-by: Anthony Polito <apolito@google.com>
4 years ago
Quinten Yearsley b674f8a277 Edit depot_tools recipe_modules docstrings for consistency
Change-Id: I454e9c90d3159598ae34d97d22c96b9d20d55f80
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/2521656
Reviewed-by: Andrii Shyshkalov <tandrii@google.com>
Commit-Queue: Quinten Yearsley <qyearsley@chromium.org>
5 years ago
Alex Drexler 28be1ff854 Use console url for recursive gsutil operations.
The storage.* links do not work unless an individual object is
specified. This isn't the case for recursive upload/copy operations.

When uploading multiple objects recursively, we should use the console
link instead.

Bug: None
Test: Updated recipe expectations.
Recipe-Nontrivial-Roll: build
Change-Id: I511f04f367f6c20c538b3c2093a40807323d7b75
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/2118421
Reviewed-by: Robbie Iannucci <iannucci@chromium.org>
Commit-Queue: Alex Drexler <adrexler@google.com>
5 years ago
Marc-Antoine Ruel 8e57b4bc55 python3 improvements
Ran:
  vi $(git grep --name-only iteritems | grep -v third_party)
  vi $(git grep --name-only itervalues | grep -v third_party)
  vi $(git grep --name-only 'print ' | grep -v third_party)

and edited the files quickly with adhoc macros. Then ran in recipes/:
  ./recipes.py test train

There was only a small subset of files that had been updated to use
six.iteritems() and six.itervalues(). Since the dataset size that is
being used in gclient is small (pretty much always below 200 items),
it's better to just switch to .items() right away and take the temporary
performance hit, so that we don't need to come back to rewrite the code.

Recipe-Nontrivial-Roll: build
Bug: 984182
Change-Id: I5faf11486b66b0d73c9098ab0f2ce1b15a45c53e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/1854900
Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org>
Reviewed-by: Edward Lesmes <ehmaldonado@chromium.org>
Auto-Submit: Marc-Antoine Ruel <maruel@chromium.org>
6 years ago
George Engelbrecht 30f9664b48 Add 'stat' to gsutil module.
In support of the signing rework we're going to want to have
the signers keep track of the calculated hash to ensure that
we don't have a TOCTOU type issue. This commit adds the stat
command to the gsutil module so that we can ask gs a files hash.

Change-Id: Ib35d1541292a18fbfc26fab50f594c682ba4109d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/1754262
Reviewed-by: Robbie Iannucci <iannucci@chromium.org>
Commit-Queue: George Engelbrecht <engeg@google.com>
6 years ago
Robert Iannucci fef79d40ae [recipe_modules/gsutil] Fix docstring and potential error in name derivation.
This caused a bit of confusion for a customer who thought that they were
forbidden from passing Path objects in cmd.

R=tandrii@chromium.org

Change-Id: I352a6d5be75f48dcc0c8a8c92d6921359585ed48
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/1536493
Commit-Queue: Robbie Iannucci <iannucci@chromium.org>
Commit-Queue: Andrii Shyshkalov <tandrii@chromium.org>
Auto-Submit: Robbie Iannucci <iannucci@chromium.org>
Reviewed-by: Andrii Shyshkalov <tandrii@chromium.org>
6 years ago
Robert Iannucci efc7e91fa7 [recipes] Manual roll.
Update "import DEPS" syntax and package_repo_resource.

recipe_engine:
  https://crrev.com/a42dce4e0b0db8bd6b7688030e723197919306db [engine] Rewrite/simplify loading infrastructure. (iannucci@chromium.org)

R=jchinlee@chromium.org, martiniss@chromium.org, tandrii@chromium.org

Recipe-Manual-Change: skia
Recipe-Manual-Change: skiabuildbot
Recipe-Manual-Change: build
Recipe-Manual-Change: build_limited_scripts_slave
Recipe-Manual-Change: infra
Recipe-Manual-Change: release_scripts
Bug: 914992
Change-Id: Ie3a3be9124e1ca4abd5e79af2f8c946b3ce906ff
Reviewed-on: https://chromium-review.googlesource.com/c/1464761
Commit-Queue: Robbie Iannucci <iannucci@chromium.org>
Reviewed-by: Stephen Martinis <martiniss@chromium.org>
Reviewed-by: Andrii Shyshkalov <tandrii@chromium.org>
6 years ago
Ben Pastene 9340ca0986 Allow gsutil recipe_module calls to not always be infra_steps.
I'm writing a recipe that makes heavy use of gsutil's ls and cat, and
some of the calls are expected to fail. So this allows the user to make
those that fail do so as normal steps.

R=iannucci, tandrii

Bug: 866062
Change-Id: I4c9cdcb77c00afd4ab8fefd146f22fa94fcc37d7
Reviewed-on: https://chromium-review.googlesource.com/c/1325332
Reviewed-by: Andrii Shyshkalov <tandrii@chromium.org>
Commit-Queue: Ben Pastene <bpastene@chromium.org>
7 years ago
Michael Achenbach 3c023259d7 [gsutil] Consistently return recipe step result
Obviates need to call api.step.active_result by callers.

Bug: 711249
Change-Id: Ibd3278df01fc8f9d7cc73eacc72d9fc57578808d
Reviewed-on: https://chromium-review.googlesource.com/1127372
Reviewed-by: Sergiy Byelozyorov <sergiyb@chromium.org>
Reviewed-by: Andrii Shyshkalov <tandrii@chromium.org>
Commit-Queue: Andrii Shyshkalov <tandrii@chromium.org>
7 years ago
Paweł Hajdan, Jr f14709556d Move recipes to their own subdirectory
This will help remove confusion when depot_tools' recipes.py
ends up in PATH.

BUG=699120

Change-Id: Id4c21b0cc6bb022ea2c21145abe76bebb0a8d9c1
Reviewed-on: https://chromium-review.googlesource.com/458430
Commit-Queue: Paweł Hajdan Jr. <phajdan.jr@chromium.org>
Reviewed-by: Robbie Iannucci <iannucci@chromium.org>
8 years ago