aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java
index bfee814b6c..3b3462d420 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java
@@ -29,6 +29,9 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.packages.NativeInfo;
import com.google.devtools.build.lib.packages.NativeProvider;
+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.skylarkinterface.SkylarkModuleCategory;
@@ -49,7 +52,9 @@ import javax.annotation.Nullable;
category = SkylarkModuleCategory.PROVIDER
)
@Immutable
+@AutoCodec
public class PlatformInfo extends NativeInfo {
+ public static final ObjectCodec<PlatformInfo> CODEC = new PlatformInfo_AutoCodec();
/** Name used in Skylark for accessing this provider. */
public static final String SKYLARK_NAME = "PlatformInfo";
@@ -99,27 +104,36 @@ public class PlatformInfo extends NativeInfo {
private final ImmutableMap<ConstraintSettingInfo, ConstraintValueInfo> constraints;
private final String remoteExecutionProperties;
- private PlatformInfo(
+ @AutoCodec.Instantiator
+ @VisibleForSerialization
+ PlatformInfo(
Label label,
- ImmutableList<ConstraintValueInfo> constraints,
+ ImmutableMap<ConstraintSettingInfo, ConstraintValueInfo> constraints,
String remoteExecutionProperties,
Location location) {
super(
SKYLARK_CONSTRUCTOR,
ImmutableMap.<String, Object>of(
"label", label,
- "constraints", constraints),
+ "constraints", constraints.values().asList()),
location);
this.label = label;
+ this.constraints = constraints;
this.remoteExecutionProperties = remoteExecutionProperties;
+ }
+ static PlatformInfo create(
+ Label label,
+ ImmutableList<ConstraintValueInfo> constraints,
+ String remoteExecutionProperties,
+ Location location) {
ImmutableMap.Builder<ConstraintSettingInfo, ConstraintValueInfo> constraintsBuilder =
new ImmutableMap.Builder<>();
for (ConstraintValueInfo constraint : constraints) {
constraintsBuilder.put(constraint.constraint(), constraint);
}
- this.constraints = constraintsBuilder.build();
+ return new PlatformInfo(label, constraintsBuilder.build(), remoteExecutionProperties, location);
}
@SkylarkCallable(
@@ -243,7 +257,7 @@ public class PlatformInfo extends NativeInfo {
*/
public PlatformInfo build() throws DuplicateConstraintException {
ImmutableList<ConstraintValueInfo> validatedConstraints = validateConstraints(constraints);
- return new PlatformInfo(label, validatedConstraints, remoteExecutionProperties, location);
+ return PlatformInfo.create(label, validatedConstraints, remoteExecutionProperties, location);
}
public static ImmutableList<ConstraintValueInfo> validateConstraints(