[BUG] benchmark build errors when included as an external bazel project
Describe the bug
There are no instructions by the project about how to use it from a Bazel project, so the usual thing is to get it via http_archive, like this:
http_archive(
name = "benchmark",
strip_prefix = "benchmark-1.9.1",
sha256 = "32131c08ee31eeff2c8968d7e874f3cb648034377dfc32a4c377fa8796d84981",
urls = ["https://github.com/google/benchmark/archive/v1.9.1.tar.gz"],
)
However, included like this, benchmark doesn't build:
> bazel build @benchmark//:benchmark
ERROR: no such package '@@[unknown repo 'platforms' requested from @@+_repo_rules+benchmark]//os': The repository '@@[unknown repo 'platforms' requested from @@+_repo_rules+benchmark]' could not be resolved: No repository visible as '@platforms' from repository '@@+_repo_rules+benchmark'
ERROR: /home/debian/.cache/bazel/_bazel_debian/dd361b7f393c74ecd4bce5d0457e94c7/external/+_repo_rules+benchmark/BUILD.bazel:29:15: no such package '@@[unknown repo 'platforms' requested from @@+_repo_rules+benchmark]//os': The repository '@@[unknown repo 'platforms' requested from @@+_repo_rules+benchmark]' could not be resolved: No repository visible as '@platforms' from repository '@@+_repo_rules+benchmark' and referenced by '@@+_repo_rules+benchmark//:windows'
ERROR: /home/debian/.cache/bazel/_bazel_debian/dd361b7f393c74ecd4bce5d0457e94c7/external/+_repo_rules+benchmark/BUILD.bazel:52:11: errors encountered resolving select() keys for @@+_repo_rules+benchmark//:benchmark
ERROR: Analysis of target '@@+_repo_rules+benchmark//:benchmark' failed; build aborted
INFO: Elapsed time: 0.084s, Critical Path: 0.00s
INFO: 1 process: 1 internal.
ERROR: Build did NOT complete successfully
System Which OS, compiler, and compiler version are you using:
- OS: Linux debian 6.10.6+bpo-arm64 #1 SMP Debian 6.10.6-1~bpo12+1 (2024-08-26) aarch64 GNU/Linux
- Compiler and version: bazel 8.0.0
To reproduce Steps to reproduce the behavior:
- Set up a project with Bazel and include the dependency above in your MODULE
- Try to build the :benchmark target, as show above
Expected behavior Ideally, you should have instructions about how to use this project with Bazel, and they should probably involve publishing to the module registry.
Absent that, the project should build cleanly when included as an external dependency.
Anyway, if anyone comes across this, turns out the library already has a MODULE.bazel and so the right way to include it is like this:
bazel_dep(name = "google_benchmark", version = "1.9.1")
Because it's not in the registry, this is also required:
git_override(
module_name = "google_benchmark",
remote = "https://github.com/google/benchmark.git",
tag = "v1.9.1",
)
https://registry.bazel.build/modules/google_benchmark
i'm not sure what i need to do to bump the version in the registry, but it is there :)
looks like @Vertexwahn is listed as the BCR maintainer
@dmah42 I opened a PR here -> https://github.com/bazelbuild/bazel-central-registry/pull/3576
I added 1.9.0 already via https://github.com/bazelbuild/bazel-central-registry/pull/3570
@dmah42 We could make use of https://github.com/bazel-contrib/publish-to-bcr - this would automate the BCR update and not require to do it manually...