aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar mjhalupka <mjhalupka@google.com>2018-02-27 14:15:45 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-27 14:17:21 -0800
commit860e103e37ec2765a2dce04bf05c14ba0828066c (patch)
tree08083005666b37c77f363cea078dcc35112d979a /src/main/java/com
parentc5e36f668ae953dfec24850522b10f79bc686945 (diff)
Add @AutoCodec to some PatchTransitions.
PiperOrigin-RevId: 187230702
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/HostTransition.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NoTransition.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NullTransition.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTransitionFactory.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/ContextCollectorOwnerTransition.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/DisableLipoTransition.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/EnableLipoTransition.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/python/PythonVersionTransition.java6
9 files changed, 52 insertions, 27 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
index 4b44be7b6d..14b7dcce69 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
@@ -49,6 +49,8 @@ import com.google.devtools.build.lib.packages.PackageGroup;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.packages.RuleClass;
import com.google.devtools.build.lib.packages.Target;
+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.syntax.EvalException;
import com.google.devtools.build.lib.syntax.EvalUtils;
import com.google.devtools.build.lib.util.OrderedSetMultimap;
@@ -776,10 +778,10 @@ public abstract class DependencyResolver {
}
}
- /**
- * A patch transition that returns a fixed set of options regardless of the input.
- */
- private static class FixedTransition implements PatchTransition {
+ /** A patch transition that returns a fixed set of options regardless of the input. */
+ @AutoCodec
+ @VisibleForSerialization
+ static class FixedTransition implements PatchTransition {
private final BuildOptions toOptions;
FixedTransition(BuildOptions toOptions) {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/HostTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/HostTransition.java
index 08fd6095d0..b62ce78bc4 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/HostTransition.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/HostTransition.java
@@ -14,12 +14,12 @@
package com.google.devtools.build.lib.analysis.config;
import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
-/**
- * Dynamic transition to the host configuration.
- */
+/** Dynamic transition to the host configuration. */
public final class HostTransition implements PatchTransition {
- public static final HostTransition INSTANCE = new HostTransition();
+
+ @AutoCodec public static final HostTransition INSTANCE = new HostTransition();
private HostTransition() {}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NoTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NoTransition.java
index d5581e5469..793edafd3e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NoTransition.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NoTransition.java
@@ -14,12 +14,12 @@
package com.google.devtools.build.lib.analysis.config.transitions;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
-/**
- * No-op configuration transition.
- */
+/** No-op configuration transition. */
public final class NoTransition implements PatchTransition {
- public static final NoTransition INSTANCE = new NoTransition();
+
+ @AutoCodec public static final NoTransition INSTANCE = new NoTransition();
private NoTransition() {}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NullTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NullTransition.java
index 2edbb9fb0f..0d7156b51e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NullTransition.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NullTransition.java
@@ -14,13 +14,12 @@
package com.google.devtools.build.lib.analysis.config.transitions;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
-/**
- * A {@link PatchTransition} to a null configuration.
- */
+/** A {@link PatchTransition} to a null configuration. */
public class NullTransition implements PatchTransition {
- public static final NullTransition INSTANCE = new NullTransition();
+ @AutoCodec public static final NullTransition INSTANCE = new NullTransition();
private NullTransition() {
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTransitionFactory.java b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTransitionFactory.java
index 704ead9611..a5201d583e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTransitionFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTransitionFactory.java
@@ -23,6 +23,8 @@ import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.NonconfigurableAttributeMapper;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.packages.RuleTransitionFactory;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
import java.util.Map;
/**
@@ -34,13 +36,21 @@ import java.util.Map;
public class ConfigFeatureFlagTransitionFactory implements RuleTransitionFactory {
/** Transition which resets the set of flag-value pairs to the map it was constructed with. */
- private static final class ConfigFeatureFlagValuesTransition implements PatchTransition {
+ @AutoCodec
+ @VisibleForSerialization
+ static final class ConfigFeatureFlagValuesTransition implements PatchTransition {
private final ImmutableSortedMap<Label, String> flagValues;
private final int cachedHashCode;
public ConfigFeatureFlagValuesTransition(Map<Label, String> flagValues) {
+ this(ImmutableSortedMap.copyOf(flagValues), flagValues.hashCode());
+ }
+
+ @AutoCodec.Instantiator
+ ConfigFeatureFlagValuesTransition(
+ ImmutableSortedMap<Label, String> flagValues, int cachedHashCode) {
this.flagValues = ImmutableSortedMap.copyOf(flagValues);
- this.cachedHashCode = this.flagValues.hashCode();
+ this.cachedHashCode = cachedHashCode;
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/ContextCollectorOwnerTransition.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/ContextCollectorOwnerTransition.java
index 3958974c55..a13f31991c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/ContextCollectorOwnerTransition.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/ContextCollectorOwnerTransition.java
@@ -19,10 +19,11 @@ import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition;
import com.google.devtools.build.lib.rules.cpp.CppOptions;
import com.google.devtools.build.lib.rules.cpp.CppOptions.LipoConfigurationState;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
/**
- * Configuration transition that creates the "artifact owner" configuration from the LIPO
- * context collector configuration.
+ * Configuration transition that creates the "artifact owner" configuration from the LIPO context
+ * collector configuration.
*
* <p>The context collector creates C++ output artifacts but doesn't create the actions that
* generate those artifacts (this is what {@link BuildConfiguration#isActionsEnabled()} means).
@@ -33,6 +34,8 @@ import com.google.devtools.build.lib.rules.cpp.CppOptions.LipoConfigurationState
* <p>This is a no-op for all configurations but the context collector.
*/
public class ContextCollectorOwnerTransition implements PatchTransition {
+
+ @AutoCodec
public static final ContextCollectorOwnerTransition INSTANCE =
new ContextCollectorOwnerTransition();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/DisableLipoTransition.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/DisableLipoTransition.java
index 3284a1b1c2..111207eb42 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/DisableLipoTransition.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/DisableLipoTransition.java
@@ -17,17 +17,17 @@ package com.google.devtools.build.lib.rules.cpp.transitions;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition;
import com.google.devtools.build.lib.rules.cpp.CppOptions;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig.LipoMode;
/**
* Configuration transition that turns off LIPO/FDO settings.
*
- * <p>Has no effect on non-LIPO-enabled configurations or the LIPO context collector
- * configuration.
- *
+ * <p>Has no effect on non-LIPO-enabled configurations or the LIPO context collector configuration.
*/
public final class DisableLipoTransition implements PatchTransition {
- public static final DisableLipoTransition INSTANCE = new DisableLipoTransition();
+
+ @AutoCodec public static final DisableLipoTransition INSTANCE = new DisableLipoTransition();
private DisableLipoTransition() {}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/EnableLipoTransition.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/EnableLipoTransition.java
index 0d1295cbc5..883d59cd34 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/EnableLipoTransition.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/EnableLipoTransition.java
@@ -20,6 +20,8 @@ import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.rules.cpp.CppOptions;
import com.google.devtools.build.lib.rules.cpp.CppOptions.LipoConfigurationState;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
import java.util.Objects;
/**
@@ -27,6 +29,7 @@ import java.util.Objects;
* disabled.
*/
@Immutable
+@AutoCodec
public class EnableLipoTransition implements PatchTransition {
private final Label ruleLabel;
private final int hashCode;
@@ -36,8 +39,14 @@ public class EnableLipoTransition implements PatchTransition {
* restricting this transition to the LIPO context binary.
*/
public EnableLipoTransition(Label ruleLabel) {
+ this(ruleLabel, Objects.hashCode(ruleLabel));
+ }
+
+ @VisibleForSerialization
+ @AutoCodec.Instantiator
+ EnableLipoTransition(Label ruleLabel, int hashCode) {
this.ruleLabel = ruleLabel;
- this.hashCode = Objects.hashCode(ruleLabel);
+ this.hashCode = hashCode;
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PythonVersionTransition.java b/src/main/java/com/google/devtools/build/lib/rules/python/PythonVersionTransition.java
index cc0eb47f5d..01ce26ab5d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/python/PythonVersionTransition.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/python/PythonVersionTransition.java
@@ -16,11 +16,13 @@ package com.google.devtools.build.lib.rules.python;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
/**
- * A configuration transition that sets the Python version by setting
- * {@link PythonOptions#forcePython}.
+ * A configuration transition that sets the Python version by setting {@link
+ * PythonOptions#forcePython}.
*/
+@AutoCodec
public class PythonVersionTransition implements PatchTransition {
private final PythonVersion defaultVersion;