roll: pigweed 840c2f2..1e9e2fb (9 commits) 1e9e2fb:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/347237 pw_async2: Allow move-only types with BlockingReceive 0d72a11:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/347672 pw_async2: Refactor guides.rst 239a43d:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/345013 pw_build: Add BuildRecipe dependencies 9beab24:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/347632 pw_async2: Use more lock annotations in channel.h b04a327:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/340696 pw_bluetooth_proxy: Add GenericL2capChannel 1cf66b6:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/347236 pw_containers: Add Contains algorithm 039ffea:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/347234 pw_async2: Replace Dispatcher::State with bool 5e618d3:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/346332 pw_web: Fix npm tests after migration 461c729:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/347472 pw_string: Clarify example overloading operator<< Rolled-Repo: https://pigweed.googlesource.com/pigweed/pigweed Rolled-Commits: 840c2f2a01431b..1e9e2fb54aa8e5 Roll-Count: 1 Roller-URL: https://cr-buildbucket.appspot.com/build/8697551291459287969 GitWatcher: ignore CQ-Do-Not-Cancel-Tryjobs: true Change-Id: I4df338f9156a6547a4ad967f743ff4eeb854538d Reviewed-on: https://pigweed-review.googlesource.com/c/zephyr/zephyr-bazel/+/347795 Commit-Queue: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com> Bot-Commit: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com> Lint: Lint 🤖 <android-build-ayeaye@system.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 //...