devops: introduce goma infrastructure for Chromium builds (#5377)

This patch adds `//browser_patches/chromium/goma.sh` script that
manages goma to build chromium.
This commit is contained in:
Andrey Lushnikov 2021-02-09 08:33:39 -08:00 committed by GitHub
parent 0871a9cfd9
commit ad557dc6da
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 69 additions and 8 deletions

View file

@ -1,2 +1,3 @@
/output
/depot_tools
/electron-build-tools

View file

@ -6,7 +6,7 @@ trap "cd $(pwd -P)" EXIT
cd "$(dirname $0)"
USAGE=$(cat<<EOF
usage: $(basename $0) [--mirror|--mirror-linux|--mirror-win32|--mirror-win64|--mirror-mac|--compile-mac-arm64]
usage: $(basename $0) [--mirror|--mirror-linux|--mirror-win32|--mirror-win64|--mirror-mac|--compile-mac-arm64|--compile-linux|--compile-win32|--compile-win64|--compile-mac]
Either compiles chromium or mirrors it from Chromium Continuous Builds CDN.
EOF
@ -121,6 +121,9 @@ compile_chromium() {
"swiftshader"
"v8_context_snapshot.bin"
)
else
echo "ERROR: unknown command, use --help for details"
exit 1
fi
# Get chromium SHA from the build revision.
@ -163,15 +166,29 @@ EOF
echo 'target_cpu = "x86"' >> ./out/Default/args.gn
fi
if [[ $1 == "--compile-win"* ]]; then
/c/Windows/System32/cmd.exe "/c $(cygpath -w ${SCRIPT_PATH}/buildwin.bat)"
else
gn gen out/Default
autoninja -C out/Default chrome
if [[ ! -z "$USE_GOMA" ]]; then
echo 'use_goma = true' >> ./out/Default/args.gn
echo "goma_dir = '${SCRIPT_PATH}/electron-build-tools/third_party/goma'" >> ./out/Default/args.gn
fi
if [[ $1 == "--compile-linux" ]]; then
autoninja -C out/Default chrome_sandbox clear_key_cdm
if [[ $1 == "--compile-win"* ]]; then
if [[ -z "$USE_GOMA" ]]; then
/c/Windows/System32/cmd.exe "/c $(cygpath -w ${SCRIPT_PATH}/buildwin.bat)"
else
/c/Windows/System32/cmd.exe "/c $(cygpath -w ${SCRIPT_PATH}/buildwingoma.bat)"
fi
else
gn gen out/Default
if [[ $1 == "--compile-linux" ]]; then
TARGETS="chrome chrome_sandbox clear_key_cdm"
else
TARGETS="chrome"
fi
if [[ -z "$USE_GOMA" ]]; then
autoninja -C out/Default $TARGETS
else
ninja -j 200 -C out/Default $TARGETS
fi
fi
# Prepare resulting archive.

View file

@ -0,0 +1,2 @@
CALL gn gen out/Default
CALL ninja -j 200 -C out/Default chrome

View file

@ -0,0 +1,41 @@
#!/bin/bash
set -e
set +x
trap "cd $(pwd -P)" EXIT
cd "$(dirname $0)"
if [[ ! -d ./electron-build-tools ]]; then
git clone --single-branch --branch msft-goma https://github.com/electron/build-tools/ electron-build-tools
cd electron-build-tools
npm install
mkdir -p third_party
./src/e update-goma msftGoma
cd ..
fi
cd electron-build-tools
if [[ $1 == "--help" ]]; then
echo "$(basename $0) [login|start|stop|--help]"
exit 0
elif [[ $1 == "login" ]]; then
python ./third_party/goma/goma_auth.py login
elif [[ $1 == "start" ]]; then
if [[ ! -z "$GOMA_LOGIN_COOKIE" ]]; then
echo "$GOMA_LOGIN_COOKIE" > "$HOME/.goma_oauth2_config"
fi
if [[ ! -f "$HOME/.goma_oauth2_config" ]]; then
echo "ERROR: goma is not logged in!"
echo "run '$(basename $0) login'"
exit 1
fi
python ./third_party/goma/goma_ctl.py ensure_start
elif [[ $1 == "stop" ]]; then
python ./third_party/goma/goma_ctl.py stop
else
echo "ERROR: unknown command - $1"
echo "Use --help to list all available commands"
exit 1
fi