diff options
author | 2018-02-15 14:59:32 -0800 | |
---|---|---|
committer | 2018-02-15 15:01:28 -0800 | |
commit | db985d145c6a3496721359d6af0139c3eae2b8dc (patch) | |
tree | 937e000d31068c0104686ac7c6df8bd32827700d /src/main/java/com/google/devtools | |
parent | e1c7d33efcd640f8ad2bf8a718d5976a5f3cef4e (diff) |
Tag for classes with @AutoCodec.
PiperOrigin-RevId: 185906605
Diffstat (limited to 'src/main/java/com/google/devtools')
10 files changed, 75 insertions, 32 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD index ee703b78eb..a72df83bb3 100644 --- a/src/main/java/com/google/devtools/build/lib/BUILD +++ b/src/main/java/com/google/devtools/build/lib/BUILD @@ -426,6 +426,8 @@ java_library( ":transitive-info-provider", "//src/main/java/com/google/devtools/build/lib/cmdline", "//src/main/java/com/google/devtools/build/lib/concurrent", + "//src/main/java/com/google/devtools/build/lib/skyframe/serialization", + "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec", "//third_party:guava", ], ) @@ -927,6 +929,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/cmdline", "//src/main/java/com/google/devtools/build/lib/collect", "//src/main/java/com/google/devtools/build/lib/collect/nestedset", + "//src/main/java/com/google/devtools/build/lib/collect/nestedset:serialization", "//src/main/java/com/google/devtools/build/lib/concurrent", "//src/main/java/com/google/devtools/build/lib/rules/cpp", "//src/main/java/com/google/devtools/build/lib/shell", diff --git a/src/main/java/com/google/devtools/build/lib/analysis/MiddlemanProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/MiddlemanProvider.java index 9661ab7b9f..452c26bfae 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/MiddlemanProvider.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/MiddlemanProvider.java @@ -16,15 +16,18 @@ package com.google.devtools.build.lib.analysis; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; -/** - * A provider class that supplies an aggregating middleman to the targets that depend on it. - */ +/** A provider class that supplies an aggregating middleman to the targets that depend on it. */ @Immutable +@AutoCodec public final class MiddlemanProvider implements TransitiveInfoProvider { + public static final ObjectCodec<MiddlemanProvider> CODEC = new MiddlemanProvider_AutoCodec(); private final NestedSet<Artifact> middlemanArtifact; + @AutoCodec.Instantiator public MiddlemanProvider(NestedSet<Artifact> middlemanArtifact) { this.middlemanArtifact = middlemanArtifact; } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigMatchingProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigMatchingProvider.java index c1a28bca67..832f39f605 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigMatchingProvider.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigMatchingProvider.java @@ -14,29 +14,33 @@ package com.google.devtools.build.lib.analysis.config; +import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Multimap; import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import java.util.Map; import java.util.Set; /** - * A "configuration target" that asserts whether or not it matches the - * configuration it's bound to. + * A "configuration target" that asserts whether or not it matches the configuration it's bound to. * - * <p>This can be used, e.g., to declare a BUILD target that defines the - * conditions which trigger a configurable attribute branch. In general, - * this can be used to trigger for any user-configurable build behavior. + * <p>This can be used, e.g., to declare a BUILD target that defines the conditions which trigger a + * configurable attribute branch. In general, this can be used to trigger for any user-configurable + * build behavior. */ @Immutable +@AutoCodec public final class ConfigMatchingProvider implements TransitiveInfoProvider { + public static final ObjectCodec<ConfigMatchingProvider> CODEC = + new ConfigMatchingProvider_AutoCodec(); private final Label label; - private final boolean matches; - private final Multimap<String, String> settingsMap; + private final ImmutableMultimap<String, String> settingsMap; private final Map<Label, String> flagSettingsMap; + private final boolean matches; /** * @param label the build label corresponding to this matcher @@ -45,9 +49,10 @@ public final class ConfigMatchingProvider implements TransitiveInfoProvider { * @param matches whether or not this matcher matches the configuration associated with its * configured target */ + @AutoCodec.Instantiator public ConfigMatchingProvider( Label label, - Multimap<String, String> settingsMap, + ImmutableMultimap<String, String> settingsMap, Map<Label, String> flagSettingsMap, boolean matches) { this.label = label; diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/BUILD b/src/main/java/com/google/devtools/build/lib/analysis/platform/BUILD index b36b478b73..01ecda876d 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/platform/BUILD +++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/BUILD @@ -23,6 +23,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib:skylarkinterface", "//src/main/java/com/google/devtools/build/lib:transitive-info-provider", "//src/main/java/com/google/devtools/build/lib/concurrent", + "//src/main/java/com/google/devtools/build/lib/skyframe/serialization", "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec", "//third_party:auto_value", "//third_party:guava", diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/DeclaredToolchainInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/DeclaredToolchainInfo.java index 30931a4211..8d0b4d7f39 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/platform/DeclaredToolchainInfo.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/DeclaredToolchainInfo.java @@ -18,6 +18,8 @@ import com.google.auto.value.AutoValue; import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; /** * Provider for a toolchain declaration, which assosiates a toolchain type, the execution and target @@ -26,7 +28,10 @@ import com.google.devtools.build.lib.cmdline.Label; * are exposed to Skylark and Bazel via {@link ToolchainInfo} providers. */ @AutoValue +@AutoCodec public abstract class DeclaredToolchainInfo implements TransitiveInfoProvider { + public static final ObjectCodec<DeclaredToolchainInfo> CODEC = + new DeclaredToolchainInfo_AutoCodec(); /** * The type of the toolchain being declared. This will be a label of a toolchain_type() target. @@ -43,15 +48,13 @@ public abstract class DeclaredToolchainInfo implements TransitiveInfoProvider { public abstract Label toolchainLabel(); /** Returns a new {@link DeclaredToolchainInfo} with the given data. */ + @AutoCodec.Instantiator public static DeclaredToolchainInfo create( Label toolchainType, - Iterable<ConstraintValueInfo> execConstraints, - Iterable<ConstraintValueInfo> targetConstraints, + ImmutableList<ConstraintValueInfo> execConstraints, + ImmutableList<ConstraintValueInfo> targetConstraints, Label toolchainLabel) { return new AutoValue_DeclaredToolchainInfo( - toolchainType, - ImmutableList.copyOf(execConstraints), - ImmutableList.copyOf(targetConstraints), - toolchainLabel); + toolchainType, execConstraints, targetConstraints, toolchainLabel); } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/LipoContextProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/LipoContextProvider.java index 0edb0094ea..4f4389a3e6 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/LipoContextProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/LipoContextProvider.java @@ -17,32 +17,37 @@ import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.vfs.PathFragment; - import java.util.Map; /** * Provides LIPO context information to the LIPO-enabled target configuration. * - * <p>This is a rollup of the data collected in the LIPO context collector configuration. - * Each target in the LIPO context collector configuration has a {@link TransitiveLipoInfoProvider} - * which is used to transitively collect the data, then the {@code cc_binary} that is referred to - * in {@code --lipo_context} puts the collected data into {@link LipoContextProvider}, of which - * there is only one in any given build. + * <p>This is a rollup of the data collected in the LIPO context collector configuration. Each + * target in the LIPO context collector configuration has a {@link TransitiveLipoInfoProvider} which + * is used to transitively collect the data, then the {@code cc_binary} that is referred to in + * {@code --lipo_context} puts the collected data into {@link LipoContextProvider}, of which there + * is only one in any given build. */ @Immutable +@AutoCodec public final class LipoContextProvider implements TransitiveInfoProvider { + public static final ObjectCodec<LipoContextProvider> CODEC = new LipoContextProvider_AutoCodec(); private final CppCompilationContext cppCompilationContext; private final ImmutableMap<Artifact, IncludeScannable> includeScannables; private final ImmutableMap<PathFragment, Artifact> sourceArtifactMap; - public LipoContextProvider(CppCompilationContext cppCompilationContext, - Map<Artifact, IncludeScannable> scannables, + @AutoCodec.Instantiator + public LipoContextProvider( + CppCompilationContext cppCompilationContext, + Map<Artifact, IncludeScannable> includeScannables, Map<PathFragment, Artifact> sourceArtifactMap) { this.cppCompilationContext = cppCompilationContext; - this.includeScannables = ImmutableMap.copyOf(scannables); + this.includeScannables = ImmutableMap.copyOf(includeScannables); this.sourceArtifactMap = ImmutableMap.copyOf(sourceArtifactMap); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/filegroup/FilegroupPathProvider.java b/src/main/java/com/google/devtools/build/lib/rules/filegroup/FilegroupPathProvider.java index 80e96b895e..35447dc223 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/filegroup/FilegroupPathProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/filegroup/FilegroupPathProvider.java @@ -16,15 +16,20 @@ package com.google.devtools.build.lib.rules.filegroup; import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.vfs.PathFragment; -/** - * A transitive info provider for dependent targets to query {@code path} attributes. - */ +/** A transitive info provider for dependent targets to query {@code path} attributes. */ @Immutable +@AutoCodec public final class FilegroupPathProvider implements TransitiveInfoProvider { + public static final ObjectCodec<FilegroupPathProvider> CODEC = + new FilegroupPathProvider_AutoCodec(); + private final PathFragment pathFragment; + @AutoCodec.Instantiator public FilegroupPathProvider(PathFragment pathFragment) { this.pathFragment = pathFragment; } diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfo.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfo.java index 2cf8b9afa4..5489498ba3 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfo.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfo.java @@ -25,6 +25,9 @@ import com.google.devtools.build.lib.packages.BuildType; import com.google.devtools.build.lib.packages.NativeInfo; import com.google.devtools.build.lib.packages.NativeProvider; import com.google.devtools.build.lib.packages.RuleErrorConsumer; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization; import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; import com.google.devtools.build.lib.vfs.PathFragment; @@ -33,7 +36,10 @@ import javax.annotation.Nullable; /** Information about the Java runtime used by the <code>java_*</code> rules. */ @SkylarkModule(name = "JavaRuntimeInfo", doc = "Information about the Java runtime being used.") @Immutable +@AutoCodec public class JavaRuntimeInfo extends NativeInfo { + public static final ObjectCodec<JavaRuntimeInfo> CODEC = new JavaRuntimeInfo_AutoCodec(); + public static final String SKYLARK_NAME = "JavaRuntimeInfo"; public static final NativeProvider<JavaRuntimeInfo> PROVIDER = @@ -96,7 +102,9 @@ public class JavaRuntimeInfo extends NativeInfo { private final PathFragment javaBinaryExecPath; private final PathFragment javaBinaryRunfilesPath; - private JavaRuntimeInfo( + @AutoCodec.Instantiator + @VisibleForSerialization + JavaRuntimeInfo( NestedSet<Artifact> javaBaseInputs, NestedSet<Artifact> javaBaseInputsMiddleman, PathFragment javaHome, diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeToolchainInfo.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeToolchainInfo.java index 18e6e908e9..e44bdac30d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeToolchainInfo.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeToolchainInfo.java @@ -18,15 +18,21 @@ import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.analysis.platform.ToolchainInfo; import com.google.devtools.build.lib.concurrent.ThreadSafety; import com.google.devtools.build.lib.events.Location; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; /** * A wrapper class for {@link JavaRuntimeInfo} that can be used to expose it to the toolchain * resolution system. */ @ThreadSafety.Immutable +@AutoCodec public final class JavaRuntimeToolchainInfo extends ToolchainInfo { + public static final ObjectCodec<JavaRuntimeToolchainInfo> CODEC = + new JavaRuntimeToolchainInfo_AutoCodec(); private final JavaRuntimeInfo javaRuntime; + @AutoCodec.Instantiator public JavaRuntimeToolchainInfo(JavaRuntimeInfo javaRuntime) { super(ImmutableMap.of(), Location.BUILTIN); this.javaRuntime = javaRuntime; diff --git a/src/main/java/com/google/devtools/build/lib/rules/platform/Toolchain.java b/src/main/java/com/google/devtools/build/lib/rules/platform/Toolchain.java index e6e2d0a890..28a4c57671 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/platform/Toolchain.java +++ b/src/main/java/com/google/devtools/build/lib/rules/platform/Toolchain.java @@ -14,6 +14,7 @@ package com.google.devtools.build.lib.rules.platform; +import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.FileProvider; import com.google.devtools.build.lib.analysis.FilesToRunProvider; @@ -50,7 +51,10 @@ public class Toolchain implements RuleConfiguredTargetFactory { DeclaredToolchainInfo registeredToolchain = DeclaredToolchainInfo.create( - toolchainType, execConstraints, targetConstraints, toolchainLabel); + toolchainType, + ImmutableList.copyOf(execConstraints), + ImmutableList.copyOf(targetConstraints), + toolchainLabel); return new RuleConfiguredTargetBuilder(ruleContext) .addProvider(RunfilesProvider.class, RunfilesProvider.EMPTY) |