diff options
author | 2015-03-05 21:46:34 +0000 | |
---|---|---|
committer | 2015-03-06 09:16:40 +0000 | |
commit | 42bece1e02afbf55b29fe7fea154e9de4e91871d (patch) | |
tree | 0cc403255ae655f3eb12ddef3c6db240f35030a9 /src/main/java/com/google/devtools/build/lib/analysis/constraints/Environment.java | |
parent | 24b69a72cbb785e4aa2f74f2fb5b3aef8d72e88a (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.java | 17 |
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; } |