diff options
author | shahan <shahan@google.com> | 2018-07-24 12:58:45 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-07-24 13:00:06 -0700 |
commit | 168e7c9b86603f4ccfd372b3de8ac07b2eb6a759 (patch) | |
tree | fa7324cd6f29f8151565297573d8062097a372dd /src/main/java/com/google/devtools/build/lib/analysis | |
parent | 4c9149d558161e7d3e363fb697f5852bc5742a36 (diff) |
Configured targets register created source artifacts with Skyframe.
PiperOrigin-RevId: 205876673
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis')
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; |