[llvm] [bazel] Add support for pybind (PR #98398)
Keith Smiley via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 10 14:54:05 PDT 2024
https://github.com/keith created https://github.com/llvm/llvm-project/pull/98398
Previously these targets were disabled, but with a relatively new rules_python we can build these pointing at a hermetic python, which allows us to build these safely. Users can still access the files directly if they need to customize how these are built.
>From d80a5f6b3aac91bc08d3471bdd8b00f3c7d1b1e5 Mon Sep 17 00:00:00 2001
From: Keith Smiley <keithbsmiley at gmail.com>
Date: Wed, 10 Jul 2024 21:52:30 +0000
Subject: [PATCH] [bazel] Add support for pybind
Previously these targets were disabled, but with a relatively new
rules_python we can build these pointing at a hermetic python, which
allows us to build these safely. Users can still access the files
directly if they need to customize how these are built.
---
utils/bazel/WORKSPACE | 26 +++++++
.../llvm-project-overlay/mlir/BUILD.bazel | 75 ++-----------------
utils/bazel/third_party_build/pybind.BUILD | 15 ++++
3 files changed, 48 insertions(+), 68 deletions(-)
create mode 100644 utils/bazel/third_party_build/pybind.BUILD
diff --git a/utils/bazel/WORKSPACE b/utils/bazel/WORKSPACE
index 298b64fd56291..20fcea1cae802 100644
--- a/utils/bazel/WORKSPACE
+++ b/utils/bazel/WORKSPACE
@@ -27,6 +27,14 @@ load("@llvm-raw//utils/bazel:configure.bzl", "llvm_configure")
llvm_configure(name = "llvm-project")
+maybe(
+ http_archive,
+ name = "rules_python",
+ sha256 = "778aaeab3e6cfd56d681c89f5c10d7ad6bf8d2f1a72de9de55b23081b2d31618",
+ strip_prefix = "rules_python-0.34.0",
+ url = "https://github.com/bazelbuild/rules_python/releases/download/0.34.0/rules_python-0.34.0.tar.gz",
+)
+
maybe(
http_archive,
name = "llvm_zlib",
@@ -129,3 +137,21 @@ maybe(
"https://github.com/facebook/zstd/releases/download/v1.5.2/zstd-1.5.2.tar.gz",
],
)
+
+maybe(
+ http_archive,
+ name = "pybind11",
+ build_file = "@llvm-raw//utils/bazel/third_party_build:pybind.BUILD",
+ sha256 = "201966a61dc826f1b1879a24a3317a1ec9214a918c8eb035be2f30c3e9cfbdcb",
+ strip_prefix = "pybind11-2.10.3",
+ url = "https://github.com/pybind/pybind11/archive/v2.10.3.zip",
+)
+
+load("@rules_python//python:repositories.bzl", "py_repositories", "python_register_toolchains")
+
+py_repositories()
+
+python_register_toolchains(
+ name = "python_3_10",
+ python_version = "3.10",
+)
diff --git a/utils/bazel/llvm-project-overlay/mlir/BUILD.bazel b/utils/bazel/llvm-project-overlay/mlir/BUILD.bazel
index 2543ed8113f37..deaf803d1bb33 100644
--- a/utils/bazel/llvm-project-overlay/mlir/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/mlir/BUILD.bazel
@@ -917,19 +917,6 @@ exports_files(
glob(["lib/Bindings/Python/**/*.cpp"]),
)
-# In the targets related to Python bindings, the projects @pybind11 and
-# @local_config_python are defined by @pybind11_bazel. The latter contains
-# python headers, and can be configured in an out-of-tree bazel project via
-#
-# load("@pybind11_bazel//:python_configure.bzl", "python_configure")
-# python_configure(name = "local_config_python")
-#
-# For more up-to-date instructions, see
-# https://github.com/pybind/pybind11_bazel
-#
-# Some out-of-tree projects alias @python_runtime//:headers to
-# @local_config_python//:python_headers.
-
MLIR_BINDINGS_PYTHON_HEADERS = [
"lib/Bindings/Python/*.h",
"include/mlir-c/Bindings/Python/*.h",
@@ -942,16 +929,12 @@ cc_library(
"include",
"lib/Bindings/Python",
],
- tags = [
- "manual", # External dependency
- "nobuildkite", # TODO(gcmn): Add support for this target
- ],
textual_hdrs = glob(MLIR_BINDINGS_PYTHON_HEADERS),
deps = [
":CAPIIRHeaders",
":CAPITransformsHeaders",
- "@local_config_python//:python_headers",
"@pybind11",
+ "@rules_python//python/cc:current_py_cc_headers",
],
)
@@ -961,16 +944,12 @@ cc_library(
"include",
"lib/Bindings/Python",
],
- tags = [
- "manual", # External dependency
- "nobuildkite", # TODO(gcmn): Add support for this target
- ],
textual_hdrs = glob(MLIR_BINDINGS_PYTHON_HEADERS),
deps = [
":CAPIIR",
":CAPITransforms",
- "@local_config_python//:python_headers",
"@pybind11",
+ "@rules_python//python/cc:current_py_cc_headers",
],
)
@@ -1001,10 +980,6 @@ cc_library(
srcs = MLIR_PYTHON_BINDINGS_SOURCES,
copts = PYBIND11_COPTS,
features = PYBIND11_FEATURES,
- tags = [
- "manual", # External dependency
- "nobuildkite", # TODO(gcmn): Add support for this target
- ],
deps = [
":CAPIAsync",
":CAPIDebug",
@@ -1014,8 +989,8 @@ cc_library(
":Support",
":config",
"//llvm:Support",
- "@local_config_python//:python_headers",
"@pybind11",
+ "@rules_python//python/cc:current_py_cc_headers",
],
)
@@ -1024,20 +999,16 @@ cc_library(
srcs = MLIR_PYTHON_BINDINGS_SOURCES,
copts = PYBIND11_COPTS,
features = PYBIND11_FEATURES,
- tags = [
- "manual", # External dependency
- "nobuildkite", # TODO(gcmn): Add support for this target
- ],
deps = [
":CAPIAsyncHeaders",
":CAPIDebugHeaders",
":CAPIIRHeaders",
- ":config",
":MLIRBindingsPythonHeaders",
":Support",
+ ":config",
"//llvm:Support",
- "@local_config_python//:python_headers",
"@pybind11",
+ "@rules_python//python/cc:current_py_cc_headers",
],
)
@@ -1045,10 +1016,6 @@ cc_library(
# MLIRBindingsPythonCoreNoCAPI.
cc_library(
name = "MLIRBindingsPythonCAPIObjects",
- tags = [
- "manual", # External dependency
- "nobuildkite", # TODO(gcmn): Add support for this target
- ],
deps = [
":CAPIAsyncObjects",
":CAPIDebugObjects",
@@ -1067,10 +1034,6 @@ cc_binary(
features = PYBIND11_FEATURES,
linkshared = 1,
linkstatic = 0,
- tags = [
- "manual", # External dependency
- "nobuildkite", # TODO(gcmn): Add support for this target
- ],
deps = [
":MLIRBindingsPythonCore",
":MLIRBindingsPythonHeadersAndDeps",
@@ -1084,10 +1047,6 @@ cc_binary(
features = PYBIND11_FEATURES,
linkshared = 1,
linkstatic = 0,
- tags = [
- "manual", # External dependency
- "nobuildkite", # TODO(gcmn): Add support for this target
- ],
deps = [
":CAPIIR",
":CAPILinalg",
@@ -1102,10 +1061,6 @@ cc_binary(
features = PYBIND11_FEATURES,
linkshared = 1,
linkstatic = 0,
- tags = [
- "manual", # External dependency
- "nobuildkite",
- ],
deps = [
":CAPIIR",
":CAPILLVM",
@@ -1121,10 +1076,6 @@ cc_binary(
features = PYBIND11_FEATURES,
linkshared = 1,
linkstatic = 0,
- tags = [
- "manual", # External dependency
- "nobuildkite", # TODO(gcmn): Add support for this target
- ],
deps = [
":CAPIIR",
":CAPIQuant",
@@ -1140,10 +1091,6 @@ cc_binary(
features = PYBIND11_FEATURES,
linkshared = 1,
linkstatic = 0,
- tags = [
- "manual", # External dependency
- "nobuildkite", # TODO(gcmn): Add support for this target
- ],
deps = [
":CAPIIR",
":CAPISparseTensor",
@@ -1160,15 +1107,11 @@ cc_binary(
features = PYBIND11_FEATURES,
linkshared = 1,
linkstatic = 0,
- tags = [
- "manual", # External dependency
- "nobuildkite", # TODO(gcmn): Add support for this target
- ],
deps = [
":CAPIExecutionEngine",
":MLIRBindingsPythonHeadersAndDeps",
- "@local_config_python//:python_headers",
"@pybind11",
+ "@rules_python//python/cc:current_py_cc_headers",
],
)
@@ -1180,15 +1123,11 @@ cc_binary(
features = PYBIND11_FEATURES,
linkshared = 1,
linkstatic = 0,
- tags = [
- "manual", # External dependency
- "nobuildkite", # TODO(gcmn): Add support for this target
- ],
deps = [
":CAPILinalg",
":MLIRBindingsPythonHeadersAndDeps",
- "@local_config_python//:python_headers",
"@pybind11",
+ "@rules_python//python/cc:current_py_cc_headers",
],
)
diff --git a/utils/bazel/third_party_build/pybind.BUILD b/utils/bazel/third_party_build/pybind.BUILD
new file mode 100644
index 0000000000000..d9fb431dbabb5
--- /dev/null
+++ b/utils/bazel/third_party_build/pybind.BUILD
@@ -0,0 +1,15 @@
+cc_library(
+ name = "pybind11",
+ hdrs = glob(
+ include = ["include/pybind11/**/*.h"],
+ exclude = [
+ # Deprecated file that just emits a warning
+ "include/pybind11/common.h",
+ ],
+ ),
+ includes = ["include"],
+ visibility = ["//visibility:public"],
+ deps = [
+ "@rules_python//python/cc:current_py_cc_headers",
+ ],
+)
More information about the llvm-commits
mailing list