Build Fuchsia with a custom Rust toolchain

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.

Use another version of Rust

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.

  1. Find the commit hash you want to use.
  2. 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:COMMIT
    # Fetch the package versions you specified and install them in `prebuilt/`.
    jiri fetch-packages -local-manifest
    
  3. Run the following command to build Fuchsia:

    fx build
    

    The Fuchsia build now uses the updated compiler.

Prerequisites

Prior to building Fuchsia with a custom Rust toolchain, you need to do the following:

  1. Build a custom Rust toolchain for Fuchsia.

  2. Complete the following guide to download the Fuchsia source: Get Fuchsia source code. To confirm that jiri is in your PATH run jiri -help.

Build Fuchsia with your custom Rust toolchain

  1. Change into your Fuchsia directory.

  2. Run the following command to use the newly built toolchain:

    DEV_ROOT=DEV_ROOT
    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
    
  3. Run the following command to rebuild Fuchsia:

    fx build