aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis
diff options
context:
space:
mode:
authorGravatar shahan <shahan@google.com>2018-07-24 12:58:45 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-07-24 13:00:06 -0700
commit168e7c9b86603f4ccfd372b3de8ac07b2eb6a759 (patch)
treefa7324cd6f29f8151565297573d8062097a372dd /src/main/java/com/google/devtools/build/lib/analysis
parent4c9149d558161e7d3e363fb697f5852bc5742a36 (diff)
Configured targets register created source artifacts with Skyframe.
PiperOrigin-RevId: 205876673
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java5
3 files changed, 17 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java
index 5a8b535ff9..32d02911e2 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java
@@ -160,4 +160,7 @@ public interface AnalysisEnvironment extends ActionRegistry {
ImmutableSet<Artifact> getTreeArtifactsConflictingWithFiles();
ActionKeyContext getActionKeyContext();
+
+ /** Informs Skyframe that the {@link ConfiguredTarget} accesses {@code source}. */
+ default void registerSourceDependency(Artifact.SourceArtifact source) {}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java b/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java
index f54f723880..2cf31cf0cc 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java
@@ -50,6 +50,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
+import java.util.function.Consumer;
import javax.annotation.Nullable;
/**
@@ -83,6 +84,8 @@ public class CachingAnalysisEnvironment implements AnalysisEnvironment {
*/
final List<ActionAnalysisMetadata> actions = new ArrayList<>();
+ private Consumer<Artifact.SourceArtifact> sourceDependencyListener;
+
public CachingAnalysisEnvironment(
ArtifactFactory artifactFactory,
ActionKeyContext actionKeyContext,
@@ -90,7 +93,8 @@ public class CachingAnalysisEnvironment implements AnalysisEnvironment {
boolean isSystemEnv,
boolean extendedSanityChecks,
ExtendedEventHandler errorEventListener,
- SkyFunction.Environment env) {
+ SkyFunction.Environment env,
+ Consumer<Artifact.SourceArtifact> sourceDependencyListener) {
this.artifactFactory = artifactFactory;
this.actionKeyContext = actionKeyContext;
this.owner = Preconditions.checkNotNull(owner);
@@ -100,6 +104,7 @@ public class CachingAnalysisEnvironment implements AnalysisEnvironment {
this.skyframeEnv = env;
middlemanFactory = new MiddlemanFactory(artifactFactory, this);
artifacts = new HashMap<>();
+ this.sourceDependencyListener = sourceDependencyListener;
}
public void disable(Target target) {
@@ -353,4 +358,9 @@ public class CachingAnalysisEnvironment implements AnalysisEnvironment {
public ArtifactOwner getOwner() {
return owner;
}
+
+ @Override
+ public void registerSourceDependency(Artifact.SourceArtifact source) {
+ sourceDependencyListener.accept(source);
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
index e6dd22da7f..30861cd3ac 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
@@ -20,6 +20,7 @@ import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Artifact;
+import com.google.devtools.build.lib.actions.Artifact.SourceArtifact;
import com.google.devtools.build.lib.actions.ArtifactFactory;
import com.google.devtools.build.lib.actions.ArtifactOwner;
import com.google.devtools.build.lib.actions.ArtifactRoot;
@@ -243,12 +244,12 @@ public final class ConfiguredTargetFactory {
}
} else if (target instanceof InputFile) {
InputFile inputFile = (InputFile) target;
- Artifact artifact =
+ SourceArtifact artifact =
artifactFactory.getSourceArtifact(
inputFile.getExecPath(),
inputFile.getPackage().getSourceRoot(),
ConfiguredTargetKey.of(target.getLabel(), config));
-
+ analysisEnvironment.registerSourceDependency(artifact);
return new InputFileConfiguredTarget(targetContext, inputFile, artifact);
} else if (target instanceof PackageGroup) {
PackageGroup packageGroup = (PackageGroup) target;