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>
2 files changed
tree: 7f9c5944fc92d87d25657b74318f71ed27ef4cb0
  1. .vscode/
  2. arch/
  3. boards/
  4. docs/
  5. drivers/
  6. dts/
  7. examples/
  8. include/
  9. kernel/
  10. lib/
  11. modules/
  12. pw_chrono_zephyr/
  13. pw_sync_zephyr/
  14. pw_thread_zephyr/
  15. scripts/
  16. soc/
  17. subsys/
  18. AUTHORS
  19. BUILD.bazel
  20. cc.bzl
  21. CONTRIBUTING.md
  22. defs.bzl
  23. generate_diff.py
  24. kconfig.bzl
  25. LICENSE
  26. MODULE.bazel
  27. MODULE.bazel.lock
  28. OWNERS
  29. README.md
  30. setup.bzl
  31. WORKSPACE
README.md

Zephyr-Bazel

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()

Usage in 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()

Usage in bzlmod

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")

Application

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",
        ],
    }),
)

Examples

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 //...