aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Greg Estren <gregce@google.com>2015-04-24 18:12:40 +0000
committerGravatar Han-Wen Nienhuys <hanwen@google.com>2015-04-27 18:48:30 +0000
commite2dd318ad3f9224def563b4e68bb515f05844311 (patch)
treecb7d92803ce1d301229f27bf790d3b7a11afb2a6 /src
parent4ce0d8800f1aaabe82f7a61faf1d5609b69c38cf (diff)
Add environment_group support for query.
-- MOS_MIGRATED_REVID=91997659
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/query2/output/ProtoOutputFormatter.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/query2/output/XmlOutputFormatter.java15
-rw-r--r--src/main/protobuf/build.proto27
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.