diff options
author | 2017-05-12 17:59:38 +0200 | |
---|---|---|
committer | 2017-05-15 19:50:51 +0200 | |
commit | aaec2cd8756393af0574f69fd9281070aa308119 (patch) | |
tree | e9e5ded9b454d8edd6e6ee0c383ce93d96a6622a /src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java | |
parent | c800f8405e4f37458080ba219c598b25c3a9b8de (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.java | 10 |
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()) { |