bazel: bzlmod + build_python_zip breaks runfiles resolution
Description of the bug:
When building a py_binary with --build_python_zip
and bzlmod enabled, the runfiles cannot be correctly resolved.
Things would work if I remove the --build_python_zip
option or switch back to the old WORKSPACE style.
I suspect this has something to do with the way bzlmod handle repo mapping.
What’s the simplest, easiest way to reproduce this bug? Please provide a minimal example if possible.
I have a very small example to reproduce the issue: https://github.com/coquelicot/broken-bzlmod-pyzip
Here’s the log from my machine:
» bazel run example
INFO: Build option --build_python_zip has changed, discarding analysis cache.
INFO: Analyzed target //:example (0 packages loaded, 539 targets configured).
INFO: Found 1 target...
Target //:example up-to-date:
bazel-bin/example
INFO: Elapsed time: 0.280s, Critical Path: 0.01s
INFO: 4 processes: 4 internal.
INFO: Build completed successfully, 4 total actions
INFO: Running command line: bazel-bin/example
sample
» bazel run --build_python_zip example
INFO: Build option --build_python_zip has changed, discarding analysis cache.
INFO: Analyzed target //:example (0 packages loaded, 539 targets configured).
INFO: Found 1 target...
Target //:example up-to-date:
bazel-bin/example
bazel-bin/example.zip
INFO: Elapsed time: 0.274s, Critical Path: 0.01s
INFO: 4 processes: 3 internal, 1 linux-sandbox.
INFO: Build completed successfully, 4 total actions
INFO: Running command line: bazel-bin/example
Traceback (most recent call last):
File "/tmp/Bazel.runfiles_tuww8rqk/runfiles/_main/example.py", line 11, in <module>
main()
File "/tmp/Bazel.runfiles_tuww8rqk/runfiles/_main/example.py", line 6, in main
with open(path, "r") as fin:
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/Bazel.runfiles_tuww8rqk/runfiles/pyzip/data.txt'
Which operating system are you running Bazel on?
linux
What is the output of bazel info release
?
release 6.1.1
If bazel info release
returns development version
or (@non-git)
, tell us how you built Bazel.
No response
What’s the output of git remote get-url origin; git rev-parse master; git rev-parse HEAD
?
No response
Have you found anything relevant by searching the web?
The way runfiles are implemented seems to be different with bzlmod: https://github.com/bazelbuild/bazel/issues/16124
Any other information, logs, or outputs that you want to share?
No response
About this issue
- Original URL
- State: closed
- Created a year ago
- Comments: 20 (12 by maintainers)
Commits related to this issue
- Don't eagerly flatten a `NestedSet` in `RepoMappingManifestAction` Delays the flattening from action creation to action execution in preparation for making this action accessible from Starlark. Work... — committed to bazelbuild/bazel by fmeum a year ago
- Don't eagerly flatten a `NestedSet` in `RepoMappingManifestAction` Delays the flattening from action creation to action execution in preparation for making this action accessible from Starlark. Work... — committed to fmeum/bazel by fmeum a year ago
- Don't eagerly flatten a `NestedSet` in `RepoMappingManifestAction` Delays the flattening from action creation to action execution in preparation for making this action accessible from Starlark. Work... — committed to fmeum/bazel by fmeum a year ago
- Don't eagerly flatten a `NestedSet` in `RepoMappingManifestAction` Delays the flattening from action creation to action execution in preparation for making this action accessible from Starlark. Work... — committed to fmeum/bazel by fmeum a year ago
- Don't eagerly flatten a `NestedSet` in `RepoMappingManifestAction` (#18419) Delays the flattening from action creation to action execution in preparation for making this action accessible from Starla... — committed to bazelbuild/bazel by fmeum a year ago
- Don't eagerly flatten a `NestedSet` in `RepoMappingManifestAction` Delays the flattening from action creation to action execution in preparation for making this action accessible from Starlark. Work... — committed to fweikert/bazel by fmeum a year ago
- python: Add repo mapping to zip builds so runfiles lookup works correctly To make runfiles lookups work correctly with bzlmod, a `_repo_mapping` file is used to map apparent names to canonical names.... — committed to fweikert/bazel by rickeylev a year ago
@bazel-io fork 6.3.0
@bazel-io flag