commit | 76d785141ae333d477eeb0e52a20360ec198702e | [log] [tgz] |
---|---|---|
author | Rob Tsuk <robtsuk@google.com> | Mon Jul 31 07:01:36 2017 -0700 |
committer | Rob Tsuk <robtsuk@google.com> | Mon Jul 31 15:25:42 2017 -0700 |
tree | 6f1ef4800d58a0f16aac6dcb3f3a2eaffa47886e | |
parent | 71caaec6def8a1ef7c641aff4626d5268147a4a4 [diff] |
Disable strict host key checking Strict host key checking can cause scp to hang without a useful error message. Change-Id: I8f1907c87117746ce7e0a4e486890bbe4ba860d1
Fargo is a prototype Fuchsia-specific wrapper around Cargo.
fargo v0.1.0 USAGE: fargo [FLAGS] [SUBCOMMAND] FLAGS: --debug-os Use debug user.bootfs and ssh keys -h, --help Prints help information -V, --version Prints version information -v Print verbose output while performing commands SUBCOMMANDS: build Build binary targeting Fuchsia device or emulator build-tests Build for Fuchsia device or emulator cargo Run a cargo command for Fuchsia. Use -- to indicate that all following arguments should be passed to cargo. help Prints this message or the help of the given subcommand(s) restart Stop all Fuchsia emulators and start a new one run Run binary on Fuchsia device or emulator ssh Open a shell on Fuchsia device or emulator start Start a Fuchsia emulator stop Stop all Fuchsia emulators test Run unit tests on Fuchsia device or emulator
The fargo-test
directory contains something one can use to test-drive.
Since at the moment fargo requires the FUCHSIA_ROOT environmental variable be set to the path to a Fuchsia release build, the first step is to build Fuchsia.
The Fuchsia Getting Started instruction are what you need. Since a release build is what fargo expects to find you‘ll want to pass --release to fset. The Rust components that fargo needs to cross compile are also not built by default, so you’ll have to select something other than the default modules.
If you are planning to use Qemu to run your Fuchsia Rust code, a good choice for modules is below, in env.sh form or underlying script as one prefers.
fset x86-64 --release --modules boot_headless,rust
or
packages/gn/gen.py -m boot_headless,rust --release
What boot_headless
does in this instance is prevent the user shell from being launched after boot. Since the user shell requires Mozart, and Mozart has a hard dependency on the Vulkan graphics and compute API, and Qemu cannot support Vulkan, boot_headless
is pretty much a requirement for Qemu.
Once this build is complete, clone and build fargo.
git clone https://fuchsia.googlesource.com/fargo cd fargo cargo install
Fargo uses ssh to communicate between your host computer and either Qemu or a real device to copy build results and execute them. For Qemu there is a bit of tricky set up to do.
For problems getting the Fuchsia build to complete, the #fuchsia IRC channel on freenode is the best bet.
For fargo itself, that IRC channel can also work of one of the more Rust-aware folks happens to be paying attention. More reliable is the rust-fuchsia Google group.
The goal is to transition fargo to using something like an SDK instead.
Currently fargo does not support building artifacts that need additional libraries.