diff options
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.java | 15 |
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) { |