#!/bin/bash # Copyright 2023 Google LLC # # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # Helper script to build skia with reclient. # This script does some setup and teardown for reclient build. # Use this like # $ ./tools/build_with_reclient.sh ninja -C out/Static -j 1000 set -eux cd $(dirname $(dirname $0)) # download reclient binary. echo 'infra/rbe/client/${platform}' 're_client_version:0.116.1.9128bc4-gomaip' > /tmp/reclient.ensure cipd ensure --root ./out/reclient --ensure-file /tmp/reclient.ensure # generate reproxy config. echo " instance=projects/rbe-chrome-untrusted/instances/default_instance service=remotebuildexecution.googleapis.com:443 server_address=unix:///tmp/reproxy.sock use_application_default_credentials=true proxy_log_dir=/tmp " > out/reproxy.cfg # download clang if [[ ! -d out/chromium-clang ]]; then mkdir -p out/chromium-clang ( cd out/chromium-clang git clone https://chromium.googlesource.com/chromium/src/tools/clang.git ) fi ./out/chromium-clang/clang/scripts/update.py # download reclient config corresponding to clang version revision=$(out/chromium-clang/clang/scripts/update.py --print-revision) echo 'infra_internal/rbe/reclient_cfgs/rbe-chrome-untrusted/chromium-browser-clang' "revision/$revision" > /tmp/reclient_cfgs.ensure cipd ensure --root ./out/reclient_cfgs --ensure-file /tmp/reclient_cfgs.ensure # generate args.gn using reclient case "${OSTYPE}" in linux*) mkdir -p out/.sysroot/usr ln -sf /usr/include out/.sysroot/usr/ ln -sf /usr/lib out/.sysroot/usr/ echo ' cc_wrapper="../reclient/rewrapper -exec_root ../../ -cfg ../reclient_cfgs/rewrapper_linux.cfg" cc="../third_party/llvm-build/Release+Asserts/bin/clang" cxx="../third_party/llvm-build/Release+Asserts/bin/clang++" skia_build_fuzzers=false skia_use_system_freetype2 = false extra_cflags=["--sysroot=../.sysroot"] ' > out/Static/args.gn ;; darwin*) ln -sf $(xcrun --sdk macosx --show-sdk-path) out/.sysroot echo ' cc_wrapper="../reclient/rewrapper -exec_root ../../ -cfg ../reclient_cfgs/rewrapper_mac.cfg" cc="../third_party/llvm-build/Release+Asserts/bin/clang" cxx="../third_party/llvm-build/Release+Asserts/bin/clang++" skia_build_fuzzers=false xcode_sysroot = "../.sysroot" ' > out/Static/args.gn ;; *) echo "${OSTYPE} is not supported to use reclient." exit 1 ;; esac # start reclient ./out/reclient/bootstrap -re_proxy=./out/reclient/reproxy -cfg=./out/reproxy.cfg # run given command. "$@" # stop reclient ./out/reclient/bootstrap -re_proxy=./out/reclient/reproxy -cfg=./out/reproxy.cfg -shutdown