Skip to content

Commit

Permalink
Added support for Bzlmod, indicated that WORKSPACE is deprecated and …
Browse files Browse the repository at this point in the history
…will be removed at a later date. Moved Python dependency support for Bazel from virtualenv to rules_python.

PiperOrigin-RevId: 607438140
  • Loading branch information
pybind11_abseil authors authored and copybara-github committed Feb 15, 2024
1 parent bc4b562 commit dfb81fe
Show file tree
Hide file tree
Showing 17 changed files with 462 additions and 73 deletions.
84 changes: 84 additions & 0 deletions MODULE.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
module(
name = "pybind11_abseil",
version = "head",
)

bazel_dep(
name = "bazel_skylib",
version = "1.5.0",
)

bazel_dep(
name = "abseil-cpp",
version = "20240116.0",
repo_name = "com_google_absl",
)

bazel_dep(
name = "rules_cc",
version = "0.0.9",
)

bazel_dep(
name = "rules_python",
version = "0.31.0",
)

bazel_dep(
name = "platforms",
version = "0.0.8"
)

http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
name = "pybind11_bazel",
strip_prefix = "pybind11_bazel-master",
urls = ["https://github.com/pybind/pybind11_bazel/archive/refs/heads/master.tar.gz"],
)

http_archive(
name = "pybind11",
build_file = "@pybind11_bazel//:pybind11.BUILD",
strip_prefix = "pybind11-master",
urls = ["https://github.com/pybind/pybind11/archive/refs/heads/master.tar.gz"],
)

#### DEV ONLY DEPENDENCIES BELOW HERE ####

SUPPORTED_PYTHON_VERSIONS = [
"3.12",
"3.11",
"3.10",
"3.9",
"3.8"
]

DEFAULT_PYTHON = "3.11"

python = use_extension("@rules_python//python/extensions:python.bzl", "python", dev_dependency=True)
[
python.toolchain(
python_version = version,
is_default = version == DEFAULT_PYTHON,
)
for version in SUPPORTED_PYTHON_VERSIONS
]

use_repo(
python,
python = "python_versions",
)

pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip", dev_dependency=True)
[
pip.parse(
hub_name = "pypi",
python_version = version,
requirements_lock = "//pybind11_abseil/requirements:requirements_lock_" + version.replace('.','_') + ".txt",
)
for version in SUPPORTED_PYTHON_VERSIONS

]

use_repo(pip, "pypi")
15 changes: 15 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,21 @@ pybind11_abseil can be built with Bazel or CMake. Instructions for both are belo

### Bazel

#### Bzlmod

You can depend on the Bazel module and dependencies via a single command in your MODULE.bazel:

```
bazel_dep(
name = "pybind11_abseil",
version = "selected_version",
)
```

#### WORKSPACE

Bazel workspace support is deprecated and will be removed at a later date.

