aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/constraints/Environment.java
diff options
context:
space:
mode:
authorGravatar Greg Estren <gregce@google.com>2015-03-05 21:46:34 +0000
committerGravatar Ulf Adams <ulfjack@google.com>2015-03-06 09:16:40 +0000
commit42bece1e02afbf55b29fe7fea154e9de4e91871d (patch)
tree0cc403255ae655f3eb12ddef3c6db240f35030a9 /src/main/java/com/google/devtools/build/lib/analysis/constraints/Environment.java
parent24b69a72cbb785e4aa2f74f2fb5b3aef8d72e88a (diff)
Add --target_environment flag. This declares the environment (or set of environments)
the build is being done for. In other words: blaze build //foo:all --target_environment=//buildenv/target:gce declares that this build targets GCE, so all top-level targets must also support GCE. This essentially allows constraint enforcement to apply to top-level targets, too. So users can protect against accidentally building targets in configurations they're not meant to work with. -- MOS_MIGRATED_REVID=87862252
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/constraints/Environment.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/constraints/Environment.java17
1 files changed, 5 insertions, 12 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/constraints/Environment.java b/src/main/java/com/google/devtools/build/lib/analysis/constraints/Environment.java
index 912ed723fe..ab91f454ea 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/constraints/Environment.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/constraints/Environment.java
@@ -25,7 +25,6 @@ import com.google.devtools.build.lib.analysis.RunfilesProvider;
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.EnvironmentGroup;
-import com.google.devtools.build.lib.packages.Package;
import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory;
import com.google.devtools.build.lib.syntax.Label;
@@ -42,18 +41,12 @@ public class Environment implements RuleConfiguredTargetFactory {
//
// This will likely expand when we add support for environments fulfilling other environments.
Label label = ruleContext.getLabel();
- Package pkg = ruleContext.getRule().getPackage();
- EnvironmentGroup group = null;
- for (EnvironmentGroup pkgGroup : pkg.getTargets(EnvironmentGroup.class)) {
- if (pkgGroup.getEnvironments().contains(label)) {
- group = pkgGroup;
- break;
- }
- }
-
- if (group == null) {
- ruleContext.ruleError("no matching environment group from the same package");
+ EnvironmentGroup group;
+ try {
+ group = ConstraintSemantics.getEnvironmentGroup(ruleContext.getRule());
+ } catch (ConstraintSemantics.EnvironmentLookupException e) {
+ ruleContext.ruleError(e.getMessage());
return null;
}