diff options
Diffstat (limited to 'src/main/java/com')
4 files changed, 24 insertions, 7 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingPatchTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingPatchTransition.java index eade44b9e7..86461e1900 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingPatchTransition.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingPatchTransition.java @@ -16,17 +16,25 @@ package com.google.devtools.build.lib.analysis.config.transitions; import com.google.common.collect.Iterables; import com.google.devtools.build.lib.analysis.config.BuildOptions; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; /** * A {@link ComposingSplitTransition} that only supports {@link PatchTransition}s * * <p>Calling code that doesn't want to have to handle splits should prefer this version. */ +@AutoCodec public class ComposingPatchTransition implements PatchTransition { private final ComposingSplitTransition delegate; public ComposingPatchTransition(PatchTransition transition1, PatchTransition transition2) { - this.delegate = new ComposingSplitTransition(transition1, transition2); + this(new ComposingSplitTransition(transition1, transition2)); + } + + @AutoCodec.Instantiator + @AutoCodec.VisibleForSerialization + ComposingPatchTransition(ComposingSplitTransition delegate) { + this.delegate = delegate; } @Override diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingSplitTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingSplitTransition.java index 1bcbebca68..dad2928e69 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingSplitTransition.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingSplitTransition.java @@ -17,12 +17,14 @@ package com.google.devtools.build.lib.analysis.config.transitions; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.analysis.config.BuildOptions; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import java.util.List; /** * A configuration transition that composes two other transitions in an ordered sequence. * * <p>Example: + * * <pre> * transition1: { someSetting = $oldVal + " foo" } * transition2: { someSetting = $oldVal + " bar" } @@ -33,16 +35,18 @@ import java.util.List; * combination thereof. We implement this class as a {@link SplitTransition} since that abstraction * captures all possible combinations. */ +@AutoCodec public class ComposingSplitTransition implements SplitTransition { private ConfigurationTransition transition1; private ConfigurationTransition transition2; /** - * Creates a {@link ComposingSplitTransition} that applies the sequence: - * {@code fromOptions -> transition1 -> transition2 -> toOptions }. + * Creates a {@link ComposingSplitTransition} that applies the sequence: {@code fromOptions -> + * transition1 -> transition2 -> toOptions }. */ - public ComposingSplitTransition(ConfigurationTransition transition1, - ConfigurationTransition transition2) { + @AutoCodec.Instantiator + public ComposingSplitTransition( + ConfigurationTransition transition1, ConfigurationTransition transition2) { this.transition1 = verifySupported(transition1); this.transition2 = verifySupported(transition2); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactory.java b/src/main/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactory.java index cf25d972cf..3b1261daca 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactory.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactory.java @@ -785,6 +785,7 @@ public class ResourceFilterFactory { return new AddDynamicallyConfiguredResourceFilteringTransition(attrs); } + @AutoCodec public static final PatchTransition REMOVE_DYNAMICALLY_CONFIGURED_RESOURCE_FILTERING_TRANSITION = new RemoveDynamicallyConfiguredResourceFilteringTransition(); @@ -796,6 +797,8 @@ public class ResourceFilterFactory { } } + // There is no codec for this class because AttributeMap can contain extremely heavyweight + // objects like Package. @VisibleForTesting static final class AddDynamicallyConfiguredResourceFilteringTransition extends BaseDynamicallyConfiguredResourceFilteringTransition { diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java index 8284011f06..10b2198906 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java @@ -35,6 +35,7 @@ import com.google.devtools.build.lib.rules.apple.ApplePlatform; import com.google.devtools.build.lib.rules.apple.ApplePlatform.PlatformType; import com.google.devtools.build.lib.rules.apple.DottedVersion; import com.google.devtools.build.lib.rules.objc.ObjcRuleClasses.PlatformRule; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter; import com.google.devtools.build.lib.skylarkinterface.SkylarkValue; import java.util.List; @@ -161,9 +162,10 @@ public class MultiArchSplitTransitionProvider implements SplitTransitionProvider /** * Transition that results in one configured target per architecture specified in the - * platform-specific cpu flag for a particular platform type (for example, --watchos_cpus - * for watchos platform type). + * platform-specific cpu flag for a particular platform type (for example, --watchos_cpus for + * watchos platform type). */ + @AutoCodec protected static class AppleBinaryTransition implements SplitTransition { private final PlatformType platformType; |