You will need to depend on `pybind11`, `pybind11_bazel`(see
[doc](https://github.com/pybind/pybind11_bazel#installation), and on
`pybind11_abseil`, e.g.
Expand Down
65 changes: 62 additions & 3 deletions WORKSPACE
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,13 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
# On Mac, run curl -L https://github.com/<...>.tar.gz | shasum -a 256
# and update the sha256 with the result.

################################################################################
#
# WORKSPACE is being deprecated in favor of the new Bazelmod dependency system
# It will be removed at some point in the future.
#
################################################################################

## `bazel_skylib` (PINNED)
http_archive(
name = "bazel_skylib", # 2023-05-31T19:24:07Z
Expand All @@ -27,6 +34,61 @@ http_archive(
],
)

http_archive(
name = "rules_python",
sha256 = "c68bdc4fbec25de5b5493b8819cfc877c4ea299c0dcb15c244c5a00208cde311",
strip_prefix = "rules_python-0.31.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.31.0/rules_python-0.31.0.tar.gz",
)

load("@rules_python//python:repositories.bzl", "py_repositories", "python_register_multi_toolchains")

py_repositories()

load("@rules_python//python/pip_install:repositories.bzl", "pip_install_dependencies")

pip_install_dependencies()

DEFAULT_PYTHON = "3.11"

python_register_multi_toolchains(
name = "python",
default_version = DEFAULT_PYTHON,
python_versions = [
"3.12",
"3.11",
"3.10",
"3.9",
"3.8"
],
)

load("@python//:pip.bzl", "multi_pip_parse")

multi_pip_parse(
name = "pypi",
default_version = DEFAULT_PYTHON,
python_interpreter_target = {
"3.12": "@python_3_12_host//:python",
"3.11": "@python_3_11_host//:python",
"3.10": "@python_3_10_host//:python",
"3.9": "@python_3_9_host//:python",
"3.8": "@python_3_8_host//:python",
},
requirements_lock = {
"3.12": "//pybind11_abseil/requirements:requirements_lock_3_12.txt",
"3.11": "//pybind11_abseil/requirements:requirements_lock_3_11.txt",
"3.10": "//pybind11_abseil/requirements:requirements_lock_3_10.txt",
"3.9": "//pybind11_abseil/requirements:requirements_lock_3_9.txt",
"3.8": "//pybind11_abseil/requirements:requirements_lock_3_8.txt",
},
)

load("@pypi//:requirements.bzl", "install_deps")

install_deps()


## `pybind11_bazel` (FLOATING)
# https://github.com/pybind/pybind11_bazel
http_archive(
Expand All @@ -52,6 +114,3 @@ http_archive(
# sha256 = "832e2f309c57da9c1e6d4542dedd34b24e4192ecb4d62f6f4866a737454c9970",
# urls = ["https://github.com/pybind/pybind11/archive/refs/tags/v2.10.4.tar.gz"],
)

load("@pybind11_bazel//:python_configure.bzl", "python_configure")
python_configure(name = "local_config_python")
1 change: 1 addition & 0 deletions WORKSPACE.bzlmod
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Present for cross-compatibility between MODULE.bazel and WORKSPACE
8 changes: 4 additions & 4 deletions pybind11_abseil/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ cc_library(
visibility = ["//visibility:public"],
deps = [
"@com_google_absl//absl/status",
"@local_config_python//:python_headers", # buildcleaner: keep
"@rules_python//python/cc:current_py_cc_headers", # buildcleaner: keep
],
)

Expand All @@ -42,7 +42,7 @@ cc_library(
visibility = ["//visibility:private"],
deps = [
":ok_status_singleton_lib",
"@local_config_python//:python_headers", # buildcleaner: keep
"@rules_python//python/cc:current_py_cc_headers", # buildcleaner: keep
],
)

Expand All @@ -52,7 +52,7 @@ cc_binary(
linkshared = 1,
deps = [
":ok_status_singleton_pyinit_google3",
"@local_config_python//:python_headers", # buildcleaner: keep
"@rules_python//python/cc:current_py_cc_headers", # buildcleaner: keep
],
)

Expand Down Expand Up @@ -155,7 +155,7 @@ cc_binary(
linkshared = 1,
deps = [
":status_pyinit_google3",
"@local_config_python//:python_headers", # buildcleaner: keep
"@rules_python//python/cc:current_py_cc_headers", # buildcleaner: keep
],
)

Expand Down
6 changes: 3 additions & 3 deletions pybind11_abseil/compat/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ cc_library(
"@com_google_absl//absl/log:absl_check",
"@com_google_absl//absl/log:absl_log",
"@com_google_absl//absl/strings",
"@local_config_python//:python_headers", # buildcleaner: keep
"@rules_python//python/cc:current_py_cc_headers", # buildcleaner: keep
],
)

Expand All @@ -26,7 +26,7 @@ cc_library(
":py_base_utilities",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/status",
"@local_config_python//:python_headers", # buildcleaner: keep
"@rules_python//python/cc:current_py_cc_headers", # buildcleaner: keep
],
)

Expand All @@ -42,6 +42,6 @@ cc_library(
"@com_google_absl//absl/log:absl_check",
"@com_google_absl//absl/log:absl_log",
"@com_google_absl//absl/status",
"@local_config_python//:python_headers", # buildcleaner: keep
"@rules_python//python/cc:current_py_cc_headers", # buildcleaner: keep
],
)
8 changes: 4 additions & 4 deletions pybind11_abseil/cpp_capsule_tools/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ cc_library(
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@local_config_python//:python_headers", # buildcleaner: keep
"@rules_python//python/cc:current_py_cc_headers", # buildcleaner: keep
],
)

