aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java30
1 files changed, 20 insertions, 10 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
index fb13cfb218..1edf561a50 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
@@ -27,6 +27,7 @@ import com.google.devtools.build.lib.actions.FailAction;
import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration.Fragment;
+import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider;
import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition;
@@ -90,9 +91,12 @@ public final class ConfiguredTargetFactory {
// in order to be accessible from the .view.skyframe package.
private final ConfiguredRuleClassProvider ruleClassProvider;
+ private final BuildOptions defaultBuildOptions;
- public ConfiguredTargetFactory(ConfiguredRuleClassProvider ruleClassProvider) {
+ public ConfiguredTargetFactory(
+ ConfiguredRuleClassProvider ruleClassProvider, BuildOptions defaultBuildOptions) {
this.ruleClassProvider = ruleClassProvider;
+ this.defaultBuildOptions = defaultBuildOptions;
}
/**
@@ -174,7 +178,8 @@ public final class ConfiguredTargetFactory {
ArtifactOwner owner =
ConfiguredTargetKey.of(
rule.getLabel(),
- getArtifactOwnerConfiguration(analysisEnvironment.getSkyframeEnv(), configuration));
+ getArtifactOwnerConfiguration(
+ analysisEnvironment.getSkyframeEnv(), configuration, defaultBuildOptions));
if (analysisEnvironment.getSkyframeEnv().valuesMissing()) {
return null;
}
@@ -190,11 +195,12 @@ public final class ConfiguredTargetFactory {
}
/**
- * Returns the configuration's artifact owner (which may be null). Also returns null if the
- * owning configuration isn't yet available from Skyframe.
+ * Returns the configuration's artifact owner (which may be null). Also returns null if the owning
+ * configuration isn't yet available from Skyframe.
*/
- public static BuildConfiguration getArtifactOwnerConfiguration(SkyFunction.Environment env,
- BuildConfiguration fromConfig) throws InterruptedException {
+ public static BuildConfiguration getArtifactOwnerConfiguration(
+ SkyFunction.Environment env, BuildConfiguration fromConfig, BuildOptions defaultBuildOptions)
+ throws InterruptedException {
if (fromConfig == null) {
return null;
}
@@ -203,10 +209,14 @@ public final class ConfiguredTargetFactory {
return fromConfig;
}
try {
- BuildConfigurationValue ownerConfig = (BuildConfigurationValue) env.getValueOrThrow(
- BuildConfigurationValue.key(
- fromConfig.fragmentClasses(), ownerTransition.apply(fromConfig.getOptions())),
- InvalidConfigurationException.class);
+ BuildConfigurationValue ownerConfig =
+ (BuildConfigurationValue)
+ env.getValueOrThrow(
+ BuildConfigurationValue.key(
+ fromConfig.fragmentClasses(),
+ BuildOptions.diffForReconstruction(
+ defaultBuildOptions, ownerTransition.apply(fromConfig.getOptions()))),
+ InvalidConfigurationException.class);
return ownerConfig == null ? null : ownerConfig.getConfiguration();
} catch (InvalidConfigurationException e) {
// We don't expect to have to handle an invalid configuration because in practice the owning