aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar kchodorow <kchodorow@google.com>2017-05-26 17:30:10 +0200
committerGravatar László Csomor <laszlocsomor@google.com>2017-05-29 14:07:24 +0200
commit2c3b89673232661c1645f568e806a0c0dc7af012 (patch)
tree8c2338281a1bb03d390fc3938ae1dbf900e90020 /src
parent97975603e5ff2247e6bb352e3afd27fea38f108d (diff)
Make workspace cycle reporting a little more flexible
Fixes #2999. PiperOrigin-RevId: 157222957
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkylarkModuleCycleReporter.java33
1 files changed, 21 insertions, 12 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkModuleCycleReporter.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkModuleCycleReporter.java
index cc713bb9b5..d9aab5bf79 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkModuleCycleReporter.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkModuleCycleReporter.java
@@ -100,21 +100,30 @@ public class SkylarkModuleCycleReporter implements CyclesReporter.SingleCycleRep
// BUILD file.
eventHandler.handle(Event.error(null, cycleMessage.toString()));
return true;
- } else if (Iterables.any(cycle, IS_PACKAGE_LOOKUP) && Iterables.any(cycle, IS_WORKSPACE_FILE)
- && (IS_REPOSITORY_DIRECTORY.apply(lastPathElement)
+ } else if (Iterables.any(cycle, IS_WORKSPACE_FILE)
+ || IS_REPOSITORY_DIRECTORY.apply(lastPathElement)
|| IS_PACKAGE_SKY_KEY.apply(lastPathElement)
|| IS_EXTERNAL_PACKAGE.apply(lastPathElement)
- || IS_LOCAL_REPOSITORY_LOOKUP.apply(lastPathElement))) {
+ || IS_LOCAL_REPOSITORY_LOOKUP.apply(lastPathElement)) {
// We have a cycle in the workspace file, report as such.
- Label fileLabel =
- (Label) Iterables.getLast(Iterables.filter(cycle, IS_AST_FILE_LOOKUP)).argument();
- String repositoryName = fileLabel.getPackageIdentifier().getRepository().strippedName();
- eventHandler.handle(Event.error(null,
- "Failed to load Skylark extension '" + fileLabel.toString() + "'.\n"
- + "It usually happens when the repository is not defined prior to being used.\n"
- + "Maybe repository '" + repositoryName
- + "' was defined later in your WORKSPACE file?"));
- return true;
+ if (Iterables.any(cycle, IS_AST_FILE_LOOKUP)) {
+ Label fileLabel =
+ (Label) Iterables.getLast(Iterables.filter(cycle, IS_AST_FILE_LOOKUP)).argument();
+ String repositoryName = fileLabel.getPackageIdentifier().getRepository().strippedName();
+ eventHandler.handle(Event.error(null,
+ "Failed to load Skylark extension '" + fileLabel.toString() + "'.\n"
+ + "It usually happens when the repository is not defined prior to being used.\n"
+ + "Maybe repository '" + repositoryName
+ + "' was defined later in your WORKSPACE file?"));
+ return true;
+ } else if (Iterables.any(cycle, IS_PACKAGE_LOOKUP)) {
+ eventHandler.handle(
+ Event.error(null, "cycle detected loading "
+ + String.join(
+ " ", lastPathElement.functionName().toString().toLowerCase().split("_"))
+ + " '" + lastPathElement.argument().toString() + "'"));
+ return true;
+ }
}
return false;
}