This repository contains instructions and source code to build, package and run the Intel Wifi driver for Fuchsia using the Fuchsia Bazel SDK.
You will need the SDK with the driver development tools and libraries. Currently this is produced manually in the Fuchsia tree. You can reproduce them with one build for qemu.x64 with the SDK archives:
fx --dir=out/qemu set core.qemu-x64 --args=build_sdk_archives=true \ --args='dev_bootfs_labels=["//products/kernel_cmdline:devmgr.enable-ephemeral--true"]' fx build :default sdk sdk:ddk
And a different build is currently required for creating the product bundle:
fx --dir=out/qemupbm set core.qemu-x64 \ --args='dev_bootfs_labels=["//products/kernel_cmdline:devmgr.enable-ephemeral--true"]' fx build :default sdk
This is not yet a complete nor maintained Bazel integration, and it is not guaranteed to work beyond the samples in this repository. It is also not the final developer experience and should not be mirrored in another repository as it will change quite often until it settles.
scripts/bootstrap.sh \ --sdk-local ~/fuchsia/out/qemu \ --product-bundle-local ~/fuchsia/out/qemupbm
Adjust the paths above accordingly.
Repeat the step above whenever you want to use a new version of the SDK/DDK and emulator images. It is harmless to execute it repeatedly.
tools/ffx emu start --net tap -H
Let the emulator know where are the system packages for on-demand loading:
tools/ffx repository add-from-pm bazel-iwlwifi/external/fuchsia_sdk/amber-files tools/ffx target repository register --alias fuchsia.com --repository devhost
TODO(fxbug.dev/92055): the emulator should register the sdk packages automatically. Manual add-from-pm and target repository register should not be needed.
scripts/build.sh third_party/iwlwifi/platform:fuchsia_device
This command will build the driver and make it available as a package on a local Fuchsia repository.
tools/ffx repository add-from-pm -r iwlwifi_driver_repo bazel-bin/third_party/iwlwifi/iwlwifi_driver_repo tools/ffx target repository register -r iwlwifi_driver_repo
TODO(fxbug.dev/92052): ffx does not play nice with the repository created by Bazel, probably because Bazel removes the write permission so that external players don't break the hermeciticy of the build. As a consequence, ffx requires ‘add-from-pm’ and ‘target repository register’ every time a new package is published.
tools/ffx log
Now you are ready to register the driver.
tools/ffx driver register fuchsia-pkg://iwlwifi_driver_repo/iwlwifi#lib/libcore.so
scripts/build.sh third_party/iwlwifi:driver_repository
This command will build the driver and make it available as a package on a local Fuchsia repository.
tools/ffx repository add-from-pm -r fuchsiadrivers.com bazel-bin/third_party/iwlwifi/fuchsiadrivers.com.repo tools/ffx target repository register -r fuchsiadrivers.com
TODO(fxbug.dev/92052): ffx does not play nice with the repository created by Bazel, probably because Bazel removes the write permission so that external players don't break the hermeciticy of the build. As a consequence, ffx requires ‘add-from-pm’ and ‘target repository register’ every time a new package is published.
tools/ffx test run fuchsia-pkg://fuchsiadrivers.com/test_hello_pkg#meta/hello_test.cm