"." doesn't work as a target name
- Dominant language
- Java
- Stars
- 25.8k
- Forks
- 4.6k
- Avg merge
- 2d 20h
- Merged PRs (30d)
- 72
Description
Documentation URL: https://docs.bazel.build/versions/master/build-ref.html says:
> a target name may consist of exactly '.'.
But, when I take stage3/main/BUILD from the C++ tutorial and change the name of the `cc_binary` target to `"."`, and then issue `bazel build "//main:."` from the stage3/main directory, I get:
```
Loading:
Loading: 0 packages loaded
Analyzing: target //main:. (1 packages loaded, 0 targets configured)
FATAL: bazel crashed due to an internal error. Printing stack trace:
java.lang.RuntimeException: Unrecoverable error while evaluating node 'ConfiguredTargetKey{label=//main:., config=BuildConfigurationValue.Key[86e57527e1c8bb10edc853e734cb858f8159d8f3e0a4df9ceb16f80aad784b93]}' (requested by nodes )
at com.google.devtools.build.skyframe.AbstractParallelEvaluator$Evaluate.run(AbstractParallelEvaluator.java:563)
at com.google.devtools.build.lib.concurrent.AbstractQueueVisitor$WrappedRunnable.run(AbstractQueueVisitor.java:398)
at java.base/java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.getArtifactNameForCategory(CcToolchainFeatures.java:1771)
at com.google.devtools.build.lib.rules.cpp.CppHelper.getArtifactNameForCategory(CppHelper.java:826)
at com.google.devtools.build.lib.rules.cpp.CppHelper.getLinkedArtifact(CppHelper.java:464)
at com.google.devtools.build.lib.rules.cpp.CppHelper.getLinkedArtifact(CppHelper.java:448)
at com.google.devtools.build.lib.rules.cpp.CcBinary.init(CcBinary.java:359)
at com.google.devtools.build.lib.rules.cpp.CcBinary.create(CcBinary.java:294)
at com.google.devtools.build.lib.rules.cpp.CcBinary.create(CcBinary.java:99)
at com.google.devtools.build.lib.analysis.ConfiguredTargetFactory.createRule(ConfiguredTargetFactory.java:381)
at com.google.devtools.build.lib.analysis.ConfiguredTargetFactory.createConfiguredTarget(ConfiguredTargetFactory.java:194)
at com.google.devtools.build.lib.skyframe.SkyframeBuildView.createConfiguredTarget(SkyframeBuildView.java:938)
at com.google.devtools.build.lib.skyframe.ConfiguredTargetFunction.createConfiguredTarget(ConfiguredTargetFunction.java:1013)
at com.google.devtools.build.lib.skyframe.ConfiguredTargetFunction.compute(ConfiguredTargetFunction.java:371)
at com.google.devtools.build.skyframe.AbstractParallelEvaluator$Evaluate.run(AbstractParallelEvaluator.java:477)
... 7 more
```
This is bazel 4.0.0 on macOS.
Contributor guide
Research direction
Reproduce the failure with stage3/main/BUILD, the renamed cc_binary target, and bazel build //main:. Start by reading CcToolchainFeatures.java, CppHelper.java, and CcBinary.java at the stack-trace locations. Done means the target name '.' no longer crashes Bazel and the documented target can be built.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, java
- Domain
- build-system
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100