From ceed58c70f1684fc4da2b32d86198c7a0635ec35 Mon Sep 17 00:00:00 2001 From: janakr Date: Fri, 23 Feb 2018 16:03:28 -0800 Subject: @AutoCodec FilesetOutputConfiguredTarget. PiperOrigin-RevId: 186837642 --- .../FilesetOutputConfiguredTarget.java | 33 +++++++++++++++++----- 1 file changed, 26 insertions(+), 7 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/analysis') diff --git a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/FilesetOutputConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/FilesetOutputConfiguredTarget.java index cb7176a9f1..1d4b001cc3 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/FilesetOutputConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/FilesetOutputConfiguredTarget.java @@ -20,20 +20,26 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.FilesetTraversalParams; import com.google.devtools.build.lib.analysis.TargetContext; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; +import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.fileset.FilesetProvider; +import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.packages.OutputFile; +import com.google.devtools.build.lib.packages.PackageSpecification.PackageGroupContents; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.vfs.PathFragment; import javax.annotation.Nullable; /** - * A configured target for output files generated by {@code Fileset} rules. They are almost the - * same thing as output files except that they implement {@link FilesetProvider} so that - * {@code Fileset} can figure out the link tree behind them. + * A configured target for output files generated by {@code Fileset} rules. They are almost the same + * thing as output files except that they implement {@link FilesetProvider} so that {@code Fileset} + * can figure out the link tree behind them. * *

In an ideal world, this would not be needed: Filesets would depend on other Filesets and not - * their output directories. However, sometimes a Fileset depends on the output directory of - * another Fileset. Thus, we need this hack. + * their output directories. However, sometimes a Fileset depends on the output directory of another + * Fileset. Thus, we need this hack. */ +@AutoCodec public final class FilesetOutputConfiguredTarget extends OutputFileConfiguredTarget implements FilesetProvider { private final Artifact filesetInputManifest; @@ -46,17 +52,30 @@ public final class FilesetOutputConfiguredTarget extends OutputFileConfiguredTar TransitiveInfoCollection generatingRule, Artifact outputArtifact, @Nullable ImmutableList traversals) { - super( + this( targetContext.getLabel(), targetContext.getConfiguration(), targetContext.getVisibility(), + generatingRule, outputArtifact, - generatingRule); + traversals); Preconditions.checkState( outputFile.getLabel().equals(targetContext.getLabel()), "mismatch: %s %s", outputFile, targetContext); + } + + @AutoCodec.VisibleForSerialization + @AutoCodec.Instantiator + FilesetOutputConfiguredTarget( + Label label, + BuildConfiguration configuration, + NestedSet visibility, + TransitiveInfoCollection generatingRule, + Artifact artifact, + @Nullable ImmutableList traversals) { + super(label, configuration, visibility, artifact, generatingRule); FilesetProvider provider = generatingRule.getProvider(FilesetProvider.class); Preconditions.checkArgument(provider != null); filesetInputManifest = provider.getFilesetInputManifest(); -- cgit v1.2.3