bazelbuild / bazelbuild/bazel

"." doesn't work as a target name

Open
#13,037 8 comments 0 reactions 0 assignees View on GitHub
not stale P4 team-Rules-CPP type: bug
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.