By default, the Bazel SDK fetches a Fuchsia IDK from a remote repository called CIPD, with a version specified in a manifest, for example https://fuchsia.googlesource.com/sdk-integration/+/refs/heads/main/bazel_rules_fuchsia/fuchsia/manifests/core_sdk.ensure
There are situations where a Fuchsia Platform developer needs to make changes in the platform and verify if they work on a SDK-based repository before actually submitting the change.
For this use case, we support a mode of development where the Bazel SDK directly fetches the Fuchsia SDK artifacts from a Fuchsia Platform tree. This document explains how.
If you don't have it yet, set the Fuchsia Platform tree with the appropriate product/bundle and kernel args. There is nothing special required for this workflow, so just use what you would use anyway for validating your changes.
For example:
fx set workstation_eng.qemu-x64 --release
Once you make your changes in Fuchsia, build the SDK:
fx build sdk
Or, if you use the experimental SDK: (has_experimental
flag is true in your fuchsia_sdk_repository
rule in WORKSPACE.bazel
)
fx build sdk sdk:driver
Set the LOCAL_FUCHSIA_PLATFORM_BUILD
variable and refresh the Bazel SDK:
export LOCAL_FUCHSIA_PLATFORM_BUILD=$HOME/fuchsia/$FUCHSIA_OUT_DIR tools/bazel sync --configure
Then you are ready to build your local code.
For example,
export LOCAL_FUCHSIA_PLATFORM_BUILD=$HOME/fuchsia/out/core.x64 # in OOT repository tools/bazel sync --configure tools/bazel build --config=fuchsia_x64 src:samples_repository # in Fuchsia platform source: # change something fx build sdk sdk:driver # in OOT repository tools/bazel sync --configure tools/bazel build --config=fuchsia_x64 src:samples_repository
Note that a few things will look different, with possible side effects: