The GN C++ Frontend SDK samples only support Linux hosts and the GN build system.
Fuchsia devices or emulators must have one of the following CPU architectures to run Fuchsia:
x64
arm64
-
Install required dependencies:
sudo apt-get install curl unzip python2
-
Clone the samples repo and submodules:
git clone https://fuchsia.googlesource.com/samples --recursive
Note: If you have already cloned this repo without the
--recursive
flag you can download the submodules:git submodule update --init --recursive
-
Change directory to the root of the repo and run the tests:
cd samples ./scripts/setup-and-test.sh
This script:
- Downloads additional build tool dependencies (may take 5-30 minutes)
- Builds the samples
- Runs tests on your host
If the script fails with an error, address the issue and run the script again.
Note: This guide assumes a x64
Fuchsia compatible device. For Fuchsia compatible ARM devices
replace x64
with arm64
and generic-x64
and generic-arm64
or other compatible image name in
the instructions below. For a full list of available images install gsutil
and run: gsutil ls gs://fuchsia/development/$(gsutil cat gs://fuchsia/development/LATEST_LINUX)/images
-
Setup your device and install Zedboot: Find the instructions for your device (e.g. a NUC or Chromebook) to setup and install Zedboot on your device.
-
From the
samples
directory, create Ninja build files for the samples by running the following command:buildtools/linux64/gn gen out/generic-x64 --args='target_os="fuchsia" target_cpu="x64"'
-
Build the samples by executing the Ninja build files you created in the previous step:
buildtools/linux64/ninja -C out/generic-x64
-
Make sure your Fuchsia device is booted to Zedboot and connected to your host machine the pave your device:
third_party/fuchsia-sdk/bin/fpave.sh --image generic-x64
-
Start a package server from your host machine:
third_party/fuchsia-sdk/tools/x64/fserve --image generic-x64
-
To publish your packages open another another terminal window and run:
third_party/fuchsia-sdk/tools/x64/fpublish out/generic-x64/hello_far.far third_party/fuchsia-sdk/tools/x64/fpublish out/generic-x64/rot13_server.far third_party/fuchsia-sdk/tools/x64/fpublish out/generic-x64/rot13_client.far
-
Run the sample components on your Fuchsia device:
-
SSH to the device:
third_party/fuchsia-sdk/tools/x64/fssh
-
Once SSHed into the device, run the hello world component on the device:
run fuchsia-pkg://fuchsia.com/hello_world#meta/hello_world.cmx
-
Run the rot13 server:
run fuchsia-pkg://fuchsia.com/rot13_server#meta/rot13_server.cmx
-
In a new terminal window on your host machine, open a new ssh connection to your device, and run the rot13 client:
third_party/fuchsia-sdk/tools/x64/fssh run fuchsia-pkg://fuchsia.com/rot13_client#meta/rot13_client.cmx
-