-
Notifications
You must be signed in to change notification settings - Fork 4.4k
Closed
Labels
P1I'll work on this now. (Assignee required)I'll work on this now. (Assignee required)team-Local-ExecIssues and PRs for the Execution (Local) teamIssues and PRs for the Execution (Local) teamtype: bug
Description
Originally reported by @tyler-french in #20886 (but seems to be a separate issue).
Minimal repro (Linux):
.bazelversion
7.0.2
.bazelrc
build --noenable_bzlmod
repo.bzl
def _impl(rctx):
rctx.file("file.txt", "hello")
rctx.file("BUILD", """exports_files(["file.txt"])""")
repo = repository_rule(_impl)
WORSKPACE
load(":repo.bzl", "repo")
repo(name= "repo")
BUILD
genrule(
name = "gen",
outs = ["file.txt"],
srcs = ["@repo//:file.txt"],
cmd = "ln -s $< $@",
)
Result:
ERROR: /usr/local/google/home/tjgq/proj/dangling-symlink-repro/BUILD:1:8: declared output 'file.txt' is a dangling symbolic link
ERROR: /usr/local/google/home/tjgq/proj/dangling-symlink-repro/BUILD:1:8: Executing genrule //:gen failed: not all outputs were created or valid
I believe this is because we copy (actually, move) the symlink as-is out of the sandbox, so it ends up pointing to a location like /tmp/bazel-source-roots/1/file.txt, which only makes sense in the context of the sandbox.
Things to keep in mind when fixing this:
- Make sure that symlinks to the main repo (as opposed to an external repo) work as well
- Make sure that an indirection through multiple symlinks works as well
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
P1I'll work on this now. (Assignee required)I'll work on this now. (Assignee required)team-Local-ExecIssues and PRs for the Execution (Local) teamIssues and PRs for the Execution (Local) teamtype: bug