diff options
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.java | 24 |
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( |