From f069d45bfa5f311ba1a908887df1826ec52c7a31 Mon Sep 17 00:00:00 2001 From: Ulf Adams Date: Fri, 15 Apr 2016 07:54:24 +0000 Subject: Inject the BlazeDirectories in SkyframeExecutor. The BlazeDirectories are also needed for loading the WORKSPACE file, so inject them as part of preparePackageLoading rather than in createConfigurations, which is too late. -- MOS_MIGRATED_REVID=119931633 --- .../google/devtools/build/lib/buildtool/BuildTool.java | 2 +- .../devtools/build/lib/runtime/CommandEnvironment.java | 2 +- .../devtools/build/lib/skyframe/SkyframeExecutor.java | 16 +++------------- 3 files changed, 5 insertions(+), 15 deletions(-) (limited to 'src/main/java/com/google/devtools') diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java index 78e4e747f3..98add31fb7 100644 --- a/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java +++ b/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java @@ -178,7 +178,7 @@ public final class BuildTool { } configurations = env.getSkyframeExecutor().createConfigurations( env.getReporter(), runtime.getConfigurationFactory(), buildOptions, - env.getDirectories(), request.getMultiCpus(), request.getViewOptions().keepGoing); + request.getMultiCpus(), request.getViewOptions().keepGoing); env.getEventBus().post(new ConfigurationsCreatedEvent(configurations)); env.throwPendingException(); diff --git a/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java b/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java index 7e0b21adf2..0900086aca 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java @@ -335,7 +335,7 @@ public final class CommandEnvironment { throw new InvalidConfigurationException("Configuration creation failed"); } return getSkyframeExecutor().createConfigurations(reporter, runtime.getConfigurationFactory(), - buildOptions, getDirectories(), ImmutableSet.of(), keepGoing); + buildOptions, ImmutableSet.of(), keepGoing); } // TODO(ulfjack): Do we even need this method? With Skyframe, the config creation should 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 ffe4091ceb..6049fd45ed 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 @@ -639,8 +639,9 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { PrecomputedValue.DEFAULT_VISIBILITY.set(injectable(), defaultVisibility); } - private void maybeInjectPrecomputedValuesForAnalysis() { + protected void maybeInjectPrecomputedValuesForAnalysis() { if (needToInjectPrecomputedValuesForAnalysis) { + PrecomputedValue.BLAZE_DIRECTORIES.set(injectable(), directories); injectBuildInfoFactories(); injectExtraPrecomputedValues(); needToInjectPrecomputedValuesForAnalysis = false; @@ -981,28 +982,17 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { this.skyframeActionExecutor.setActionLogBufferPathGenerator(actionLogBufferPathGenerator); } - @VisibleForTesting - public void setConfigurationDataForTesting(BlazeDirectories directories, - ConfigurationFactory configurationFactory) { - PrecomputedValue.BLAZE_DIRECTORIES.set(injectable(), directories); - this.configurationFactory.set(configurationFactory); - this.configurationFragments.set(ImmutableList.copyOf(configurationFactory.getFactories())); - } - /** * Asks the Skyframe evaluator to build the value for BuildConfigurationCollection and returns the * result. Also invalidates {@link PrecomputedValue#BLAZE_DIRECTORIES} if it has changed. */ public BuildConfigurationCollection createConfigurations( EventHandler eventHandler, ConfigurationFactory configurationFactory, - BuildOptions buildOptions, BlazeDirectories directories, Set multiCpu, + BuildOptions buildOptions, Set multiCpu, boolean keepGoing) throws InvalidConfigurationException, InterruptedException { this.configurationFactory.set(configurationFactory); this.configurationFragments.set(ImmutableList.copyOf(configurationFactory.getFactories())); - // TODO(bazel-team): find a way to use only BuildConfigurationKey instead of - // BlazeDirectories. - PrecomputedValue.BLAZE_DIRECTORIES.set(injectable(), directories); SkyKey skyKey = ConfigurationCollectionValue.key( buildOptions, ImmutableSortedSet.copyOf(multiCpu)); -- cgit v1.2.3