From 5bae50aa8479096a2038cdf7b3a4cf744a84de6a Mon Sep 17 00:00:00 2001 From: gregce Date: Thu, 17 Aug 2017 23:23:47 +0200 Subject: Remove BuildConfiguration.useDynamicConfigurations. This is always true. Part of the static config cleanup effort. PiperOrigin-RevId: 165628823 --- .../lib/skyframe/ConfiguredTargetFunction.java | 25 ++++++---------- .../lib/skyframe/PostConfiguredTargetFunction.java | 2 +- .../build/lib/skyframe/SkyframeBuildView.java | 2 +- .../build/lib/skyframe/SkyframeExecutor.java | 33 ++++++---------------- 4 files changed, 18 insertions(+), 44 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/skyframe') diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java index 87de6cf5bf..214aa02380 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java @@ -148,10 +148,6 @@ public final class ConfiguredTargetFunction implements SkyFunction { this.removeActionsAfterEvaluation = Preconditions.checkNotNull(removeActionsAfterEvaluation); } - private static boolean useDynamicConfigurations(BuildConfiguration config) { - return config != null && config.useDynamicConfigurations(); - } - @Override public SkyValue compute(SkyKey key, Environment env) throws ConfiguredTargetFunctionException, InterruptedException { @@ -197,7 +193,7 @@ public final class ConfiguredTargetFunction implements SkyFunction { // associates the corresponding error with this target, as expected. Without this line, // the first TransitiveTargetValue call happens on its dep (in trimConfigurations), so Bazel // associates the error with the dep, which is misleading. - if (useDynamicConfigurations(configuration) && configuration.trimConfigurations() + if (configuration != null && configuration.trimConfigurations() && env.getValue(TransitiveTargetValue.key(lc.getLabel())) == null) { return null; } @@ -402,8 +398,8 @@ public final class ConfiguredTargetFunction implements SkyFunction { } // Trim each dep's configuration so it only includes the fragments needed by its transitive - // closure (only dynamic configurations support this). - if (useDynamicConfigurations(ctgValue.getConfiguration())) { + // closure. + if (ctgValue.getConfiguration() != null) { depValueNames = getDynamicConfigurations(env, ctgValue, depValueNames, hostConfiguration, ruleClassProvider); // It's important that we don't use "if (env.missingValues()) { return null }" here (or @@ -754,7 +750,6 @@ public final class ConfiguredTargetFunction implements SkyFunction { @Nullable private static Set> getTransitiveFragments( Environment env, Label dep, BuildConfiguration parentConfig) throws InterruptedException { - Preconditions.checkArgument(parentConfig.useDynamicConfigurations()); if (!parentConfig.trimConfigurations()) { return parentConfig.getAllFragments().keySet(); } @@ -1067,20 +1062,16 @@ public final class ConfiguredTargetFunction implements SkyFunction { return null; } - // No need to get new configs from Skyframe - config_setting rules always use the current // target's config. // TODO(bazel-team): remove the need for this special transformation. We can probably do this by // simply passing this through trimConfigurations. - BuildConfiguration targetConfig = ctgValue.getConfiguration(); - if (useDynamicConfigurations(targetConfig)) { - ImmutableList.Builder staticConfigs = ImmutableList.builder(); - for (Dependency dep : configValueNames) { - staticConfigs.add( - Dependency.withConfigurationAndAspects(dep.getLabel(), targetConfig, dep.getAspects())); - } - configValueNames = staticConfigs.build(); + ImmutableList.Builder staticConfigs = ImmutableList.builder(); + for (Dependency dep : configValueNames) { + staticConfigs.add(Dependency.withConfigurationAndAspects(dep.getLabel(), + ctgValue.getConfiguration(), dep.getAspects())); } + configValueNames = staticConfigs.build(); Map configValues = resolveConfiguredTargetDependencies( env, configValueNames, transitivePackages, transitiveLoadingRootCauses); diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PostConfiguredTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PostConfiguredTargetFunction.java index 77891647ec..b064b5b6ed 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PostConfiguredTargetFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PostConfiguredTargetFunction.java @@ -108,7 +108,7 @@ public class PostConfiguredTargetFunction implements SkyFunction { deps = resolver.dependentNodeMap( ctgValue, hostConfiguration, /*aspect=*/ null, configConditions); - if (ct.getConfiguration() != null && ct.getConfiguration().useDynamicConfigurations()) { + if (ct.getConfiguration() != null) { deps = ConfiguredTargetFunction.getDynamicConfigurations(env, ctgValue, deps, hostConfiguration, ruleClassProvider); } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java index 4f1d96eaef..90773dc07d 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java @@ -512,7 +512,7 @@ public final class SkyframeBuildView { * correct host configuration at the top-level. */ public BuildConfiguration getHostConfiguration(BuildConfiguration config) { - if (config == null || !config.useDynamicConfigurations()) { + if (config == null) { return topLevelHostConfiguration; } // TODO(bazel-team): have the fragment classes be those required by the consuming target's 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 f119eccc7f..f61ba9c54a 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 @@ -1571,8 +1571,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { } /** - * Returns a particular configured target. If dynamic configurations are active, applies the given - * configuration transition. + * Returns a particular configured target after applying the given transition. */ @VisibleForTesting @Nullable @@ -1581,35 +1580,19 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { Label label, BuildConfiguration configuration, Attribute.Transition 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) { injectWorkspaceStatusData(label.getWorkspaceRoot()); } - Dependency dep; - if (configuration == null) { - dep = Dependency.withNullConfiguration(label); - } else if (configuration.useDynamicConfigurations()) { - dep = Dependency.withTransitionAndAspects(label, transition, AspectCollection.EMPTY); - } else { - dep = Dependency.withConfiguration(label, configuration); - } - return Iterables.getFirst( - getConfiguredTargets(eventHandler, configuration, ImmutableList.of(dep), false), + getConfiguredTargets( + eventHandler, + configuration, + ImmutableList.of(configuration == null + ? Dependency.withNullConfiguration(label) + : Dependency.withTransitionAndAspects(label, transition, AspectCollection.EMPTY)), + false), null); } -- cgit v1.2.3