benchmark icon indicating copy to clipboard operation
benchmark copied to clipboard

[BUG] benchmark build errors when included as an external bazel project

Open the80srobot opened this issue 1 year ago • 5 comments

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:

  1. Set up a project with Bazel and include the dependency above in your MODULE
  2. 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.

the80srobot avatar Dec 23 '24 17:12 the80srobot

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",
)

the80srobot avatar Dec 23 '24 17:12 the80srobot

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 :)

dmah42 avatar Jan 08 '25 12:01 dmah42

looks like @Vertexwahn is listed as the BCR maintainer

dmah42 avatar Jan 08 '25 12:01 dmah42

@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

Vertexwahn avatar Jan 14 '25 17:01 Vertexwahn

@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...

Vertexwahn avatar Jan 14 '25 17:01 Vertexwahn