aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
index f058a4ec1f..d2dba4c96a 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
@@ -1466,10 +1466,17 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
BuildConfiguration configuration,
Attribute.Transition transition) {
- Preconditions.checkArgument(configuration == null
- || configuration.useDynamicConfigurations()
- || transition == ConfigurationTransition.NONE,
- "Dynamic configurations required for test configuration using a transition");
+ if (configuration != null && !configuration.useDynamicConfigurations()
+ && transition != ConfigurationTransition.NONE) {
+ // It's illegal to apply this transition over a statically configured build. But C++ LIPO
+ // support works by applying a rule configurator for static configurations and a rule
+ // transition applier for dynamic configurations. Dynamically configured builds skip
+ // the configurator and this code makes statically configured builds skip the rule transition
+ // applier.
+ //
+ // This will all get a lot simpler once static configurations are removed entirely.
+ transition = ConfigurationTransition.NONE;
+ }
if (memoizingEvaluator.getExistingValueForTesting(
PrecomputedValue.WORKSPACE_STATUS_KEY.getKeyForTesting()) == null) {