diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis')
3 files changed, 27 insertions, 46 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoCollection.java b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoCollection.java index 5cb79fda16..e557cc211f 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoCollection.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoCollection.java @@ -14,12 +14,19 @@ package com.google.devtools.build.lib.analysis; +import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.collect.nestedset.NestedSet; +import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; +import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.packages.RequiredProviders; +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.skylarkinterface.SkylarkModuleCategory; import com.google.devtools.build.lib.syntax.SkylarkIndexable; +import com.google.devtools.build.lib.syntax.SkylarkNestedSet; import javax.annotation.Nullable; /** @@ -62,6 +69,20 @@ import javax.annotation.Nullable; ) public interface TransitiveInfoCollection extends SkylarkIndexable, SkylarkProviderCollection { + @SkylarkCallable(name = "output_group", + documented = false, // TODO(dslomov): document. + parameters = { + @Param(name = "group_name", type = String.class, doc = "Output group name") + } + ) + default SkylarkNestedSet outputGroup(String group) { + OutputGroupInfo provider = OutputGroupInfo.get(this); + NestedSet<Artifact> result = provider != null + ? provider.getOutputGroup(group) + : NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER); + return SkylarkNestedSet.of(Artifact.class, result); + } + /** * Returns the transitive information provider requested, or null if the provider is not found. * The provider has to be a TransitiveInfoProvider Java class. diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkCommandLine.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkCommandLine.java index 0bbc29ae1a..6dd7b7f258 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkCommandLine.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkCommandLine.java @@ -17,12 +17,10 @@ package com.google.devtools.build.lib.analysis.skylark; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.collect.nestedset.NestedSet; 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.skylarkinterface.SkylarkModuleCategory; -import com.google.devtools.build.lib.skylarkinterface.SkylarkSignature; -import com.google.devtools.build.lib.syntax.BuiltinFunction; import com.google.devtools.build.lib.syntax.SkylarkNestedSet; -import com.google.devtools.build.lib.syntax.SkylarkSignatureProcessor; /** A Skylark module class to create memory efficient command lines. */ @SkylarkModule( @@ -33,10 +31,8 @@ import com.google.devtools.build.lib.syntax.SkylarkSignatureProcessor; ) public class SkylarkCommandLine { - @SkylarkSignature( + @SkylarkCallable( name = "join_paths", - objectType = SkylarkCommandLine.class, - returnType = String.class, doc = "Deprecated. Creates a single command line argument joining the paths of a set " + "of files on the separator string.", @@ -50,16 +46,9 @@ public class SkylarkCommandLine { ) } ) - private static BuiltinFunction joinPaths = - new BuiltinFunction("join_paths") { - public String invoke(String separator, SkylarkNestedSet files) { - NestedSet<Artifact> artifacts = files.getSet(Artifact.class); - // TODO(bazel-team): lazy evaluate - return Artifact.joinExecPaths(separator, artifacts); - } - }; - - static { - SkylarkSignatureProcessor.configureSkylarkFunctions(SkylarkCommandLine.class); + public String joinPaths(String separator, SkylarkNestedSet files) { + NestedSet<Artifact> artifacts = files.getSet(Artifact.class); + // TODO(bazel-team): lazy evaluate + return Artifact.joinExecPaths(separator, artifacts); } } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java index 5e30bb4abe..b58432c1ef 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java @@ -32,12 +32,10 @@ import com.google.common.cache.LoadingCache; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; -import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.ActionsProvider; import com.google.devtools.build.lib.analysis.BaseRuleClasses; import com.google.devtools.build.lib.analysis.DefaultInfo; import com.google.devtools.build.lib.analysis.OutputGroupInfo; -import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; import com.google.devtools.build.lib.analysis.config.ConfigAwareRuleClassBuilder; import com.google.devtools.build.lib.analysis.config.HostTransition; import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition; @@ -46,9 +44,6 @@ import com.google.devtools.build.lib.analysis.test.TestConfiguration; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.LabelSyntaxException; import com.google.devtools.build.lib.cmdline.LabelValidator; -import com.google.devtools.build.lib.collect.nestedset.NestedSet; -import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; -import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.events.Location; import com.google.devtools.build.lib.packages.Attribute; import com.google.devtools.build.lib.packages.AttributeMap; @@ -91,7 +86,6 @@ import com.google.devtools.build.lib.syntax.Runtime; import com.google.devtools.build.lib.syntax.SkylarkCallbackFunction; import com.google.devtools.build.lib.syntax.SkylarkDict; import com.google.devtools.build.lib.syntax.SkylarkList; -import com.google.devtools.build.lib.syntax.SkylarkNestedSet; import com.google.devtools.build.lib.syntax.SkylarkSignatureProcessor; import com.google.devtools.build.lib.syntax.SkylarkType; import com.google.devtools.build.lib.syntax.SkylarkUtils; @@ -1248,29 +1242,6 @@ public class SkylarkRuleClassFunctions { } }; - @SkylarkSignature(name = "output_group", - documented = false, // TODO(dslomov): document. - objectType = TransitiveInfoCollection.class, - returnType = SkylarkNestedSet.class, - parameters = { - @Param(name = "self", type = TransitiveInfoCollection.class, doc = - "this target" - ), - @Param(name = "group_name", type = String.class, doc = - "Output group name" - ) - } - ) - private static final BuiltinFunction output_group = new BuiltinFunction("output_group") { - public SkylarkNestedSet invoke(TransitiveInfoCollection self, String group) { - OutputGroupInfo provider = OutputGroupInfo.get(self); - NestedSet<Artifact> result = provider != null - ? provider.getOutputGroup(group) - : NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER); - return SkylarkNestedSet.of(Artifact.class, result); - } - }; - static { SkylarkSignatureProcessor.configureSkylarkFunctions(SkylarkRuleClassFunctions.class); } |