Inject BlazeDirectories into RepositoryDelegatorFunction directly, instead of depending on a precomputed value. BlazeDirectories don't change over the lifetime of the Blaze server, and certainly not over the lifetime of a SkyframeExecutor instance, which already had a reference to them. Step 2. PiperOrigin-RevId: 169711443
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java index c5d64aa..3aefeff 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java
@@ -128,7 +128,8 @@ return ImmutableMap.of( SkyFunctions.REPOSITORY_DIRECTORY, - new RepositoryDelegatorFunction(repositoryHandlers, null, new AtomicBoolean(true)), + new RepositoryDelegatorFunction( + repositoryHandlers, null, new AtomicBoolean(true), ImmutableMap::of, directories), SkyFunctions.REPOSITORY, new RepositoryLoaderFunction(), FdoSupportValue.SKYFUNCTION,
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryIntegrationTest.java b/src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryIntegrationTest.java index 0aa3b1c..cd636a9 100644 --- a/src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryIntegrationTest.java +++ b/src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryIntegrationTest.java
@@ -79,8 +79,11 @@ RepositoryDelegatorFunction function = new RepositoryDelegatorFunction( - repositoryHandlers, skylarkRepositoryFunction, new AtomicBoolean(true)); - function.setClientEnvironment(ImmutableMap.<String, String>of()); + repositoryHandlers, + skylarkRepositoryFunction, + new AtomicBoolean(true), + ImmutableMap::of, + directories); return ImmutableMap.of( SkyFunctions.REPOSITORY_DIRECTORY, function,
diff --git a/src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java b/src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java index 87cca16..58c1625 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java
@@ -71,12 +71,17 @@ @Before public void setupDelegator() throws Exception { Path root = scratch.dir("/outputbase"); - delegatorFunction = new RepositoryDelegatorFunction( - ImmutableMap.<String, RepositoryFunction>of(), null, new AtomicBoolean(true)); - AtomicReference<PathPackageLocator> pkgLocator = new AtomicReference<>( - new PathPackageLocator(root, ImmutableList.of(root))); BlazeDirectories directories = new BlazeDirectories(new ServerDirectories(root, root), root, TestConstants.PRODUCT_NAME); + delegatorFunction = + new RepositoryDelegatorFunction( + ImmutableMap.of(), + null, + new AtomicBoolean(true), + ImmutableMap::of, + directories); + AtomicReference<PathPackageLocator> pkgLocator = new AtomicReference<>( + new PathPackageLocator(root, ImmutableList.of(root))); ExternalFilesHelper externalFilesHelper = new ExternalFilesHelper( pkgLocator, ExternalFileAction.DEPEND_ON_EXTERNAL_PKG_FOR_EXTERNAL_REPO_PATHS, @@ -122,7 +127,6 @@ ImmutableMap.<RepositoryName, PathFragment>builder() .put(RepositoryName.createFromValidStrippedName("foo"), overrideDirectory.asFragment()) .build()); - PrecomputedValue.BLAZE_DIRECTORIES.set(differencer, directories); PrecomputedValue.PATH_PACKAGE_LOCATOR.set(differencer, pkgLocator.get()); }
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java index 309bece..ed7c7aa 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java
@@ -128,7 +128,8 @@ LocalRepositoryRule.NAME, (RepositoryFunction) new LocalRepositoryFunction()); skyFunctions.put( SkyFunctions.REPOSITORY_DIRECTORY, - new RepositoryDelegatorFunction(repositoryHandlers, null, new AtomicBoolean(true))); + new RepositoryDelegatorFunction( + repositoryHandlers, null, new AtomicBoolean(true), ImmutableMap::of, directories)); skyFunctions.put(SkyFunctions.REPOSITORY, new RepositoryLoaderFunction()); differencer = new RecordingDifferencer();
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java index 0e73735..7a743cd 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java
@@ -135,7 +135,8 @@ LocalRepositoryRule.NAME, (RepositoryFunction) new LocalRepositoryFunction()); skyFunctions.put( SkyFunctions.REPOSITORY_DIRECTORY, - new RepositoryDelegatorFunction(repositoryHandlers, null, new AtomicBoolean(true))); + new RepositoryDelegatorFunction( + repositoryHandlers, null, new AtomicBoolean(true), ImmutableMap::of, directories)); skyFunctions.put(SkyFunctions.REPOSITORY, new RepositoryLoaderFunction()); differencer = new RecordingDifferencer();