roll: pigweed, MODULE.bazel.lock pigweed 85ff7d8..dc0adae (10 commits) dc0adae:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/329932 pw_containers: Fix DynamicVector::erase() 6cfefb6:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/329922 pw_multibuf: Fix msan finding in examples a183a6e:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/329917 pw_async2: Remove package.json from the webui build 39400c0:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/321830 pw_unit_test: Update pw_golden_test for test executables a09ff62:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/330013 pw_bluetooth_sapphire: Accept various linter suggestions 197070a:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/316356 pw_containers: Refactor InlineVarLenEntryQueue 9374d5d:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/329253 *.rst: Reformat C++ code-blocks f777841:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/326103 pw_containers: Avoid dereferencing `end()` 2054fe6:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/329172 pw_i2c_mcuxpresso: Acquire / release clock_tree element dynamically b40327a:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/328072 pw_build: Support configurable pypi repos MODULE.bazel.lock Regenerated MODULE.bazel.lock Rolled-Repo: https://pigweed.googlesource.com/pigweed/pigweed Rolled-Commits: 85ff7d8715ad7b..dc0adaef766841 Roll-Count: 2 Roller-URL: https://cr-buildbucket.appspot.com/build/8701716471513676017 GitWatcher: ignore CQ-Do-Not-Cancel-Tryjobs: true Change-Id: I9d51b29cb5a3727346da365efa1bc7594240eee8 Reviewed-on: https://pigweed-review.googlesource.com/c/zephyr/zephyr-bazel/+/330113 Bot-Commit: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com> Commit-Queue: 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 //...