Refactor setupPackageCache to get all BuildConfiguration.Options references out of it.
Setting up the package cache is necessary for proper loading. In the future, BuildConfiguration.Option options will be targets that need to be loaded in order to be parsed. Thus, we will need to be able to do loading before BuildConfiguration.Options are parsed.
PiperOrigin-RevId: 206964473
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 c666c4c..3e93c6c 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
@@ -160,7 +160,6 @@
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
@@ -1090,7 +1089,6 @@
String defaultsPackageContents,
UUID commandId,
Map<String, String> clientEnv,
- Map<String, String> actionEnv,
TimestampGranularityMonitor tsgm) {
Preconditions.checkNotNull(pkgLocator);
Preconditions.checkNotNull(tsgm);
@@ -1098,7 +1096,6 @@
this.tsgm.set(tsgm);
setCommandId(commandId);
- PrecomputedValue.ACTION_ENV.set(injectable(), actionEnv);
this.clientEnv.set(clientEnv);
setShowLoadingProgress(packageCacheOptions.showLoadingProgress);
setDefaultVisibility(packageCacheOptions.defaultVisibility);
@@ -2116,14 +2113,30 @@
TimestampGranularityMonitor tsgm,
OptionsClassProvider options)
throws InterruptedException, AbruptExitException {
- // ImmutableMap does not support null values, so use a LinkedHashMap instead.
- LinkedHashMap<String, String> actionEnvironment = new LinkedHashMap<>();
- BuildConfiguration.Options opt = options.getOptions(BuildConfiguration.Options.class);
- if (opt != null) {
- for (Map.Entry<String, String> v : opt.actionEnvironment) {
- actionEnvironment.put(v.getKey(), v.getValue());
- }
- }
+ getActionEnvFromOptions(options);
+ syncPackageLoading(
+ eventHandler,
+ packageCacheOptions,
+ skylarkSemanticsOptions,
+ outputBase,
+ workingDirectory,
+ defaultsPackageContents,
+ commandId,
+ clientEnv,
+ tsgm);
+ }
+
+ private void syncPackageLoading(
+ ExtendedEventHandler eventHandler,
+ PackageCacheOptions packageCacheOptions,
+ SkylarkSemanticsOptions skylarkSemanticsOptions,
+ Path outputBase,
+ Path workingDirectory,
+ String defaultsPackageContents,
+ UUID commandId,
+ Map<String, String> clientEnv,
+ TimestampGranularityMonitor tsgm)
+ throws AbruptExitException {
preparePackageLoading(
createPackageLocator(
eventHandler,
@@ -2136,7 +2149,6 @@
defaultsPackageContents,
commandId,
clientEnv,
- Collections.unmodifiableMap(actionEnvironment),
tsgm);
setDeletedPackages(packageCacheOptions.getDeletedPackages());
@@ -2144,6 +2156,23 @@
invalidateTransientErrors();
}
+ private void getActionEnvFromOptions(OptionsClassProvider options) {
+ // ImmutableMap does not support null values, so use a LinkedHashMap instead.
+ LinkedHashMap<String, String> actionEnvironment = new LinkedHashMap<>();
+ BuildConfiguration.Options opt = options.getOptions(BuildConfiguration.Options.class);
+ if (opt != null) {
+ for (Map.Entry<String, String> v : opt.actionEnvironment) {
+ actionEnvironment.put(v.getKey(), v.getValue());
+ }
+ }
+ setActionEnv(actionEnvironment);
+ }
+
+ @VisibleForTesting
+ public void setActionEnv(Map<String, String> actionEnv) {
+ PrecomputedValue.ACTION_ENV.set(injectable(), actionEnv);
+ }
+
protected PathPackageLocator createPackageLocator(
ExtendedEventHandler eventHandler,
List<String> packagePaths,
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 11fe537..c7d1bec 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
@@ -213,8 +213,8 @@
analysisMock.getInvocationPolicyEnforcer().getInvocationPolicy()),
UUID.randomUUID(),
ImmutableMap.<String, String>of(),
- ImmutableMap.<String, String>of(),
new TimestampGranularityMonitor(BlazeClock.instance()));
+ skyframeExecutor.setActionEnv(ImmutableMap.<String, String>of());
skyframeExecutor.injectExtraPrecomputedValues(
ImmutableList.of(
PrecomputedValue.injected(
@@ -342,8 +342,8 @@
analysisMock.getInvocationPolicyEnforcer().getInvocationPolicy()),
UUID.randomUUID(),
ImmutableMap.<String, String>of(),
- ImmutableMap.<String, String>of(),
new TimestampGranularityMonitor(BlazeClock.instance()));
+ skyframeExecutor.setActionEnv(ImmutableMap.<String, String>of());
skyframeExecutor.invalidateFilesUnderPathForTesting(
reporter, ModifiedFileSet.EVERYTHING_MODIFIED, Root.fromPath(rootDirectory));
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 1f97381..5fc77cb 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
@@ -286,8 +286,8 @@
"",
UUID.randomUUID(),
ImmutableMap.<String, String>of(),
- ImmutableMap.<String, String>of(),
tsgm);
+ skyframeExecutor.setActionEnv(ImmutableMap.<String, String>of());
useConfiguration();
setUpSkyframe();
// Also initializes ResourceManager.
@@ -404,8 +404,8 @@
ruleClassProvider.getDefaultsPackageContent(optionsParser),
UUID.randomUUID(),
ImmutableMap.<String, String>of(),
- ImmutableMap.<String, String>of(),
tsgm);
+ skyframeExecutor.setActionEnv(ImmutableMap.<String, String>of());
skyframeExecutor.setDeletedPackages(ImmutableSet.copyOf(packageCacheOptions.getDeletedPackages()));
skyframeExecutor.injectExtraPrecomputedValues(
ImmutableList.of(
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 fb61a6e..522b5fa 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
@@ -152,8 +152,8 @@
analysisMock.getInvocationPolicyEnforcer().getInvocationPolicy()),
UUID.randomUUID(),
ImmutableMap.<String, String>of(),
- ImmutableMap.<String, String>of(),
new TimestampGranularityMonitor(BlazeClock.instance()));
+ skyframeExecutor.setActionEnv(ImmutableMap.<String, String>of());
mockToolsConfig = new MockToolsConfig(rootDirectory);
analysisMock.setupMockClient(mockToolsConfig);
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java b/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java
index 88a02fb..85e4864 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java
@@ -152,8 +152,8 @@
defaultsPackageContents,
UUID.randomUUID(),
ImmutableMap.<String, String>of(),
- ImmutableMap.<String, String>of(),
new TimestampGranularityMonitor(BlazeClock.instance()));
+ skyframeExecutor.setActionEnv(ImmutableMap.<String, String>of());
}
private void setUpSkyframe() {
@@ -174,8 +174,8 @@
loadingMock.getDefaultsPackageContent(),
UUID.randomUUID(),
ImmutableMap.<String, String>of(),
- ImmutableMap.<String, String>of(),
new TimestampGranularityMonitor(BlazeClock.instance()));
+ skyframeExecutor.setActionEnv(ImmutableMap.<String, String>of());
skyframeExecutor.setDeletedPackages(
ImmutableSet.copyOf(packageCacheOptions.getDeletedPackages()));
}
diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/BuildFileModificationTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/BuildFileModificationTest.java
index 2890619..d25e255 100644
--- a/src/test/java/com/google/devtools/build/lib/pkgcache/BuildFileModificationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/pkgcache/BuildFileModificationTest.java
@@ -126,8 +126,8 @@
analysisMock.getDefaultsPackageContent(),
UUID.randomUUID(),
ImmutableMap.<String, String>of(),
- ImmutableMap.<String, String>of(),
new TimestampGranularityMonitor(clock));
+ skyframeExecutor.setActionEnv(ImmutableMap.<String, String>of());
skyframeExecutor.setDeletedPackages(
ImmutableSet.copyOf(packageCacheOptions.getDeletedPackages()));
}
diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java
index 866844d..ba9e5e4 100644
--- a/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java
+++ b/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java
@@ -506,8 +506,8 @@
"",
UUID.randomUUID(),
ImmutableMap.<String, String>of(),
- ImmutableMap.<String, String>of(),
new TimestampGranularityMonitor(BlazeClock.instance()));
+ skyframeExecutor.setActionEnv(ImmutableMap.<String, String>of());
}
Path addFile(String fileName, String... content) throws IOException {
@@ -597,8 +597,8 @@
"",
UUID.randomUUID(),
ImmutableMap.<String, String>of(),
- ImmutableMap.<String, String>of(),
new TimestampGranularityMonitor(BlazeClock.instance()));
+ skyframeExecutor.setActionEnv(ImmutableMap.<String, String>of());
skyframeExecutor.invalidateFilesUnderPathForTesting(
new Reporter(new EventBus()), modifiedFileSet, Root.fromPath(workspace));
((SequencedSkyframeExecutor) skyframeExecutor).handleDiffs(new Reporter(new EventBus()));
diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java
index 50e6ecf..fdb6e80 100644
--- a/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java
@@ -778,8 +778,8 @@
analysisMock.getDefaultsPackageContent(),
UUID.randomUUID(),
ImmutableMap.<String, String>of(),
- ImmutableMap.<String, String>of(),
new TimestampGranularityMonitor(clock));
+ skyframeExecutor.setActionEnv(ImmutableMap.<String, String>of());
this.options = Options.getDefaults(LoadingOptions.class);
}
diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java
index 461b210..97c4f2e2 100644
--- a/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java
+++ b/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java
@@ -139,8 +139,8 @@
analysisMock.getDefaultsPackageContent(),
UUID.randomUUID(),
ImmutableMap.<String, String>of(),
- ImmutableMap.<String, String>of(),
new TimestampGranularityMonitor(BlazeClock.instance()));
+ skyframeExecutor.setActionEnv(ImmutableMap.<String, String>of());
skyframeExecutor.setDeletedPackages(
ImmutableSet.copyOf(packageCacheOptions.getDeletedPackages()));
}
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/PackageFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/PackageFunctionTest.java
index 0dd046d..1a3dcdd 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/PackageFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/PackageFunctionTest.java
@@ -91,8 +91,8 @@
"",
UUID.randomUUID(),
ImmutableMap.<String, String>of(),
- ImmutableMap.<String, String>of(),
new TimestampGranularityMonitor(BlazeClock.instance()));
+ skyframeExecutor.setActionEnv(ImmutableMap.<String, String>of());
}
@Override
@@ -323,8 +323,8 @@
"",
UUID.randomUUID(),
ImmutableMap.<String, String>of(),
- ImmutableMap.<String, String>of(),
tsgm);
+ getSkyframeExecutor().setActionEnv(ImmutableMap.<String, String>of());
assertSrcs(validPackage(skyKey), "foo", "//foo:a.config", "//foo:b.txt");
}
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsFunctionSmartNegationTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsFunctionSmartNegationTest.java
index 06c4363..18e5ae4 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsFunctionSmartNegationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsFunctionSmartNegationTest.java
@@ -107,8 +107,8 @@
AnalysisMock.get().getDefaultsPackageContent(),
UUID.randomUUID(),
ImmutableMap.<String, String>of(),
- ImmutableMap.<String, String>of(),
new TimestampGranularityMonitor(null));
+ skyframeExecutor.setActionEnv(ImmutableMap.<String, String>of());
skyframeExecutor.injectExtraPrecomputedValues(
ImmutableList.of(
PrecomputedValue.injected(
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeLabelVisitorTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeLabelVisitorTest.java
index a665d40..bb30090 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeLabelVisitorTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeLabelVisitorTest.java
@@ -415,8 +415,8 @@
loadingMock.getDefaultsPackageContent(),
UUID.randomUUID(),
ImmutableMap.<String, String>of(),
- ImmutableMap.<String, String>of(),
new TimestampGranularityMonitor(BlazeClock.instance()));
+ skyframeExecutor.setActionEnv(ImmutableMap.<String, String>of());
this.visitor = getSkyframeExecutor().pkgLoader();
scratch.file("pkg/BUILD", "sh_library(name = 'x', deps = ['z'])", "sh_library(name = 'z')");
assertLabelsVisited(
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/SkylarkFileContentHashTests.java b/src/test/java/com/google/devtools/build/lib/skyframe/SkylarkFileContentHashTests.java
index 458adbf..58107d6 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/SkylarkFileContentHashTests.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/SkylarkFileContentHashTests.java
@@ -173,8 +173,8 @@
"",
UUID.randomUUID(),
ImmutableMap.<String, String>of(),
- ImmutableMap.<String, String>of(),
new TimestampGranularityMonitor(BlazeClock.instance()));
+ skyframeExecutor.setActionEnv(ImmutableMap.<String, String>of());
SkyKey pkgLookupKey = PackageValue.key(PackageIdentifier.parse("@//" + pkg));
EvaluationResult<PackageValue> result =
SkyframeExecutorTestUtils.evaluate(
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupFunctionTest.java
index cee3c4c..7ffc718 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupFunctionTest.java
@@ -65,8 +65,8 @@
"",
UUID.randomUUID(),
ImmutableMap.<String, String>of(),
- ImmutableMap.<String, String>of(),
new TimestampGranularityMonitor(BlazeClock.instance()));
+ skyframeExecutor.setActionEnv(ImmutableMap.<String, String>of());
this.preludeLabelRelativePath =
getRuleClassProvider().getPreludeLabel().toPathFragment().toString();
}