blob: 213d4d511b9f01ac92a13502a93386daec5d423d [file] [log] [blame] [view]
# 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:
```posix-terminal
# 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
```
3. Run the following command to build Fuchsia:
```posix-terminal
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.
[build Rust]: https://ci.chromium.org/p/fuchsia/g/rust/console
## Prerequisites
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.
1. [Build a custom Rust toolchain](/docs/development/build/rust_toolchain.md)
for Fuchsia.
1. Complete the following guide to download the Fuchsia source:
[Get Fuchsia source code](/docs/get-started/get_fuchsia_source.md).
To confirm that jiri is in your PATH run <code>jiri -help</code>.
Note: The below commands assume `DEV_ROOT` is set to the parent directory of
your Fuchsia checkout.
## Build Fuchsia with your custom Rust toolchain
1. Change into your Fuchsia directory.
1. Run the following command to use the newly built toolchain:
```posix-terminal
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.
1. Run the following command to rebuild Fuchsia:
```posix-terminal
fx build
```