Targets placed under source code subdirectory named "external" fail to compile with "file not found" errors
See original GitHub issueDescription of the bug:
Consider a source code tree which has one of its directories named “external”:
"source root"
| - foo
| | - dir with targets
| | - dir with more targets
| - external
| | - dir with broken targets
| | | - dir with more broken targets
It appears, that bazel (at least the version I’m using) can not correctly compile targets nested under top level “external” subdirectory.
I’m aware that bazel uses a subdirectory called “external” to store dependencies in the build tree, but this should not infringe on the ability of users to have a directory, so called, in their source tree.
What’s the simplest, easiest way to reproduce this bug? Please provide a minimal example if possible.
Rename one of the immediate subdirs of any source tree to “external”, try to build targets under that directory. I, obviously, had not tried all possible rules, but those I tried are broken (spurious “file not found” errors).
Which operating system are you running Bazel on?
Linux
What is the output of bazel info release
?
release 5.2.0
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?
Tough luck searching for issues with “external” key word in the query. 😃
Any other information, logs, or outputs that you want to share?
No response
Issue Analytics
- State:
- Created a year ago
- Comments:7 (6 by maintainers)
Top GitHub Comments
https://github.com/oakad/bazel_issue_16220
Here.
This works:
This does not:
The subdirs are a copy of each other, up to 1 letter in the name.
The first thing that breaks with
--experimental_sibling_repository_layout
is Stardoc, so I expect the downstream pipeline to be deeply red. If @tetromino’s ongoing work ends up resolving that, that could be a good time to run a meaningful first pipeline.