Skip to content

fix(py_binary): include runfiles.symlinks/root_symlinks in python_zip_file#3750

Open
TvdW wants to merge 1 commit intobazel-contrib:mainfrom
TvdW:symlinks
Open

fix(py_binary): include runfiles.symlinks/root_symlinks in python_zip_file#3750
TvdW wants to merge 1 commit intobazel-contrib:mainfrom
TvdW:symlinks

Conversation

@TvdW
Copy link
Copy Markdown

@TvdW TvdW commented Apr 30, 2026

The legacy zipapp manifest builder only iterated runfiles.files, silently dropping any entries contributed via ctx.runfiles(symlinks=...) or ctx.runfiles(root_symlinks=...). This surfaced under bazel 9 / rules_shell 0.6 because @bazel_tools//tools/bash/runfiles:runfiles became an alias whose legacy path is exposed via a root_symlink, so sh_binary deps of py_binary failed to bootstrap from the produced zip with "cannot find bazel_tools/tools/bash/runfiles/runfiles.bash".

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request ensures that runfiles.symlinks and runfiles.root_symlinks are correctly included in the python_zip_file output group, which fixes issues with certain data dependencies (e.g., sh_binary under Bazel 9). The implementation updates the zip manifest generation logic and includes a new test suite to verify the contents of the generated zip. Feedback focuses on optimizing the collection of symlink target files by using depsets instead of list concatenation to improve efficiency.

Comment thread python/private/py_executable.bzl Outdated
Comment thread python/private/py_executable.bzl Outdated
…_file

The legacy zipapp manifest builder only iterated `runfiles.files`,
silently dropping any entries contributed via `ctx.runfiles(symlinks=...)`
or `ctx.runfiles(root_symlinks=...)`. This surfaced under bazel 9 /
rules_shell 0.6 because `@bazel_tools//tools/bash/runfiles:runfiles`
became an alias whose legacy path is exposed via a root_symlink, so
sh_binary deps of py_binary failed to bootstrap from the produced zip
with "cannot find bazel_tools/tools/bash/runfiles/runfiles.bash".
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant