diff options
author | 2018-05-31 09:53:52 -0700 | |
---|---|---|
committer | 2018-05-31 09:56:05 -0700 | |
commit | 943673171e07c319e0d8d544667320a6761e5a30 (patch) | |
tree | bfbede4eec927c9e3a7d6fbb65c715e242f3696e /src/main/java/com | |
parent | a62ad50dd300ac55b9eb2d60266f058675b9d021 (diff) |
Migrate config-related skylark objects to skylarkbuildapi
RELNOTES: None.
PiperOrigin-RevId: 198735582
Diffstat (limited to 'src/main/java/com')
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(); +} |