blob: 742d503cf9ef4a94ce8c94ed2a929221b97f1f79 [file] [log] [blame] [view] [edit]
# Fuchsia samples using the Fuchsia SDK with Rust
**Note: Rust is not yet supported in the Fuchsia SDK.**
This repository contains instructions and source code to build, package and run
an example rust component which runs on Fuchsia using only the Fuchsia SDK.
## Requirements
1. Make sure this repository has the required submodules:
```
git submodule update --recursive --init
```
2. Run the bootstrap script that downloads the appropriate Bazel binary:
```
scripts/bootstrap.sh
```
3. Ensure that there are Fuchsia SSH keys in your host machine. You will need
them for running the Fuchsia emulator.
```
[[ -f "${HOME}/.ssh/fuchsia_ed25519" ]] || ssh-keygen -P "" -t ed25519 -f "${HOME}/.ssh/fuchsia_ed25519" -C "${USER}@$(hostname -f) Shared SSH Key for Fuchsia"
[[ -f "${HOME}/.ssh/fuchsia_authorized_keys" ]] || ssh-keygen -y -f "${HOME}/.ssh/fuchsia_ed25519" > "${HOME}/.ssh/fuchsia_authorized_keys"
```
## Build, run and test the samples
Now the repository is ready to build the samples.
1. Fetch the system images
```
tools/ffx product-bundle get workstation_eng.qemu-x64 --repository workstation-repo
```
> Note: if the product-bundle command above fails with an error message that
> states that there are multiple product bundles with the same name, you can either specify
> the fully qualified URL as printed in the error message that corresponds to
> your SDK version (use `tools/ffx sdk version` if needed), or you can wipe out
> old and unused product bundles in the pbms storage, which should be located
> in ~/.local/share/Fuchsia/ffx/pbms on Linux, or ~/Library/Fuchsia/ffx/pbms
> on MacOS.
2. Start the emulator
```
tools/ffx emu start workstation_eng.qemu-x64 --headless
```
3. The product bundle comes with on-demand packages in a separate repository.
Use the following command to register it with the emulator:
```
tools/ffx target repository register -r workstation-repo --alias fuchsia.com
```
4. watch the device log in a separate window
```
tools/ffx log --filter core/ffx-laboratory:hello_rust
```
5. Run the hello world component
```
tools/bazel run //src/hello_rust:pkg.component
```
Watch in the log that the message "Hello, Rust!" is printed. Modify the
Hello world message in [src/hello_rust/src/main.rs](src/hello_rust/src/main.rs), repeat this step
and see that the log shows the new message.
<!--
TODO: add tests
1. Run unit tests for samples
```
tools/bazel test --config=fuchsia_x64 src/hello_world:test_pkg
tools/bazel test --config=fuchsia_x64 src/echo:test_pkg
```
-->