Add support for bzlmod (excluding Python bindings) (#1615)

* Migrate to bzlmod

* Update Python version to PY3, as indicated by the actual source file.

* Migrate more libraries & first draft of direct pywheel rule usage in Bazel

* Integrate with nanobind and libpfm

* Make Python toolchain a dev dependency

* Undo py_wheel usage until later

* Added support for bzlmod for C++ parts of google_benchmark.

* Make //tools:all buildable with --enable_bzlmod

---------

Co-authored-by: Andy Christiansen <achristiansen@google.com>
This commit is contained in:
Andy Christiansen 2023-06-27 14:03:39 +02:00 committed by GitHub
parent 1d25c2e3be
commit aacf2b1af9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 51 additions and 12 deletions

34
MODULE.bazel Normal file
View File

@ -0,0 +1,34 @@
module(name = "com_github_google_benchmark", version="1.8.0")
bazel_dep(name = "bazel_skylib", version = "1.4.1")
bazel_dep(name = "platforms", version = "0.0.6")
bazel_dep(name = "rules_foreign_cc", version = "0.9.0")
bazel_dep(name = "rules_cc", version = "0.0.6")
bazel_dep(name = "rules_python", version = "0.23.1")
bazel_dep(name = "googletest", version = "1.12.1", repo_name = "com_google_googletest")
bazel_dep(name = "libpfm", version = "4.11.0")
# Register a toolchain for Python 3.9 to be able to build numpy. Python
# versions >=3.10 are problematic.
# A second reason for this is to be able to build Python hermetically instead
# of relying on the changing default version from rules_python.
python = use_extension("@rules_python//python/extensions:python.bzl", "python")
python.toolchain(python_version = "3.9")
# Extract the interpreter from the hermetic toolchain above, so we can use that
# instead of the system interpreter for the pip compiplation step below.
interpreter = use_extension("@rules_python//python/extensions:interpreter.bzl", "interpreter")
interpreter.install(
name = "interpreter",
python_name = "python_3_9",
)
use_repo(interpreter, "interpreter")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
name="tools_pip_deps",
incompatible_generate_aliases = True,
python_interpreter_target="@interpreter//:python",
requirements_lock="//tools:requirements.txt")
use_repo(pip, "tools_pip_deps")

View File

@ -11,8 +11,8 @@ rules_foreign_cc_dependencies()
load("@rules_python//python:pip.bzl", pip3_install="pip_install") load("@rules_python//python:pip.bzl", pip3_install="pip_install")
pip3_install( pip3_install(
name = "py_deps", name = "tools_pip_deps",
requirements = "//:requirements.txt", requirements = "//tools:requirements.txt",
) )
new_local_repository( new_local_repository(

2
WORKSPACE.bzlmod Normal file
View File

@ -0,0 +1,2 @@
# This file marks the root of the Bazel workspace.
# See MODULE.bazel for dependencies and setup.

View File

@ -8,13 +8,17 @@
* `git log $(git describe --abbrev=0 --tags)..HEAD` gives you the list of * `git log $(git describe --abbrev=0 --tags)..HEAD` gives you the list of
commits between the last annotated tag and HEAD commits between the last annotated tag and HEAD
* Pick the most interesting. * Pick the most interesting.
* Create one last commit that updates the version saved in `CMakeLists.txt` and the * Create one last commit that updates the version saved in `CMakeLists.txt`, `MODULE.bazel`
`__version__` variable in `bindings/python/google_benchmark/__init__.py`to the release and the `__version__` variable in `bindings/python/google_benchmark/__init__.py`to the
version you're creating. (This version will be used if benchmark is installed from the release version you're creating. (This version will be used if benchmark is installed
archive you'll be creating in the next step.) from the archive you'll be creating in the next step.)
``` ```
project (benchmark VERSION 1.6.0 LANGUAGES CXX) project (benchmark VERSION 1.8.0 LANGUAGES CXX)
```
```
module(name = "com_github_google_benchmark", version="1.8.0")
``` ```
```python ```python
@ -22,7 +26,7 @@ project (benchmark VERSION 1.6.0 LANGUAGES CXX)
# ... # ...
__version__ = "1.6.0" # <-- change this to the release version you are creating __version__ = "1.8.0" # <-- change this to the release version you are creating
# ... # ...
``` ```

View File

@ -1,2 +0,0 @@
numpy == 1.22
scipy == 1.5.4

View File

@ -1,4 +1,4 @@
load("@py_deps//:requirements.bzl", "requirement") load("@tools_pip_deps//:requirements.bzl", "requirement")
py_library( py_library(
name = "gbench", name = "gbench",

View File

@ -1 +1,2 @@
scipy>=1.5.0 numpy == 1.25
scipy == 1.5.4