diff options
author | kchodorow <kchodorow@google.com> | 2017-05-26 17:30:10 +0200 |
---|---|---|
committer | László Csomor <laszlocsomor@google.com> | 2017-05-29 14:07:24 +0200 |
commit | 2c3b89673232661c1645f568e806a0c0dc7af012 (patch) | |
tree | 8c2338281a1bb03d390fc3938ae1dbf900e90020 /src | |
parent | 97975603e5ff2247e6bb352e3afd27fea38f108d (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.java | 33 |
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; } |