examples: add py_wheel test $ bazel build -c opt ... Computing main repo mapping: Loading: Loading: 0 packages loaded Analyzing: 7 targets (1 packages loaded, 0 targets configured) Analyzing: 7 targets (1 packages loaded, 0 targets configured) ERROR: //examples/basic/BUILD.bazel:11:9: in deps attribute of py_wheel rule //:basic_wheel: alias '//:basic' referring to generated file '//:basic.pyd' is misplaced here (expected no files). Since this rule was created by the macro 'py_wheel', the error might have been caused by the macro implementation ERROR: //examples/basic/BUILD.bazel:11:9: Analysis of target '//:basic_wheel' (config: 307b5b1) failed Use --verbose_failures to see the command lines of failed build steps. ERROR: Analysis of target '//:basic_wheel' failed; build aborted INFO: Elapsed time: 0.334s, Critical Path: 0.02s INFO: 1 process: 1 internal. ERROR: Build did NOT complete successfully
Github-CI: | OS \ Build system | Bazel | |:------- | :---: | | Linux (amd64) | | | MacOS (
amd64) | | | MacOS (
arm64) | | | Windows (
amd64) | |
Provided rules:
pybind_extension: Builds a python extension, automatically adding the required build flags and pybind11 dependencies. It defines a target which can be included as a data dependency of a py_* target.pybind_library: Builds a C++ library, automatically adding the required build flags and pybind11 dependencies. This library can then be used as a dependency of a pybind_extension. The arguments match a cc_library.pybind_library_test: Builds a C++ test for a pybind_library. The arguments match a cc_test.To test a pybind_extension, the most common approach is to write the test in Python and use the standard py_test build rule.
To embed Python, add @rules_python//python/cc:current_py_cc_libs as a dependency to your cc_binary.
In your WORKSPACE file:
http_archive( name = "pybind11_bazel", strip_prefix = "pybind11_bazel-<version>", urls = ["https://github.com/pybind/pybind11_bazel/archive/v<version>.zip"], ) # We still require the pybind library. http_archive( name = "pybind11", build_file = "@pybind11_bazel//:pybind11-BUILD.bazel", strip_prefix = "pybind11-<version>", urls = ["https://github.com/pybind/pybind11/archive/v<version>.zip"], )
Then, in your BUILD file:
load("@pybind11_bazel//:build_defs.bzl", "pybind_extension")
In your MODULE.bazel file:
bazel_dep(name = "pybind11_bazel", version = "<version>")
Usage in your BUILD file is as described previously.