roll: pigweed b006991..b4bf100 (12 commits) b4bf100:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/327153 pw_transfer: Fix -Wshadow findings 8ffc27e:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/327073 pw_thread_zephyr: Drop `Native` prefix from pw::thread::zephyr types 37095cc:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/327072 pw_thread_zephyr: Create pw::thread::zephyr namespace a524ee0:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/326942 flasher: Add the successfully flashed message for debug probe 1c226bd:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/327172 docs: Update factory docs to be consistent with bazel flash target bdfa95f:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/327015 pw_env_setup: Rev python deps in preparation for AirLock 39ca78d:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/327152 pw_bluetooth_{proxy, sapphire}: Fix -Wshadow findings e1e9588:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/327112 docs: Update GitHub mirror URL dfcbdf3:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/326292 pw_cli: Add gray to colors 19820e0:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/326773 pw_rpc: Disable asan and tsan tests 33657af:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/323315 pw_async2: Experimental ValueFuture a9bda7e:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/326893 pw_async2: Codelab build fix Rolled-Repo: https://pigweed.googlesource.com/pigweed/pigweed Rolled-Commits: b0069910339209..b4bf10078cf875 Roll-Count: 1 Roller-URL: https://cr-buildbucket.appspot.com/build/8702343352969617953 GitWatcher: ignore CQ-Do-Not-Cancel-Tryjobs: true Change-Id: I87d6f05c077610b317e50feed63b5198af9a21b1 Reviewed-on: https://pigweed-review.googlesource.com/c/zephyr/zephyr-bazel/+/327237 Lint: Lint 🤖 <android-build-ayeaye@system.gserviceaccount.com> Bot-Commit: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com> Commit-Queue: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com>
The way this repository works is by overlaying itself on top of Zephyr. To get started, first make sure you have Bazel‘s skylib version 1.7.1 or greater. If you don’t have it, you can use:
http_archive(
name = "bazel_skylib",
sha256 = "bc283cdfcd526a52c3201279cda4bc298652efa898b10b4db0837dc51652756f",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.7.1/bazel-skylib-1.7.1.tar.gz",
"https://github.com/bazelbuild/bazel-skylib/releases/download/1.7.1/bazel-skylib-1.7.1.tar.gz",
],
)
load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
bazel_skylib_workspace()
To grab the zephyr-bazel repo, use a git_repository rule in your WORKSPACE, such as:
git_repository(
name = "zephyr-bazel",
remote = "https://pigweed.googlesource.com/zephyr/zephyr-bazel",
branch = "main",
)
Once you have @zephyr-bazel, we can load the patch rule to generate the Zephyr diff that will augment Zephyr to include the BUILD.zephyr rules.
load("@zephyr-bazel//:setup.bzl", "create_zephyr_patch_file")
create_zephyr_patch_file(
name = "zephyr-patch",
filename = "patch.diff",
# This is optional, use it to see what's going on under the hood
debug = True,
)
We now have a diff file at @zephyr-patch//:patch.diff. We're ready to load Zephyr.
git_repository(
name = "zephyr",
remote = "https://github.com/zephyrproject-rtos/zephyr.git",
branch = "main",
patches = [
"@zephyr-patch//:patch.diff",
],
)
The final step will be to load Zephyr's python dependencies:
load("@rules_python//python:pip.bzl", "pip_parse")
pip_parse(
name = "py_deps",
python_interpreter_target = interpreter,
requirements_lock = "@@zephyr//:scripts/requirements-base.txt",
)
load("@py_deps//:requirements.bzl", zephyr_install_deps = "install_deps")
zephyr_install_deps()
To use zephyr-bazel in bzlmod, first add it as a dependency in your project's MODULE.bazel:
bazel_dep(name = "zephyr-bazel")
git_override(
module_name = "zephyr-bazel",
remote = "https://pigweed.googlesource.com/zephyr/zephyr-bazel",
branch = "main",
)
Then use the zephyr_patch_file module extension to generate a patch file and a Bazel repo with the patch file applied:
zephyr_patch_file = use_extension("@zephyr-bazel//:setup.bzl", "zephyr_patch_file")
use_repo(zephyr_patch_file, "zephyr")
pip is required by the patched zephyr repo, so your project needs to inject it:
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
# Load the Zephyr pip requirements
pip.parse(
hub_name = "pip",
python_version = "3.11",
requirements_lock = "@zephyr//:scripts/requirements-base.txt",
)
use_repo(pip, "pip")
inject_repo(zephyr_patch_file, "pip")
In your main application, you can now use the Zephyr utilities for building your app.
load("@zephyr//:defs.bzl", "dts_cc_library")
dts_cc_library(
name = "app_native_sim_dts",
dts_lib = "@zephyr//boards/native/native_sim:native_sim",
)
cc_binary(
...
deps = [
...
"@zephyr//:zephyr",
] + select({
"@platform//cpu:x86_64": [
":app_native_sim_dts",
"@zephyr//include:posix",
],
}),
copts = select({
"@platform//cpu:x86_64": [
"-DCONFIG_ARCH_POSIX=1",
],
}),
)
There is currently just 1 example, you can run it via:
$ cd examples/hello_dts $ bazel run :app
Or, you can run the tests via:
$ cd examples/hello_dts $ bazel test //...