This guide explains how to build Fuchsia with a custom Rust compiler. This is useful if you need to build Fuchsia with a patched compiler, or a compiler built with custom options.
If all you need to do is use a different version than the one currently being used, most of this doc is not necessary. Fuchsia builders build Rust after every change to Rust's main branch.
-
Find the commit hash you want to use.
-
Run the following commands from your Fuchsia directory:
# Replace COMMIT with the full Rust commit hash. # This command updates the manifests in the integration repo, which you can # then commit or revert as necessary. fx roll-compiler --package rust git_revision:{{ '<var>' }}COMMIT{{ '</var>' }} # Fetch the package versions you specified and install them in `prebuilt/`. jiri fetch-packages -local-manifest
-
Run the following command to build Fuchsia:
fx build
The Fuchsia build now uses the updated compiler.
Note: A clean build is not necessary; the build automatically detects the new compiler version.
Prior to building Fuchsia with a custom Rust toolchain, you need to do the following:
Note: These instructions are for Debian-based systems, but you should use the correct package manager for your machine.
-
Build a custom Rust toolchain for Fuchsia.
-
Complete the following guide to download the Fuchsia source: Get Fuchsia source code. To confirm that jiri is in your PATH run
jiri -help
.Note: The below commands assume
DEV_ROOT
is set to the parent directory of your Fuchsia checkout.
-
Change into your Fuchsia directory.
-
Run the following command to use the newly built toolchain:
DEV_ROOT={{ '<var>' }}DEV_ROOT{{ '</var>' }} fx set core.x64 \ --args=rustc_prefix="\"$DEV_ROOT/rust/install/fuchsia-rust\"" \ --args=rustc_version_string='"1"' # plus other settings such as: # --with //bundles:kitchen_sink # --variant=coverage-rust # to enable coverage profiling of fuchsia binaries # --variant=host_coverage-rust # to enable coverage profiling of host binaries
Note:
rustc_version_string
can be any string, and it’s used to force a recompile after a custom toolchain changes. If you rebuild the toolchain, change the value so Rust targets get rebuilt. -
Run the following command to rebuild Fuchsia:
fx build