This directory contains support for building the Fuchsia tree with build actions running on RBE (remote build execution).
The top-level remote execution wrappers are used as command prefixes:
reclient_cxx.sh
: prefix wrapper for remote compiling C++cxx_remote_wrapper.py
: is a similar heavier wrapper with additional features and workarounds.rustc_remote_wrapper.py
: prefix wrapper for remote compiling and linking Rustcxx_link_remote_wrapper.py
: prefix wrapper for remote ilnking C++prebuilt_tool_remote_wrapper.py
: prefix wrapper for simple toolsremote_action.py
: prefix wrapper for generic remote actionsfuchsia-reproxy-wrap.sh
: automatically start/shutdown reproxy
(needed by rewrapper
) around any command. Used by fx build
.dlwrap.py
: downloads artifacts from RBE's CAS using download stub filesMore details can be found by running with --help
.
cl_utils.py
: generic command-line operation librarycxx.py
: for understanding structure of C/C++ compile commandsfuchsia.py
: Fuchsia-tree specific directory layouts and conventions. Parties interested in re-using wrapper scripts found here should expect to replace this file.output_leak_scanner.py
: Check that commands and outputs do not leak the name of the build output directory, for better caching outcomes.relativize_args.py
: Attempt to transform commands with absolute paths into equivalent commands with relative paths. This can be useful for build systems that insist on absolute paths, like cmake
.rustc.py
: for understanding structure of rustc
compile commandstablefmt.py
: utilities for printing readable ASCII tablestextpb.py
: generic protobuf text parsing libraryfuchsia-rewrapper.cfg
: rewrapper configurationfuchsia-reproxy.cfg
: reproxy configurationaction_diff.sh
: recursively queries through two reproxy logs to root-cause differences between output and intermediate artifacts. This is useful for examining unexpected digest differences and cache misses.bbtool.py
: buildbucket related toolsfetch_reproxy_log
: retrieve .rrpl log, possibly from subbuild.bb_fetch_rbe_cas.sh
: retrieve a remote-built artifact from the RBE CAS using a buildbucket id and the path under the build output directory.detail-diff.sh
: attempts to compare human-readable representations of files, including some binary files, by using tools like objdump
.remotetool.sh
: can lookup actions and artifacts in the RBE CAS. From: https://github.com/bazelbuild/remote-apis-sdksreproxy_logs.sh
: subcommand utilitydiff
: report meaningful difference between two reproxy logsoutput_file_digest
: lookup the digest of a remote built artifactbandwidth
: report total download and upload bytes from reproxy logplot_download
: plot download demand over the course of a buildrpl_tool.sh
: tools that involve reproxy logs and remotetool togetherexpand_to_rpl
: populate .rrpl with command and inputs -> .rplAll tools have more detailed usage with --help
.
build/toolchain/rbe.gni
: global args.gn
variables for RBE
build/toolchain/clang_toolchain.gni
and build/toolchain/zircon/zircon_toolchain.gni
: use RBE wrappers depending on configuration
build/rust/rustc_*.gni
: uses RBE wrappers depending on configuration
build_summary.py
: If your environment sets FX_BUILD_RBE_STATS=1
, this script will be run after each build and display a summary of cache and download metrics.upload_reproxy_logs.py
: pushes RBE metrics and detailed logs to BigQuery.fx build-metrics
.pb_message_util.py
: library for translating protobufs to JSON