aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2018-05-25 12:27:10 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-05-25 12:28:54 -0700
commitc6cf1b94ea0753bb1cc7d0df8c5a8a2762a53eab (patch)
tree3483fb86f1c64cbc89557fc02d3ac14436969ff9 /src
parent475d91a2b9314e6803aba5da83156712af63f837 (diff)
Migrate platform-related skylark objects to skylarkbuildapi
RELNOTES: None. PiperOrigin-RevId: 198086078
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/platform/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java17
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java25
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java31
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/platform/ToolchainInfo.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/BUILD28
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/ConstraintSettingInfoApi.java39
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/ConstraintValueInfoApi.java48
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/PlatformInfoApi.java56
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/ToolchainInfoApi.java30
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 {
+}