Expand All @@ -24,7 +24,7 @@ cc_library(
deps = [
":void_ptr_from_capsule",
"@com_google_absl//absl/status:statusor",
"@local_config_python//:python_headers", # buildcleaner: keep
"@rules_python//python/cc:current_py_cc_headers", # buildcleaner: keep
],
)

Expand All @@ -33,7 +33,7 @@ cc_library(
hdrs = ["make_shared_ptr_capsule.h"],
visibility = ["//visibility:public"],
deps = [
"@local_config_python//:python_headers", # buildcleaner: keep
"@rules_python//python/cc:current_py_cc_headers", # buildcleaner: keep
],
)

Expand All @@ -44,6 +44,6 @@ cc_library(
deps = [
":void_ptr_from_capsule",
"@com_google_absl//absl/status:statusor",
"@local_config_python//:python_headers", # buildcleaner: keep
"@rules_python//python/cc:current_py_cc_headers", # buildcleaner: keep
],
)
39 changes: 39 additions & 0 deletions pybind11_abseil/requirements/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package(
default_visibility = ["//visibility:private"],
)

load("@python//3.12:defs.bzl", compile_pip_requirements_3_12 = "compile_pip_requirements")
load("@python//3.11:defs.bzl", compile_pip_requirements_3_11 = "compile_pip_requirements")
load("@python//3.10:defs.bzl", compile_pip_requirements_3_10 = "compile_pip_requirements")
load("@python//3.9:defs.bzl", compile_pip_requirements_3_9 = "compile_pip_requirements")
load("@python//3.8:defs.bzl", compile_pip_requirements_3_8 = "compile_pip_requirements")

compile_pip_requirements_3_12(
name = "requirements_3_12",
src = "requirements.in",
requirements_txt = "requirements_lock_3_12.txt",
)

compile_pip_requirements_3_11(
name = "requirements_3_11",
src = "requirements.in",
requirements_txt = "requirements_lock_3_11.txt",
)

compile_pip_requirements_3_10(
name = "requirements_3_10",
src = "requirements.in",
requirements_txt = "requirements_lock_3_10.txt",
)

compile_pip_requirements_3_9(
name = "requirements_3_9",
src = "requirements.in",
requirements_txt = "requirements_lock_3_9.txt",
)

compile_pip_requirements_3_8(
name = "requirements_3_8",
src = "requirements.in",
requirements_txt = "requirements_lock_3_8.txt",
)
File renamed without changes.
48 changes: 48 additions & 0 deletions pybind11_abseil/requirements/requirements_lock_3_10.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#
# This file is autogenerated by pip-compile with Python 3.10
# by the following command:
#
# bazel run //pybind11_abseil/requirements:requirements_3_10.update
#
absl-py==2.1.0 \
--hash=sha256:526a04eadab8b4ee719ce68f204172ead1027549089702d99b9059f129ff1308 \
--hash=sha256:7820790efbb316739cde8b4e19357243fc3608a152024288513dd968d7d959ff
# via -r pybind11_abseil/requirements/requirements.in
numpy==1.26.4 \
--hash=sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b \
--hash=sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818 \
--hash=sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20 \
--hash=sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0 \
--hash=sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010 \
--hash=sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a \
--hash=sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea \
--hash=sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c \
--hash=sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71 \
--hash=sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110 \
--hash=sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be \
--hash=sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a \
--hash=sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a \
--hash=sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5 \
--hash=sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed \
--hash=sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd \
--hash=sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c \
--hash=sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e \
--hash=sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0 \
--hash=sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c \
--hash=sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a \
--hash=sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b \
--hash=sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0 \
--hash=sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6 \
--hash=sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2 \
--hash=sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a \
--hash=sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30 \
--hash=sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218 \
--hash=sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5 \
--hash=sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07 \
--hash=sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2 \
--hash=sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4 \
--hash=sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764 \
--hash=sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef \
--hash=sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3 \
--hash=sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f
# via -r pybind11_abseil/requirements/requirements.in
Loading

0 comments on commit dfb81fe

Please sign in to comment.