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:
cxx_remote_wrapper.py: prefix wrapper for remote compiling C++
rustc_remote_wrapper.py: prefix wrapper for remote compiling Rust
remote_action.py: prefix wrapper for generic remote actions
fuchsia-reproxy-wrap.sh: automatically start/shutdown
reproxy (needed by
rewrapper) around any command. Used by
More details can be found by running with
cl_utils.py: generic command-line operation library
cxx.py: for understanding structure of C/C++ compile commands
fuchsia.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
rustc.py: for understanding structure of
rustc compile commands
fuchsia-rewrapper.cfg: rewrapper configuration
fuchsia-reproxy.cfg: reproxy configuration
action_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 tools
fetch_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
remotetool.sh: can lookup actions and artifacts in the RBE CAS. From: https://github.com/bazelbuild/remote-apis-sdks
reproxy_logs.sh: subcommand utility
diff: report meaningful difference between two reproxy logs
output_file_digest: lookup the digest of a remote built artifact
bandwidth: report total download and upload bytes from reproxy log
plot_download: plot download demand over the course of a build
rpl_tool.sh: tools that involve reproxy logs and remotetool together
expand_to_rpl: populate .rrpl with command and inputs -> .rpl
All tools have more detailed usage with
args.gn variables for RBE
build/toolchain/clang_toolchain.gni: uses RBE wrappers depending on configuration
build/rust/rustc_*.gni: uses RBE wrappers depending on configuration
upload_reproxy_logs.py: pushes RBE metrics and detailed logs to BigQuery.
pb_message_util.py: library for translating protobufs to JSON