Commit Graph

32 Commits

Author SHA1 Message Date
dominic 6ebb287104 Bump the version of python used for pip. (#2130)
The default python is already 3.12 (widely available) and we should
use the same default for the pip calls too.  It's tricky to get
older python versions sometimes so this should simplify things.
2026-02-21 11:12:45 +00:00
Dominic Hamon 192ef10025 version bump to 1.9.5
clang-format-lint / check-clang-format (push) Has been cancelled
clang-tidy / run-clang-tidy (push) Has been cancelled
sanitizer / asan.Debug (push) Has been cancelled
bazel / bazel.macos-latest (push) Has been cancelled
bazel / bazel.ubuntu-latest (push) Has been cancelled
bazel / bazel.windows-latest (push) Has been cancelled
sanitizer / msan.Debug (push) Has been cancelled
sanitizer / tsan.Debug (push) Has been cancelled
sanitizer / ubsan.Debug (push) Has been cancelled
sanitizer / asan.RelWithDebInfo (push) Has been cancelled
sanitizer / msan.RelWithDebInfo (push) Has been cancelled
sanitizer / tsan.RelWithDebInfo (push) Has been cancelled
sanitizer / ubsan.RelWithDebInfo (push) Has been cancelled
2026-01-21 13:16:48 +00:00
Nicholas Junge 3c5cbdefec dev: Update pre-commit hooks and nanobind_bazel version (#2053)
* dev: Update `nanobind_bazel` and pre-commit hooks

Also add `uv.lock` to the list of ignored Python build artifacts.

* Fix mypy unused-variable warnings

An underscore is the preferred option for ignoring an unused variable obtained
from a structured binding (i.e., tuple unpacking) in Python.
2025-10-13 16:12:59 +01:00
dominic hamon eddb024138 bump to v1.9.4
bazel / bazel.macos-latest (push) Has been cancelled
bazel / bazel.ubuntu-latest (push) Has been cancelled
bazel / bazel.windows-latest (push) Has been cancelled
clang-format-lint / check-clang-format (push) Has been cancelled
clang-tidy / run-clang-tidy (push) Has been cancelled
sanitizer / asan.Debug (push) Has been cancelled
sanitizer / msan.Debug (push) Has been cancelled
sanitizer / tsan.Debug (push) Has been cancelled
sanitizer / ubsan.Debug (push) Has been cancelled
sanitizer / asan.RelWithDebInfo (push) Has been cancelled
sanitizer / msan.RelWithDebInfo (push) Has been cancelled
sanitizer / tsan.RelWithDebInfo (push) Has been cancelled
sanitizer / ubsan.RelWithDebInfo (push) Has been cancelled
2025-05-19 16:45:45 +01:00
Dominic Hamon 299e592895 bump to v1.9.3 to prepare a release
bazel / bazel.ubuntu-latest (push) Has been cancelled
bazel / bazel.macos-latest (push) Has been cancelled
bazel / bazel.windows-latest (push) Has been cancelled
clang-format-lint / check-clang-format (push) Has been cancelled
clang-tidy / run-clang-tidy (push) Has been cancelled
sanitizer / asan.Debug (push) Has been cancelled
sanitizer / msan.Debug (push) Has been cancelled
sanitizer / tsan.Debug (push) Has been cancelled
sanitizer / ubsan.Debug (push) Has been cancelled
sanitizer / asan.RelWithDebInfo (push) Has been cancelled
sanitizer / msan.RelWithDebInfo (push) Has been cancelled
sanitizer / tsan.RelWithDebInfo (push) Has been cancelled
sanitizer / ubsan.RelWithDebInfo (push) Has been cancelled
2025-05-07 09:39:52 +01:00
Nicholas Junge c19058b4e5 deps: Update nanobind_bazel to v2.7.0 (#1970)
Builds bindings with nanobind v2.7.0, which contains a few bug fixes and improvements.
2025-04-22 15:56:31 +01:00
Dominic Hamon afa23b7699 bump version to 1.9.2 in readiness for release. #1957
bazel / bazel.windows-latest (push) Has been cancelled
bazel / bazel.ubuntu-latest (push) Has been cancelled
clang-format-lint / check-clang-format (push) Has been cancelled
bazel / bazel.macos-latest (push) Has been cancelled
clang-tidy / run-clang-tidy (push) Has been cancelled
sanitizer / asan.Debug (push) Has been cancelled
sanitizer / msan.Debug (push) Has been cancelled
sanitizer / tsan.Debug (push) Has been cancelled
sanitizer / ubsan.Debug (push) Has been cancelled
sanitizer / asan.RelWithDebInfo (push) Has been cancelled
sanitizer / msan.RelWithDebInfo (push) Has been cancelled
sanitizer / tsan.RelWithDebInfo (push) Has been cancelled
sanitizer / ubsan.RelWithDebInfo (push) Has been cancelled
2025-03-25 09:17:34 +00:00
Nicholas Junge afa46a38d9 deps: Update nanobind_bazel to v2.5.0 (#1936)
No new functionality, just an update to the newest nanobind.

Co-authored-by: dominic <510002+dmah42@users.noreply.github.com>
2025-02-17 13:44:39 +00:00
UebelAndre 933e6d3c1f Build libpfm with rules_cc (#1922)
Co-authored-by: dominic <510002+dmah42@users.noreply.github.com>
2025-02-10 22:00:14 +00:00
Nicholas Junge 4834ae9e57 Update nanobind-bazel to v2.4.0 (#1904)
Contains nanobind v2.4.0, which brings some more functionality, free-threading fixes,
and performance improvements.
2025-01-13 13:33:04 +00:00
Dominic Hamon c58e6d0710 v1.9.1 bump
bazel / bazel.macos-latest.no_bzlmod (push) Has been cancelled
bazel / bazel.ubuntu-latest.no_bzlmod (push) Has been cancelled
bazel / bazel.windows-latest.no_bzlmod (push) Has been cancelled
bazel / bazel.macos-latest.bzlmod (push) Has been cancelled
bazel / bazel.ubuntu-latest.bzlmod (push) Has been cancelled
bazel / bazel.windows-latest.bzlmod (push) Has been cancelled
clang-format-lint / check-clang-format (push) Has been cancelled
clang-tidy / run-clang-tidy (push) Has been cancelled
sanitizer / asan.Debug (push) Has been cancelled
sanitizer / msan.Debug (push) Has been cancelled
sanitizer / tsan.Debug (push) Has been cancelled
sanitizer / ubsan.Debug (push) Has been cancelled
sanitizer / asan.RelWithDebInfo (push) Has been cancelled
sanitizer / msan.RelWithDebInfo (push) Has been cancelled
sanitizer / tsan.RelWithDebInfo (push) Has been cancelled
sanitizer / ubsan.RelWithDebInfo (push) Has been cancelled
2024-11-28 16:51:38 +00:00
Nicholas Junge 50ffd3e546 Declare a Python 3.13 toolchain, revert setup.py toolchain arget selection (#1876)
The new solution was too smart (read: dense), because it did not account for
the fact that we look for the Windows libs of the interpreter building
the wheel, not the hermetic one supplying the header files.

The fix is to just align the versions again, so that the libs and headers
come from the same minor version.
2024-11-07 15:04:51 +00:00
Nicholas Junge be2134584d Update nanobind_bazel to v2.2.0 (#1866)
Adds support for free-threaded nanobind extension builds, though we
don't currently build a free-threaded wheel.

Co-authored-by: dominic <510002+dmah42@users.noreply.github.com>
2024-10-23 10:38:53 +01:00
dominic 498714357f upgrade bazel mods. requires c++14 for tests (#1867) 2024-10-23 10:27:18 +01:00
Dominic Hamon 12235e2465 v1.9.0
bazel / bazel.macos-latest.no_bzlmod (push) Has been cancelled
bazel / bazel.ubuntu-latest.no_bzlmod (push) Has been cancelled
bazel / bazel.windows-latest.no_bzlmod (push) Has been cancelled
bazel / bazel.macos-latest.bzlmod (push) Has been cancelled
bazel / bazel.ubuntu-latest.bzlmod (push) Has been cancelled
bazel / bazel.windows-latest.bzlmod (push) Has been cancelled
clang-format-lint / check-clang-format (push) Has been cancelled
clang-tidy / run-clang-tidy (push) Has been cancelled
sanitizer / asan.Debug (push) Has been cancelled
sanitizer / msan.Debug (push) Has been cancelled
sanitizer / tsan.Debug (push) Has been cancelled
sanitizer / ubsan.Debug (push) Has been cancelled
sanitizer / asan.RelWithDebInfo (push) Has been cancelled
sanitizer / msan.RelWithDebInfo (push) Has been cancelled
sanitizer / tsan.RelWithDebInfo (push) Has been cancelled
sanitizer / ubsan.RelWithDebInfo (push) Has been cancelled
2024-08-16 11:08:15 +01:00
Nicholas Junge 25e5c52a11 Bump nanobind-bazel to v2.1.0, add stubgen target (#1824)
Adds a stub file for the `google_benchmark._benchmark` submodule,
generated with the new `nanobind_stubgen` rule released in nanobind_bazel
v2.1.0.

Tweaks the setup.py logic a little bit to package stub files with the
rest of the build artifacts. Also explicitly adds the generated stub and
marker files to the list of package data artifacts.

Co-authored-by: dominic <510002+dmah42@users.noreply.github.com>
2024-07-30 15:49:33 +01:00
Peter Hawkins 64b5d8cd11 Update benchmark Python bindings for nanobind 2.0, and update to nanobind 2.0. (#1817)
Incorporates the nanobind_bazel change from https://github.com/google/benchmark/pull/1795.

nanobind 2.0 reworked the nanobind::enum_ class so it uses a real Python enum or intenum rather than its previous hand-rolled implementation.
https://nanobind.readthedocs.io/en/latest/changelog.html#version-2-0-0-may-23-2024

As a consequence of that change, nanobind now checks when casting an integer to a enum value that the integer corresponds to a valid enum. Counter::Flags is a bitmask, and many combinations are not valid enum members.

This change:
a) sets nb::is_arithmetic(), which means Counter::Flags becomes an IntEnum that can be freely cast to an integer.
b) defines the | operator for flags to return an integer, not an enum, avoiding the error.
c) changes Counter's constructor to accept an int, not a Counter::Flags enum. Since Counter::Flags is an IntEnum now, it can be freely coerced to an int.

If https://github.com/wjakob/nanobind/pull/599 is merged into nanobind, then we can perhaps use a flag enum here instead.
2024-07-18 16:54:02 +01:00
Dominic Hamon a6ad7fbbdc preparing for v1.8.5
bazel / bazel.macos-latest.no_bzlmod (push) Has been cancelled
bazel / bazel.ubuntu-latest.no_bzlmod (push) Has been cancelled
bazel / bazel.windows-latest.no_bzlmod (push) Has been cancelled
bazel / bazel.macos-latest.bzlmod (push) Has been cancelled
bazel / bazel.ubuntu-latest.bzlmod (push) Has been cancelled
bazel / bazel.windows-latest.bzlmod (push) Has been cancelled
clang-format-lint / check-clang-format (push) Has been cancelled
clang-tidy / run-clang-tidy (push) Has been cancelled
sanitizer / asan.Debug (push) Has been cancelled
sanitizer / msan.Debug (push) Has been cancelled
sanitizer / tsan.Debug (push) Has been cancelled
sanitizer / ubsan.Debug (push) Has been cancelled
sanitizer / asan.RelWithDebInfo (push) Has been cancelled
sanitizer / msan.RelWithDebInfo (push) Has been cancelled
sanitizer / tsan.RelWithDebInfo (push) Has been cancelled
sanitizer / ubsan.RelWithDebInfo (push) Has been cancelled
2024-07-18 11:13:04 +01:00
dominic a4cf155615 preparing for v1.8.4 (#1788)
bazel / bazel.macos-latest.no_bzlmod (push) Has been cancelled
bazel / bazel.ubuntu-latest.no_bzlmod (push) Has been cancelled
bazel / bazel.windows-latest.no_bzlmod (push) Has been cancelled
sanitizer / asan.Debug (push) Has been cancelled
bazel / bazel.macos-latest.bzlmod (push) Has been cancelled
bazel / bazel.ubuntu-latest.bzlmod (push) Has been cancelled
bazel / bazel.windows-latest.bzlmod (push) Has been cancelled
clang-format-lint / check-clang-format (push) Has been cancelled
clang-tidy / run-clang-tidy (push) Has been cancelled
sanitizer / msan.Debug (push) Has been cancelled
sanitizer / tsan.Debug (push) Has been cancelled
sanitizer / ubsan.Debug (push) Has been cancelled
sanitizer / asan.RelWithDebInfo (push) Has been cancelled
sanitizer / msan.RelWithDebInfo (push) Has been cancelled
sanitizer / tsan.RelWithDebInfo (push) Has been cancelled
sanitizer / ubsan.RelWithDebInfo (push) Has been cancelled
2024-05-23 15:02:46 +01:00
Nicholas Junge bc946b919c Modernize wheel building job config (#1783)
It is now possible to build Mac wheels on native machines in Github
Actions, so ARM64 Mac wheels are now built and tested on M1 machines.

Also, the artifact up-/download was migrated to v4, which made it
necessary to upload wheels to unique artifact names, and then later
stitch them together again in a subsequent job.

The cross-platform Mac build injection in setup.py was removed,
since it is no longer necessary.

I relanded a monkey-patching of Bazel build files, this time for
MODULE.bazel. This is because `rules_python` does not allow running
as the root user, which is the case in cibuildwheel+Linux (happens
in a Docker container). Since I did not see a quick way of switching
to rootless containers, and did not want to hardcode the config change
(it can apparently cause cache misses and build failures), I inject the
"ignore_root_user_error" flag into the MODULE.bazel file when running
in cibuildwheel on Linux.
2024-04-15 17:44:09 +01:00
Nicholas Junge 185c55d793 Switch git override to stable BCR tag for nanobind_bazel (#1778)
This comes following the first BCR release of nanobind_bazel.

Feature-wise, nothing substantial has changed, except that the extensions
are stripped of debug info when built in release mode, which reduces
clutter in the symbol tables.

No stubgen yet, since nanobind v2 has not been released yet.
2024-04-15 10:57:02 +01:00
Nicholas Junge eaafe694d2 Add Python bindings build using bzlmod (#1764)
* Add a bzlmod Python bindings build

Uses the newly started `@nanobind_bazel` project to build nanobind
extensions. This means that we can drop all in-tree custom build defs
and build files for nanobind and the C++ Python headers.

Additionally, the temporary WORKSPACE overwrite hack naturally goes away
due to the WORKSPACE system being obsolete.

* Bump ruff -> v0.3.1, change ruff settings

The latest minor releases incurred some formatting and configuration
changes, this commit rolls them out.

---------

Co-authored-by: dominic <510002+dmah42@users.noreply.github.com>
2024-03-07 12:28:55 +00:00
Dominic Hamon faef450eb9 changes to run bazel migration scripts
part of #1743
2024-01-29 13:02:29 +00:00
Nicholas Junge 754ef08ab9 Upgrade core bazel dependencies (#1711)
Bumps `rules_foreign_cc` to v0.10.1 (October 2023), `bazel_skylib` to
v1.5.0 (November 2023), `rules_python` to v0.27.1 (December 2023).

Also syncs GoogleTest to v1.12.1 (the last C++11 supporting version) to
be the same as in MODULE.bazel.

Since the latest `rules_python` changed its setup calling convention,
that is updated also in the WORKSPACE file.
2023-12-07 15:00:43 +00:00
Nicholas Junge b93f5a5929 Add pre-commit config and GitHub Actions job (#1688)
* Add pre-commit config and GitHub Actions job

Contains the following hooks:
* buildifier - for formatting and linting Bazel files.
* mypy, ruff, isort, black - for Python typechecking, import hygiene,
static analysis, and formatting.

The pylint CI job was changed to be a pre-commit CI job, where pre-commit
is bootstrapped via Python.

Pylint is currently no longer part of the
code checks, but can be re-added if requested. The reason to drop was
that it does not play nicely with pre-commit, and lots of its
functionality and responsibilities are actually covered in ruff.

* Add dev extra to pyproject.toml for development installs

* Clarify that pre-commit contains only Python and Bazel hooks

* Add one-line docstrings to Bazel modules

* Apply buildifier pre-commit fixes to Bazel files

* Apply pre-commit fixes to Python files

* Supply --profile=black to isort to prevent conflicts

* Fix nanobind build file formatting

* Add tooling configs to `pyproject.toml`

In particular, set line length 80 for all Python files.

* Reformat all Python files to line length 80, fix return type annotations

Also ignores the `tools/compare.py` and `tools/gbench/report.py` files
for mypy, since they emit a barrage of errors which we can deal with
later. The errors are mostly related to dynamic classmethod definition.
2023-10-30 15:35:37 +00:00
Nicholas Junge e45585a4b8 Change nanobind linkage to response file approach on macOS (#1638)
* Change nanobind linkage to response file approach

This change needs https://github.com/bazelbuild/bazel/pull/18952 to be
merged first. Fixes macOS linkage of GBM's nanobind bindings on macOS by
supplying a linker response file instead of `-undefined dynamic_lookup`.

The latter has since been deprecated on macOS.

* Fix bazel_skylib checksum, bump skylib version in MODULE.bazel

* Bump Bazel to version 6.4.0 for linker response file support
2023-10-24 13:04:12 +01:00
Dominic Hamon 344117638c bump version to 1.8.3
bazel / bazel.macos-latest.no_bzlmod (push) Has been cancelled
bazel / bazel.ubuntu-latest.no_bzlmod (push) Has been cancelled
bazel / bazel.windows-latest.no_bzlmod (push) Has been cancelled
bazel / bazel.macos-latest.bzlmod (push) Has been cancelled
bazel / bazel.ubuntu-latest.bzlmod (push) Has been cancelled
bazel / bazel.windows-latest.bzlmod (push) Has been cancelled
clang-format-lint / build (push) Has been cancelled
clang-tidy / run-clang-tidy (push) Has been cancelled
sanitizer / asan.Debug (push) Has been cancelled
sanitizer / msan.Debug (push) Has been cancelled
sanitizer / tsan.Debug (push) Has been cancelled
sanitizer / ubsan.Debug (push) Has been cancelled
sanitizer / asan.RelWithDebInfo (push) Has been cancelled
sanitizer / msan.RelWithDebInfo (push) Has been cancelled
sanitizer / tsan.RelWithDebInfo (push) Has been cancelled
sanitizer / ubsan.RelWithDebInfo (push) Has been cancelled
2023-08-31 13:16:50 +01:00
Andy Christiansen 6e80474e62 Mark internal deps as dev_depenencies so that downstream modules don't require those. (#1640)
Co-authored-by: Andy Christiansen <achristiansen@google.com>
Co-authored-by: dominic <510002+dmah42@users.noreply.github.com>
2023-07-31 17:23:27 +01:00
James Sharpe 27d64a2351 Update bzlmod support to new rules_python extension API (#1633)
Co-authored-by: dominic <510002+dmah42@users.noreply.github.com>
2023-07-18 08:40:54 +01:00
Dominic Hamon 015d1a091a bump version to 1.8.2 ready for release
bazel / bazel.macos-latest.no_bzlmod (push) Has been cancelled
bazel / bazel.ubuntu-latest.no_bzlmod (push) Has been cancelled
bazel / bazel.windows-2022.no_bzlmod (push) Has been cancelled
bazel / bazel.macos-latest.bzlmod (push) Has been cancelled
bazel / bazel.ubuntu-latest.bzlmod (push) Has been cancelled
bazel / bazel.windows-2022.bzlmod (push) Has been cancelled
clang-format-lint / build (push) Has been cancelled
clang-tidy / run-clang-tidy (push) Has been cancelled
sanitizer / asan.Debug (push) Has been cancelled
sanitizer / msan.Debug (push) Has been cancelled
sanitizer / tsan.Debug (push) Has been cancelled
sanitizer / ubsan.Debug (push) Has been cancelled
sanitizer / asan.RelWithDebInfo (push) Has been cancelled
sanitizer / msan.RelWithDebInfo (push) Has been cancelled
sanitizer / tsan.RelWithDebInfo (push) Has been cancelled
sanitizer / ubsan.RelWithDebInfo (push) Has been cancelled
2023-07-06 09:50:35 +01:00
Dominic Hamon daa12bcc5a bump version to 1.8.1 pre release
bazel / bazel.macos-latest.no_bzlmod (push) Has been cancelled
bazel / bazel.ubuntu-latest.no_bzlmod (push) Has been cancelled
bazel / bazel.windows-2022.no_bzlmod (push) Has been cancelled
bazel / bazel.macos-latest.bzlmod (push) Has been cancelled
bazel / bazel.ubuntu-latest.bzlmod (push) Has been cancelled
bazel / bazel.windows-2022.bzlmod (push) Has been cancelled
clang-format-lint / build (push) Has been cancelled
clang-tidy / run-clang-tidy (push) Has been cancelled
sanitizer / asan.Debug (push) Has been cancelled
sanitizer / msan.Debug (push) Has been cancelled
sanitizer / tsan.Debug (push) Has been cancelled
sanitizer / ubsan.Debug (push) Has been cancelled
sanitizer / asan.RelWithDebInfo (push) Has been cancelled
sanitizer / msan.RelWithDebInfo (push) Has been cancelled
sanitizer / tsan.RelWithDebInfo (push) Has been cancelled
sanitizer / ubsan.RelWithDebInfo (push) Has been cancelled
2023-07-04 08:48:07 +01:00
Andy Christiansen aacf2b1af9 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>
2023-06-27 13:03:39 +01:00