roll: pigweed 6bc0bc6..874e28c (4 commits)

874e28c:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/303172 pw_build: Add driver_options support
29b0d02:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/305033 pw_bytes: Switch pw_bytes/endian_test.cc to PW_CONSTEXPR_TEST
80c6077:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/304492 pw_sync_stl: Remove includes attribute
9edabb1:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/304798 roll: go

Rolled-Repo: https://pigweed.googlesource.com/pigweed/pigweed
Rolled-Commits: 6bc0bc64b03333..874e28c9ccbc1a
Roll-Count: 1
Roller-URL: https://cr-buildbucket.appspot.com/build/8709339179598764849
GitWatcher: ignore
CQ-Do-Not-Cancel-Tryjobs: true
Change-Id: I0b63dac339e0e141d43c828c1414b7c129116b79
Reviewed-on: https://pigweed-review.googlesource.com/c/zephyr/zephyr-bazel/+/304975
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: ca9d43b67e034bd053f1e73948e13a67198d3a56
  1. .vscode/
  2. arch/
  3. boards/
  4. drivers/
  5. dts/
  6. examples/
  7. include/
  8. kernel/
  9. lib/
  10. modules/
  11. pw_chrono_zephyr/
  12. scripts/
  13. soc/
  14. subsys/
  15. AUTHORS
  16. BUILD.bazel
  17. cc.bzl
  18. CONTRIBUTING.md
  19. defs.bzl
  20. generate_diff.py
  21. LICENSE
  22. MODULE.bazel
  23. MODULE.bazel.lock
  24. OWNERS
  25. README.md
  26. setup.bzl
  27. 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()

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

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