diff options
author | 2015-04-24 18:12:40 +0000 | |
---|---|---|
committer | 2015-04-27 18:48:30 +0000 | |
commit | e2dd318ad3f9224def563b4e68bb515f05844311 (patch) | |
tree | cb7d92803ce1d301229f27bf790d3b7a11afb2a6 /src | |
parent | 4ce0d8800f1aaabe82f7a61faf1d5609b69c38cf (diff) |
Add environment_group support for query.
--
MOS_MIGRATED_REVID=91997659
Diffstat (limited to 'src')
3 files changed, 53 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/query2/output/ProtoOutputFormatter.java b/src/main/java/com/google/devtools/build/lib/query2/output/ProtoOutputFormatter.java index 29f07ec804..e7d9d21aef 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/output/ProtoOutputFormatter.java +++ b/src/main/java/com/google/devtools/build/lib/query2/output/ProtoOutputFormatter.java @@ -13,6 +13,7 @@ // limitations under the License. package com.google.devtools.build.lib.query2.output; +import static com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Discriminator.ENVIRONMENT_GROUP; import static com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Discriminator.GENERATED_FILE; import static com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Discriminator.PACKAGE_GROUP; import static com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Discriminator.RULE; @@ -20,6 +21,7 @@ import static com.google.devtools.build.lib.query2.proto.proto2api.Build.Target. import com.google.devtools.build.lib.graph.Digraph; import com.google.devtools.build.lib.packages.Attribute; +import com.google.devtools.build.lib.packages.EnvironmentGroup; import com.google.devtools.build.lib.packages.InputFile; import com.google.devtools.build.lib.packages.OutputFile; import com.google.devtools.build.lib.packages.PackageGroup; @@ -209,6 +211,20 @@ public class ProtoOutputFormatter extends OutputFormatter implements UnorderedFo targetPb.setType(PACKAGE_GROUP); targetPb.setPackageGroup(packageGroupPb); + } else if (target instanceof EnvironmentGroup) { + EnvironmentGroup envGroup = (EnvironmentGroup) target; + Build.EnvironmentGroup.Builder envGroupPb = + Build.EnvironmentGroup + .newBuilder() + .setName(envGroup.getLabel().toString()); + for (Label env : envGroup.getEnvironments()) { + envGroupPb.addEnvironment(env.toString()); + } + for (Label defaultEnv : envGroup.getDefaults()) { + envGroupPb.addDefault(defaultEnv.toString()); + } + targetPb.setType(ENVIRONMENT_GROUP); + targetPb.setEnvironmentGroup(envGroupPb); } else { throw new IllegalArgumentException(target.toString()); } diff --git a/src/main/java/com/google/devtools/build/lib/query2/output/XmlOutputFormatter.java b/src/main/java/com/google/devtools/build/lib/query2/output/XmlOutputFormatter.java index c77c7aa508..68eaefd4d2 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/output/XmlOutputFormatter.java +++ b/src/main/java/com/google/devtools/build/lib/query2/output/XmlOutputFormatter.java @@ -17,6 +17,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import com.google.devtools.build.lib.graph.Digraph; import com.google.devtools.build.lib.packages.Attribute; +import com.google.devtools.build.lib.packages.EnvironmentGroup; import com.google.devtools.build.lib.packages.InputFile; import com.google.devtools.build.lib.packages.License; import com.google.devtools.build.lib.packages.OutputFile; @@ -177,6 +178,20 @@ class XmlOutputFormatter extends OutputFormatter implements OutputFormatter.Unor } addPackageGroupsToElement(doc, elem, inputFile); + } else if (target instanceof EnvironmentGroup) { + EnvironmentGroup envGroup = (EnvironmentGroup) target; + elem = doc.createElement("environment-group"); + elem.setAttribute("name", envGroup.getName()); + Element environments = createValueElement(doc, + com.google.devtools.build.lib.packages.Type.LABEL_LIST, + envGroup.getEnvironments()); + environments.setAttribute("name", "environments"); + elem.appendChild(environments); + Element defaults = createValueElement(doc, + com.google.devtools.build.lib.packages.Type.LABEL_LIST, + envGroup.getDefaults()); + defaults.setAttribute("name", "defaults"); + elem.appendChild(defaults); } else if (target instanceof FakeSubincludeTarget) { elem = doc.createElement("source-file"); } else { diff --git a/src/main/protobuf/build.proto b/src/main/protobuf/build.proto index d212cbbddf..8dfda7ed5a 100644 --- a/src/main/protobuf/build.proto +++ b/src/main/protobuf/build.proto @@ -251,6 +251,19 @@ message PackageGroup { optional Location parseable_location = 4; } +// An environment group. +message EnvironmentGroup { + // The name of the environment group. + required string name = 1; + + // The environments that belong to this group (as labels). + repeated string environment = 2; + + // The member environments that rules implicitly support if not otherwise + // specified. + repeated string default = 3; +} + // A file that is an input into the build system. // Next-Id: 8 message SourceFile { @@ -301,14 +314,14 @@ message GeneratedFile { // A target from a blaze query execution. Similar to the Attribute message, // the Discriminator is used to determine which field contains information. -// For any given type, only one of rule, input_file or output_file can be -// populated in a single Target. +// For any given type, only one of these can be populated in a single Target. message Target { enum Discriminator { RULE = 1; SOURCE_FILE = 2; GENERATED_FILE = 3; PACKAGE_GROUP = 4; + ENVIRONMENT_GROUP = 5; } // The type of target contained in the message. @@ -318,14 +331,17 @@ message Target { optional Rule rule = 2; // A file that is not generated by the build system (version controlled - // or created by the test harness) + // or created by the test harness). optional SourceFile source_file = 3; - // A generated file that is the output of a rule + // A generated file that is the output of a rule. optional GeneratedFile generated_file = 4; - // A package group + // A package group. optional PackageGroup package_group = 5; + + // An environment group. + optional EnvironmentGroup environment_group = 6; } // Container for all of the blaze query results. @@ -463,6 +479,7 @@ message Package { repeated SourceFile source_file = 3001; repeated PackageGroup package_group = 3002; repeated Rule rule = 3003; + repeated EnvironmentGroup environment_group = 3004; // Metadata // Reason why the package could not be serialized. |