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>
1 file changed
tree: 1d1e2cdbfffcb421459458cf05ff859b638dac2d
  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. project_configs.bzl
  30. README.md
  31. setup.bzl
  32. 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 //...