Files
chromium_depot_tools/autoninja
Bruce Dawson b7ddc5a009 Check whether goma is running when it is enabled
One of the mistakes one can make when running ninja is having goma
enabled (use_goma=true in args.gn) but not having goma running. This can
lead to ~1,000 failed compile steps, which is messy.

This change teaches autoninja.py to check whether goma is running. If
not then it tells autoninja to just print a warning message. The
check costs roughly 30 ms which seems reasonable.

In fact, because this change also switches away from vpython (necessary
to use python3 to use subprocess.run) it actually runs about 600 ms
_faster_ than before this change.

If build acceleration is requested through use_rbe then no checking for
whether the service is running is done. That could be added in the
future.

autoninja.py could auto-start goma but that is error prone and has
limited additional value.

This was tested on Linux, OSX, and Windows.

Bug: 868590, b/174673874
Change-Id: Ie773e574878471e5136b9b82d52f86af3d848318
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/2627014
Commit-Queue: Bruce Dawson <brucedawson@chromium.org>
Reviewed-by: Yoshisato Yanagisawa <yyanagisawa@google.com>
2021-01-14 19:40:04 +00:00

37 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# Copyright (c) 2017 Google Inc. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Set unique build ID.
AUTONINJA_BUILD_ID="$(vpython -c "import uuid; print(uuid.uuid4())")"
export AUTONINJA_BUILD_ID
if [ "$NINJA_SUMMARIZE_BUILD" == "1" ]; then
export NINJA_STATUS="[%r processes, %f/%t @ %o/s : %es ] "
fi
# Execute whatever is printed by autoninja.py.
# Also print it to reassure that the right settings are being used.
command=$(python3 "$(dirname -- "$0")/autoninja.py" "$@")
if [ "$NINJA_SUMMARIZE_BUILD" == "1" ]; then
echo "$command"
fi
if eval "$command"; then
if [ "$NINJA_SUMMARIZE_BUILD" == "1" ]; then
python "$(dirname -- "$0")/post_build_ninja_summary.py" "$@"
fi
# Collect ninjalog from googler.
python "$(dirname -- "$0")/ninjalog_uploader_wrapper.py" --cmd $command
exit
fi
# Collect ninjalog from googler.
python "$(dirname -- "$0")/ninjalog_uploader_wrapper.py" --cmd $command
# Return an error code of 1 so that if a developer types:
# "autoninja chrome && chrome" then chrome won't run if the build fails.
exit 1