diff options
author | 2015-04-22 20:44:35 +0000 | |
---|---|---|
committer | 2015-04-23 09:19:26 +0000 | |
commit | bfb76a97dd54f49c0df2be5117301fdeb2c75654 (patch) | |
tree | ef86d1b82afc3ba3e60ed4651745f872acb45c51 /src/main/java/com/google/devtools/build | |
parent | 5a3078b5a35d5d9347690b45bf4c822a9d27c3e0 (diff) |
Simplify AnalysisEnvironment creation.
Instead of computing flags based on the configuration in two places, we pass
in the configuration and let the common code figure it out.
Also change it so each CT only depends on the build info collection for its
specific configuration. This should be safe, as the API doesn't allow passing
a configuration in - it instead takes ruleContext.getConfiguration, which
should be consistent with the dependency declarations in SkyframeBuildView in
all cases.
--
MOS_MIGRATED_REVID=91819844
Diffstat (limited to 'src/main/java/com/google/devtools/build')
3 files changed, 10 insertions, 14 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java index f1aa2f6eba..30358aca5b 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java @@ -122,11 +122,10 @@ public final class AspectFunction implements SkyFunction { throws AspectFunctionException { SkyframeBuildView view = buildViewProvider.getSkyframeBuildView(); BuildConfiguration configuration = associatedTarget.getConfiguration(); - boolean extendedSanityChecks = configuration != null && configuration.extendedSanityChecks(); StoredEventHandler events = new StoredEventHandler(); CachingAnalysisEnvironment analysisEnvironment = view.createAnalysisEnvironment( - key, false, extendedSanityChecks, events, env, true); + key, false, events, env, configuration); if (env.valuesMissing()) { return null; } 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 35a9a11f1d..731f47985b 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 @@ -464,15 +464,12 @@ final class ConfiguredTargetFunction implements SkyFunction { Set<ConfigMatchingProvider> configConditions) throws ConfiguredTargetFunctionException, InterruptedException { - boolean extendedSanityChecks = configuration != null && configuration.extendedSanityChecks(); - StoredEventHandler events = new StoredEventHandler(); BuildConfiguration ownerConfig = (configuration == null) ? null : configuration.getArtifactOwnerConfiguration(); - boolean allowRegisteringActions = configuration == null || configuration.isActionsEnabled(); CachingAnalysisEnvironment analysisEnvironment = view.createAnalysisEnvironment( new ConfiguredTargetKey(target.getLabel(), ownerConfig), false, - extendedSanityChecks, events, env, allowRegisteringActions); + events, env, configuration); if (env.valuesMissing()) { return null; } 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 b859f7b3a3..a8a4f108c7 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 @@ -344,7 +344,7 @@ public final class SkyframeBuildView { */ // TODO(bazel-team): Allow analysis to return null so the value builder can exit and wait for a // restart deps are not present. - private boolean getWorkspaceStatusValues(Environment env) { + private boolean getWorkspaceStatusValues(Environment env, BuildConfiguration config) { env.getValue(WorkspaceStatusValue.SKY_KEY); Map<BuildInfoKey, BuildInfoFactory> buildInfoFactories = PrecomputedValue.BUILD_INFO_FACTORIES.get(env); @@ -359,10 +359,8 @@ public final class SkyframeBuildView { // build-info.txt and build-changelist.txt. List<SkyKey> depKeys = Lists.newArrayList(); for (BuildInfoKey key : buildInfoFactories.keySet()) { - for (BuildConfiguration config : configurations.getAllConfigurations()) { - if (buildInfoFactories.get(key).isEnabled(config)) { - depKeys.add(BuildInfoCollectionValue.key(new BuildInfoKeyAndConfig(key, config))); - } + if (buildInfoFactories.get(key).isEnabled(config)) { + depKeys.add(BuildInfoCollectionValue.key(new BuildInfoKeyAndConfig(key, config))); } } env.getValues(depKeys); @@ -372,11 +370,13 @@ public final class SkyframeBuildView { /** Returns null if any build-info values are not ready. */ @Nullable CachingAnalysisEnvironment createAnalysisEnvironment(ArtifactOwner owner, - boolean isSystemEnv, boolean extendedSanityChecks, EventHandler eventHandler, - Environment env, boolean allowRegisteringActions) { - if (!getWorkspaceStatusValues(env)) { + boolean isSystemEnv, EventHandler eventHandler, + Environment env, BuildConfiguration config) { + if (config != null && !getWorkspaceStatusValues(env, config)) { return null; } + boolean extendedSanityChecks = config != null && config.extendedSanityChecks(); + boolean allowRegisteringActions = config == null || config.isActionsEnabled(); return new CachingAnalysisEnvironment( artifactFactory, owner, isSystemEnv, extendedSanityChecks, eventHandler, env, allowRegisteringActions, binTools); |