aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
diff options
context:
space:
mode:
authorGravatar gregce <gregce@google.com>2017-05-12 17:59:38 +0200
committerGravatar Dmitry Lomov <dslomov@google.com>2017-05-15 19:50:51 +0200
commitaaec2cd8756393af0574f69fd9281070aa308119 (patch)
treee9e5ded9b454d8edd6e6ee0c383ce93d96a6622a /src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
parentc800f8405e4f37458080ba219c598b25c3a9b8de (diff)
Fix crash when building output files with --target_environment.
PiperOrigin-RevId: 155871926
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
index a45a907e30..9c1db17b06 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
@@ -28,7 +28,9 @@ import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.LicensesProvider;
import com.google.devtools.build.lib.analysis.LicensesProvider.TargetLicense;
import com.google.devtools.build.lib.analysis.MakeEnvironmentEvent;
+import com.google.devtools.build.lib.analysis.OutputFileConfiguredTarget;
import com.google.devtools.build.lib.analysis.StaticallyLinkedMarkerProvider;
+import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.ViewCreationFailedException;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection;
@@ -300,8 +302,14 @@ public final class BuildTool {
EnvironmentCollection expectedEnvironments = builder.build();
// Now check the target against those environments.
+ TransitiveInfoCollection asProvider;
+ if (topLevelTarget instanceof OutputFileConfiguredTarget) {
+ asProvider = ((OutputFileConfiguredTarget) topLevelTarget).getGeneratingRule();
+ } else {
+ asProvider = topLevelTarget;
+ }
SupportedEnvironmentsProvider provider =
- Verify.verifyNotNull(topLevelTarget.getProvider(SupportedEnvironmentsProvider.class));
+ Verify.verifyNotNull(asProvider.getProvider(SupportedEnvironmentsProvider.class));
Collection<Label> missingEnvironments = ConstraintSemantics.getUnsupportedEnvironments(
provider.getRefinedEnvironments(), expectedEnvironments);
if (!missingEnvironments.isEmpty()) {