bazel-contrib / bazel-contrib/rules_multitool
Document usage of Bazel cache when using the rules
- Dominant language
- Starlark
- Stars
- 25
- Forks
- 11
- PR merge metrics
- No merged PRs in 30d
Description
These rules are a great way to run some tools in ad hoc manner, thank you for this!
I think it would be helpful to document how caching works when running tools via these rules.
In contrast to https://github.com/erenon/bazel_clang_tidy where caching is claimed to be enabled, it might not be clear whether caching is attempted when running an arbitrary tool on arbitrary files.
Based on my research, I don't see any caching done (when running a tool on some sources) and if it's true, I am happy to raise a PR documenting it. Or if some caching is done (e.g. the files downloaded most certainly are cached, but the results of their invocation is not), then of course we shall also make sure it is documented.
I guess it might be not be trivial for end users to confirm the cached actions. For instance (assuming that `tools/clang-tidy` is deterministic):
```
$ bazel run --explain=explain.log --verbose_explanations @multitool//tools/clang-tidy -- \
-p compile_commands.json \
/home/user/code/geocpp/src/geometry/rectangle.cc
INFO: Analyzed target @@rules_multitool++multitool+multitool//tools/clang-tidy:clang-tidy (0 packages loaded, 0 targets configured).
INFO: Found 1 target...
INFO: Writing explanation of rebuilds to 'explain.log'
Target @@rules_multitool++multitool+multitool//tools/clang-tidy:clang-tidy up-to-date:
bazel-bin/external/rules_multitool++multitool+multitool/tools/clang-tidy/clang-tidy
INFO: Elapsed time: 0.115s, Critical Path: 0.00s
INFO: 1 process: 1 internal.
INFO: Build completed successfully, 1 total action
INFO: Running command line: bazel-bin/external/rules_multitool++multitool+multitool/tools/clang-tidy/clang-tidy
$ cat explain.log
Build options: --cxxopt='-std=c++17' --verbose_failures --explain=explain.log --verbose_explanations
Executing action 'BazelWorkspaceStatusAction stable-status.txt': unconditional execution is requested.
$ bazel aquery @multitool//tools/clang-tidy
...
runfiles for @@rules_multitool++multitool+multitool//tools/clang-tidy:clang-tidy
Mnemonic: Middleman
Target: @multitool//tools/clang-tidy:clang-tidy
Configuration: k8-opt-exec-ST-d57f47055a04
Execution platform: @platforms//host:host
ActionKey: 709e80c88487a2411e1ee4dfb9f22a861492d20c4765150c0c794abd70f8147c
Inputs: [bazel-out/k8-opt-exec-ST-d57f47055a04/bin/external/rules_multitool++multitool+multitool/tools/clang-tidy/clang-tidy, bazel-out/k8-opt-exec-ST-d57f47055a04/bin/external/rules_multitool++multitool+multitool/tools/clang-tidy/clang-tidy.repo_mapping, bazel-out/k8-opt-exec-ST-d57f47055a04/bin/external/rules_multitool++multitool+multitool/tools/clang-tidy/clang-tidy.runfiles/MANIFEST]
Outputs: [bazel-out/k8-opt-exec-ST-d57f47055a04/internal/_middlemen/external_Srules_Umultitool++multitool+multitool_Stools_Sclang-tidy_Sclang-tidy-runfiles]
```
Contributor guide
Assessment
This issue has not been assessed yet.