diff options
author | Ulf Adams <ulfjack@google.com> | 2016-04-15 07:54:24 +0000 |
---|---|---|
committer | Dmitry Lomov <dslomov@google.com> | 2016-04-15 11:11:08 +0000 |
commit | f069d45bfa5f311ba1a908887df1826ec52c7a31 (patch) | |
tree | 5d27dce73d22f767fe02582caadd956c3310bc35 /src | |
parent | 0ea57e6983238cbc84ab62f8197912ccab215c93 (diff) |
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
Diffstat (limited to 'src')
6 files changed, 10 insertions, 21 deletions
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.<String>of(), keepGoing); + buildOptions, ImmutableSet.<String>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<String> multiCpu, + BuildOptions buildOptions, Set<String> 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)); diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java index 8183f248d5..e116f0a441 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java @@ -274,7 +274,7 @@ public abstract class AnalysisTestCase extends FoundationTestCase { BuildRequestOptions requestOptions = optionsParser.getOptions(BuildRequestOptions.class); ImmutableSortedSet<String> multiCpu = ImmutableSortedSet.copyOf(requestOptions.multiCpus); masterConfig = skyframeExecutor.createConfigurations( - reporter, configurationFactory, buildOptions, directories, multiCpu, false); + reporter, configurationFactory, buildOptions, multiCpu, false); analysisResult = buildView.update( loadingResult, diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java index a690340f7c..d71b8ba786 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java @@ -285,7 +285,7 @@ public abstract class BuildViewTestCase extends FoundationTestCase { ensureTargetsVisited(buildOptions.getAllLabels().values()); skyframeExecutor.invalidateConfigurationCollection(); return skyframeExecutor.createConfigurations(reporter, configurationFactory, buildOptions, - directories, ImmutableSet.<String>of(), false); + ImmutableSet.<String>of(), false); } protected Target getTarget(String label) diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java index f7c83ff810..a973f8cbec 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java @@ -39,7 +39,6 @@ import com.google.devtools.build.lib.skyframe.DiffAwareness; import com.google.devtools.build.lib.skyframe.PrecomputedValue; import com.google.devtools.build.lib.skyframe.SequencedSkyframeExecutor; import com.google.devtools.build.lib.skyframe.SkyValueDirtinessChecker; -import com.google.devtools.build.lib.skyframe.SkyframeExecutor; import com.google.devtools.build.lib.testutil.FoundationTestCase; import com.google.devtools.build.lib.testutil.TestConstants; import com.google.devtools.build.lib.testutil.TestRuleClassProvider; @@ -80,7 +79,7 @@ public abstract class ConfigurationTestCase extends FoundationTestCase { public List<String> multiCpus; } - protected SkyframeExecutor skyframeExecutor; + protected SequencedSkyframeExecutor skyframeExecutor; protected ConfigurationFactory configurationFactory; protected Path workspace; protected ImmutableList<Class<? extends FragmentOptions>> buildOptionClasses; @@ -163,9 +162,9 @@ public abstract class ConfigurationTestCase extends FoundationTestCase { parser.getOptions(TestOptions.class).multiCpus); BuildOptions buildOptions = BuildOptions.of(buildOptionClasses, parser); + skyframeExecutor.handleDiffs(reporter); BuildConfigurationCollection collection = skyframeExecutor.createConfigurations( - reporter, configurationFactory, buildOptions, - new BlazeDirectories(outputBase, outputBase, workspace), multiCpu, false); + reporter, configurationFactory, buildOptions, multiCpu, false); return collection; } |