diff options
author | 2018-05-25 12:27:10 -0700 | |
---|---|---|
committer | 2018-05-25 12:28:54 -0700 | |
commit | c6cf1b94ea0753bb1cc7d0df8c5a8a2762a53eab (patch) | |
tree | 3483fb86f1c64cbc89557fc02d3ac14436969ff9 /src | |
parent | 475d91a2b9314e6803aba5da83156712af63f837 (diff) |
Migrate platform-related skylark objects to skylarkbuildapi
RELNOTES: None.
PiperOrigin-RevId: 198086078
Diffstat (limited to 'src')
11 files changed, 217 insertions, 69 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD index 495f3646e0..7e4b7e0ca4 100644 --- a/src/main/java/com/google/devtools/build/lib/BUILD +++ b/src/main/java/com/google/devtools/build/lib/BUILD @@ -59,6 +59,7 @@ filegroup( "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi:srcs", "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp:srcs", "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java:srcs", + "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform:srcs", "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository:srcs", "//src/main/java/com/google/devtools/build/lib/skylarkdebug/module:srcs", "//src/main/java/com/google/devtools/build/lib/skylarkdebug/proto:srcs", 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 01ecda876d..5c7362fd22 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 @@ -25,6 +25,7 @@ java_library( "//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", + "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform", "//third_party:auto_value", "//third_party:guava", ], diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java index d2b5e1e83b..f048133440 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java @@ -21,20 +21,13 @@ import com.google.devtools.build.lib.packages.NativeInfo; import com.google.devtools.build.lib.packages.NativeProvider; 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; +import com.google.devtools.build.lib.skylarkbuildapi.platform.ConstraintSettingInfoApi; import com.google.devtools.build.lib.util.Fingerprint; /** Provider for a platform constraint setting that is available to be fulfilled. */ -@SkylarkModule( - name = "ConstraintSettingInfo", - doc = "A specific constraint setting that may be used to define a platform.", - category = SkylarkModuleCategory.PROVIDER -) @Immutable @AutoCodec -public class ConstraintSettingInfo extends NativeInfo { +public class ConstraintSettingInfo extends NativeInfo implements ConstraintSettingInfoApi { /** Name used in Skylark for accessing this provider. */ public static final String SKYLARK_NAME = "ConstraintSettingInfo"; @@ -51,11 +44,7 @@ public class ConstraintSettingInfo extends NativeInfo { this.label = label; } - @SkylarkCallable( - name = "label", - doc = "The label of the target that created this constraint.", - structField = true - ) + @Override public Label label() { return label; } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java index 345edb9dee..839acacfe0 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java @@ -21,20 +21,13 @@ import com.google.devtools.build.lib.packages.NativeInfo; import com.google.devtools.build.lib.packages.NativeProvider; 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; +import com.google.devtools.build.lib.skylarkbuildapi.platform.ConstraintValueInfoApi; import com.google.devtools.build.lib.util.Fingerprint; /** Provider for a platform constraint value that fulfills a {@link ConstraintSettingInfo}. */ -@SkylarkModule( - name = "ConstraintValueInfo", - doc = "A value for a constraint setting that can be used to define a platform.", - category = SkylarkModuleCategory.PROVIDER -) @Immutable @AutoCodec -public class ConstraintValueInfo extends NativeInfo { +public class ConstraintValueInfo extends NativeInfo implements ConstraintValueInfoApi { /** Name used in Skylark for accessing this provider. */ public static final String SKYLARK_NAME = "ConstraintValueInfo"; @@ -55,22 +48,12 @@ public class ConstraintValueInfo extends NativeInfo { this.label = label; } - @SkylarkCallable( - name = "constraint", - doc = - "The <a href=\"ConstraintSettingInfo.html\">ConstraintSettingInfo</a> this value can be " - + "applied to.", - structField = true - ) + @Override public ConstraintSettingInfo constraint() { return constraint; } - @SkylarkCallable( - name = "label", - doc = "The label of the target that created this constraint value.", - structField = true - ) + @Override public Label label() { return label; } 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 b5e232883d..3e9cf4976b 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 @@ -31,9 +31,7 @@ import com.google.devtools.build.lib.packages.NativeInfo; import com.google.devtools.build.lib.packages.NativeProvider; 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; +import com.google.devtools.build.lib.skylarkbuildapi.platform.PlatformInfoApi; import com.google.devtools.build.lib.util.Fingerprint; import java.util.ArrayList; import java.util.Collection; @@ -42,14 +40,9 @@ import java.util.Map; import javax.annotation.Nullable; /** Provider for a platform, which is a group of constraints and values. */ -@SkylarkModule( - name = "PlatformInfo", - doc = "Provides access to data about a specific platform.", - category = SkylarkModuleCategory.PROVIDER -) @Immutable @AutoCodec -public class PlatformInfo extends NativeInfo { +public class PlatformInfo extends NativeInfo implements PlatformInfoApi<ConstraintValueInfo> { /** Name used in Skylark for accessing this provider. */ public static final String SKYLARK_NAME = "PlatformInfo"; @@ -90,22 +83,12 @@ public class PlatformInfo extends NativeInfo { return new PlatformInfo(label, constraintsBuilder.build(), remoteExecutionProperties, location); } - @SkylarkCallable( - name = "label", - doc = "The label of the target that created this platform.", - structField = true - ) + @Override public Label label() { return label; } - @SkylarkCallable( - name = "constraints", - doc = - "The <a href=\"ConstraintValueInfo.html\">ConstraintValueInfo</a> instances that define " - + "this platform.", - structField = true - ) + @Override public Iterable<ConstraintValueInfo> constraints() { return constraints.values().asList(); } @@ -119,11 +102,7 @@ public class PlatformInfo extends NativeInfo { return constraints.get(constraint); } - @SkylarkCallable( - name = "remoteExecutionProperties", - doc = "Properties that are available for the use of remote execution.", - structField = true - ) + @Override public String remoteExecutionProperties() { return remoteExecutionProperties; } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/ToolchainInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/ToolchainInfo.java index 7cd3739967..549290a145 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/platform/ToolchainInfo.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/ToolchainInfo.java @@ -21,8 +21,7 @@ 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.autocodec.AutoCodec; -import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; -import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; +import com.google.devtools.build.lib.skylarkbuildapi.platform.ToolchainInfoApi; import com.google.devtools.build.lib.syntax.Environment; import com.google.devtools.build.lib.syntax.EvalException; import com.google.devtools.build.lib.syntax.FunctionSignature; @@ -34,14 +33,9 @@ import java.util.Map; * A provider that supplied information about a specific language toolchain, including what platform * constraints are required for execution and for the target platform. */ -@SkylarkModule( - name = "ToolchainInfo", - doc = "Provides access to data about a specific toolchain.", - category = SkylarkModuleCategory.PROVIDER -) @AutoCodec @Immutable -public class ToolchainInfo extends NativeInfo { +public class ToolchainInfo extends NativeInfo implements ToolchainInfoApi { /** Name used in Skylark for accessing this provider. */ public static final String SKYLARK_NAME = "ToolchainInfo"; diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/BUILD b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/BUILD new file mode 100644 index 0000000000..dbc8f32ae2 --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/BUILD @@ -0,0 +1,28 @@ +# Description: +# This package contains interfaces representing the skylark "build API" +# (but not the implementation of that API). Ultimately, this package +# may be broken out of the Bazel package hierarchy to be standalone. +# Thus, this package should not depend on Bazel-specific packages (only +# those which contain pure-Skylark concepts, such as the interpreter or +# annotation interfaces). + +package(default_visibility = ["//src:__subpackages__"]) + +licenses(["notice"]) # Apache 2.0 + +filegroup( + name = "srcs", + srcs = glob(["**"]), +) + +java_library( + name = "platform", + srcs = glob(["*.java"]), + deps = [ + "//src/main/java/com/google/devtools/build/lib:skylarkinterface", + "//src/main/java/com/google/devtools/build/lib/cmdline", + "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi", + "//third_party:guava", + "//third_party:jsr305", + ], +) diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/ConstraintSettingInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/ConstraintSettingInfoApi.java new file mode 100644 index 0000000000..dd8b18922a --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/ConstraintSettingInfoApi.java @@ -0,0 +1,39 @@ +// Copyright 2018 The Bazel Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.devtools.build.lib.skylarkbuildapi.platform; + +import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.skylarkbuildapi.StructApi; +import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; + +/** + * Info object representing a specific constraint setting that may be used to define a platform. + */ +@SkylarkModule( + name = "ConstraintSettingInfo", + doc = "A specific constraint setting that may be used to define a platform.", + category = SkylarkModuleCategory.PROVIDER +) +public interface ConstraintSettingInfoApi extends StructApi { + + @SkylarkCallable( + name = "label", + doc = "The label of the target that created this constraint.", + structField = true + ) + public Label label(); +} diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/ConstraintValueInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/ConstraintValueInfoApi.java new file mode 100644 index 0000000000..bd056f616f --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/ConstraintValueInfoApi.java @@ -0,0 +1,48 @@ +// Copyright 2018 The Bazel Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.devtools.build.lib.skylarkbuildapi.platform; + +import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.skylarkbuildapi.StructApi; +import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; + +/** + * Info object representing a value for a constraint setting that can be used to define a platform. + */ +@SkylarkModule( + name = "ConstraintValueInfo", + doc = "A value for a constraint setting that can be used to define a platform.", + category = SkylarkModuleCategory.PROVIDER +) +public interface ConstraintValueInfoApi extends StructApi { + + @SkylarkCallable( + name = "constraint", + doc = + "The <a href=\"ConstraintSettingInfo.html\">ConstraintSettingInfo</a> this value can be " + + "applied to.", + structField = true + ) + public ConstraintSettingInfoApi constraint(); + + @SkylarkCallable( + name = "label", + doc = "The label of the target that created this constraint value.", + structField = true + ) + public Label label(); +} diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/PlatformInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/PlatformInfoApi.java new file mode 100644 index 0000000000..99efd9d0da --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/PlatformInfoApi.java @@ -0,0 +1,56 @@ +// Copyright 2018 The Bazel Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.devtools.build.lib.skylarkbuildapi.platform; + +import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.skylarkbuildapi.StructApi; +import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; + +/** + * Info object representing data about a specific platform. + */ +@SkylarkModule( + name = "PlatformInfo", + doc = "Provides access to data about a specific platform.", + category = SkylarkModuleCategory.PROVIDER +) +public interface PlatformInfoApi<ConstraintValueInfoT extends ConstraintValueInfoApi> + extends StructApi { + + @SkylarkCallable( + name = "label", + doc = "The label of the target that created this platform.", + structField = true + ) + public Label label(); + + @SkylarkCallable( + name = "constraints", + doc = + "The <a href=\"ConstraintValueInfo.html\">ConstraintValueInfo</a> instances that define " + + "this platform.", + structField = true + ) + public Iterable<ConstraintValueInfoT> constraints(); + + @SkylarkCallable( + name = "remoteExecutionProperties", + doc = "Properties that are available for the use of remote execution.", + structField = true + ) + public String remoteExecutionProperties(); +} diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/ToolchainInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/ToolchainInfoApi.java new file mode 100644 index 0000000000..ab37760d34 --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/ToolchainInfoApi.java @@ -0,0 +1,30 @@ +// Copyright 2018 The Bazel Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.devtools.build.lib.skylarkbuildapi.platform; + +import com.google.devtools.build.lib.skylarkbuildapi.StructApi; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; + +/** + * Info object representing data about a specific toolchain. + */ +@SkylarkModule( + name = "ToolchainInfo", + doc = "Provides access to data about a specific toolchain.", + category = SkylarkModuleCategory.PROVIDER +) +public interface ToolchainInfoApi extends StructApi { +} |