aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2018-05-31 09:53:52 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-05-31 09:56:05 -0700
commit943673171e07c319e0d8d544667320a6761e5a30 (patch)
treebfbede4eec927c9e3a7d6fbb65c715e242f3696e /src/main/java/com
parenta62ad50dd300ac55b9eb2d60266f058675b9d021 (diff)
Migrate config-related skylark objects to skylarkbuildapi
RELNOTES: None. PiperOrigin-RevId: 198735582
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/config/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagProvider.java28
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/config/ConfigSkylarkCommon.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config/BUILD27
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config/ConfigFeatureFlagProviderApi.java50
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config/ConfigSkylarkCommonApi.java36
7 files changed, 123 insertions, 36 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index af26c284c0..27f1e62f8a 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/android:srcs",
"//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple:srcs",
+ "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config: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",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/config/BUILD b/src/main/java/com/google/devtools/build/lib/rules/config/BUILD
index b67256c354..d9a0a81cd0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/config/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/rules/config/BUILD
@@ -30,6 +30,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/config",
"//src/main/java/com/google/devtools/common/options",
"//third_party:guava",
"//third_party:jsr305",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagProvider.java b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagProvider.java
index 00345db1d3..b406183866 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagProvider.java
@@ -22,20 +22,14 @@ 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.packages.SkylarkProviderIdentifier;
-import com.google.devtools.build.lib.skylarkinterface.Param;
-import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
-import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkbuildapi.config.ConfigFeatureFlagProviderApi;
import com.google.devtools.build.lib.syntax.Environment;
import com.google.devtools.build.lib.syntax.EvalException;
import java.util.Map;
/** Provider for exporting value and valid value predicate of feature flags to consuming targets. */
-@SkylarkModule(
- name = "FeatureFlagInfo",
- doc = "A provider used to access information about config_feature_flag rules."
-)
@Immutable
-public class ConfigFeatureFlagProvider extends NativeInfo {
+public class ConfigFeatureFlagProvider extends NativeInfo implements ConfigFeatureFlagProviderApi {
/** Name used in Skylark for accessing ConfigFeatureFlagProvider. */
static final String SKYLARK_NAME = "FeatureFlagInfo";
@@ -89,27 +83,13 @@ public class ConfigFeatureFlagProvider extends NativeInfo {
}
/** Gets the current value of the flag in the flag's current configuration. */
- @SkylarkCallable(
- name = "value",
- doc = "The current value of the flag in the flag's current configuration.",
- structField = true
- )
+ @Override
public String getFlagValue() {
return value;
}
/** Returns whether this value is valid for this flag. */
- @SkylarkCallable(
- name = "is_valid_value",
- doc = "The value of the flag in the configuration used by the flag rule.",
- parameters = {
- @Param(
- name = "value",
- type = String.class,
- doc = "String, the value to check for validity for this flag."
- ),
- }
- )
+ @Override
public boolean isValidValue(String value) {
return validityPredicate.apply(value);
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSkylarkCommon.java
index 83df9ae0c8..df973593c0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSkylarkCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSkylarkCommon.java
@@ -15,22 +15,14 @@
package com.google.devtools.build.lib.rules.config;
import com.google.devtools.build.lib.packages.Provider;
-import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
-import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkbuildapi.config.ConfigSkylarkCommonApi;
/**
* Skylark namespace used to interact with Blaze's configurability APIs.
*/
-@SkylarkModule(
- name = "config_common",
- doc = "Functions for Skylark to interact with Blaze's configurability APIs."
-)
-public class ConfigSkylarkCommon {
- @SkylarkCallable(
- name = ConfigFeatureFlagProvider.SKYLARK_NAME,
- doc = "The key used to retrieve the provider containing config_feature_flag's value.",
- structField = true
- )
+public class ConfigSkylarkCommon implements ConfigSkylarkCommonApi {
+
+ @Override
public Provider getConfigFeatureFlagProviderConstructor() {
return ConfigFeatureFlagProvider.SKYLARK_CONSTRUCTOR;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config/BUILD b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config/BUILD
new file mode 100644
index 0000000000..1f1b245f6f
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config/BUILD
@@ -0,0 +1,27 @@
+# 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 = "config",
+ srcs = glob(["*.java"]),
+ deps = [
+ "//src/main/java/com/google/devtools/build/lib:skylarkinterface",
+ "//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/config/ConfigFeatureFlagProviderApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config/ConfigFeatureFlagProviderApi.java
new file mode 100644
index 0000000000..362f1cb67a
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config/ConfigFeatureFlagProviderApi.java
@@ -0,0 +1,50 @@
+// 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.config;
+
+import com.google.devtools.build.lib.skylarkbuildapi.StructApi;
+import com.google.devtools.build.lib.skylarkinterface.Param;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+
+/**
+ * An info object for config_feature_flag rules.
+ */
+@SkylarkModule(
+ name = "FeatureFlagInfo",
+ doc = "A provider used to access information about config_feature_flag rules."
+)
+public interface ConfigFeatureFlagProviderApi extends StructApi {
+
+ @SkylarkCallable(
+ name = "value",
+ doc = "The current value of the flag in the flag's current configuration.",
+ structField = true
+ )
+ public String getFlagValue();
+
+ @SkylarkCallable(
+ name = "is_valid_value",
+ doc = "The value of the flag in the configuration used by the flag rule.",
+ parameters = {
+ @Param(
+ name = "value",
+ type = String.class,
+ doc = "String, the value to check for validity for this flag."
+ ),
+ }
+ )
+ public boolean isValidValue(String value);
+}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config/ConfigSkylarkCommonApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config/ConfigSkylarkCommonApi.java
new file mode 100644
index 0000000000..dcc45a2e91
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config/ConfigSkylarkCommonApi.java
@@ -0,0 +1,36 @@
+// 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.config;
+
+import com.google.devtools.build.lib.skylarkbuildapi.ProviderApi;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+
+/**
+ * Helper utility containing functions regarding configurations.ss
+ */
+@SkylarkModule(
+ name = "config_common",
+ doc = "Functions for Skylark to interact with Blaze's configurability APIs."
+)
+public interface ConfigSkylarkCommonApi {
+
+ @SkylarkCallable(
+ name = "FeatureFlagInfo",
+ doc = "The key used to retrieve the provider containing config_feature_flag's value.",
+ structField = true
+ )
+ public ProviderApi getConfigFeatureFlagProviderConstructor();
+}