aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/ActionArtifactCycleReporter.java
diff options
context:
space:
mode:
authorGravatar janakr <janakr@google.com>2018-06-08 12:51:58 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-06-08 12:53:15 -0700
commit45b308a62f42c2c0bcfe79dcd4046c4025a31059 (patch)
tree176fc0a10fa37906864e952d833966298ccab727 /src/main/java/com/google/devtools/build/lib/skyframe/ActionArtifactCycleReporter.java
parentc44a87b0736c671e07e62f8b09c8e61775543ded (diff)
Make Artifact#equals take the owner into account for derived artifacts.
Derived artifacts' owners are important because they are used to determine the artifact's generating action. Source artifacts' owners are not used in this way, so I left them alone. This allows us to get rid of most uses of ArtifactSkyKey. We may be able to delete it entirely in a follow-up. PiperOrigin-RevId: 199836436
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/ActionArtifactCycleReporter.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ActionArtifactCycleReporter.java24
1 files changed, 17 insertions, 7 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ActionArtifactCycleReporter.java b/src/main/java/com/google/devtools/build/lib/skyframe/ActionArtifactCycleReporter.java
index ae4ced6fb3..81120765cb 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ActionArtifactCycleReporter.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ActionArtifactCycleReporter.java
@@ -18,6 +18,7 @@ import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.actions.ActionLookupData;
+import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.pkgcache.PackageProvider;
import com.google.devtools.build.lib.skyframe.TargetCompletionValue.TargetCompletionKey;
@@ -31,11 +32,12 @@ import com.google.devtools.build.skyframe.SkyKey;
*/
public class ActionArtifactCycleReporter extends AbstractLabelCycleReporter {
@SuppressWarnings("unchecked")
- private static final Predicate<SkyKey> IS_ARTIFACT_OR_ACTION_SKY_KEY = Predicates.or(
- SkyFunctions.isSkyFunction(SkyFunctions.ARTIFACT),
- SkyFunctions.isSkyFunction(SkyFunctions.ACTION_EXECUTION),
- SkyFunctions.isSkyFunction(SkyFunctions.TARGET_COMPLETION),
- SkyFunctions.isSkyFunction(SkyFunctions.TEST_COMPLETION));
+ private static final Predicate<SkyKey> IS_ARTIFACT_OR_ACTION_SKY_KEY =
+ Predicates.or(
+ SkyFunctions.isSkyFunction(Artifact.ARTIFACT),
+ SkyFunctions.isSkyFunction(SkyFunctions.ACTION_EXECUTION),
+ SkyFunctions.isSkyFunction(SkyFunctions.TARGET_COMPLETION),
+ SkyFunctions.isSkyFunction(SkyFunctions.TEST_COMPLETION));
ActionArtifactCycleReporter(PackageProvider packageProvider) {
super(packageProvider);
@@ -46,9 +48,15 @@ public class ActionArtifactCycleReporter extends AbstractLabelCycleReporter {
return prettyPrint(key.functionName(), key.argument());
}
- private String prettyPrint(SkyFunctionName skyFunctionName, Object arg) {
+ private static String prettyPrintArtifact(Artifact artifact) {
+ return "file: " + artifact.getRootRelativePathString();
+ }
+
+ private static String prettyPrint(SkyFunctionName skyFunctionName, Object arg) {
if (arg instanceof ArtifactSkyKey) {
- return "file: " + ((ArtifactSkyKey) arg).getArtifact().getRootRelativePathString();
+ return prettyPrintArtifact(((ArtifactSkyKey) arg).getArtifact());
+ } else if (arg instanceof Artifact) {
+ return prettyPrintArtifact(((Artifact) arg));
} else if (arg instanceof ActionLookupData) {
return "action from: " + arg;
} else if (arg instanceof TargetCompletionKey
@@ -67,6 +75,8 @@ public class ActionArtifactCycleReporter extends AbstractLabelCycleReporter {
Object arg = key.argument();
if (arg instanceof ArtifactSkyKey) {
return ((ArtifactSkyKey) arg).getArtifact().getOwner();
+ } else if (arg instanceof Artifact) {
+ return ((Artifact) arg).getOwner();
} else if (arg instanceof ActionLookupData) {
return ((ActionLookupData) arg).getLabelForErrors();
} else if (arg instanceof TargetCompletionKey