Add managed directories to RepositoryDirectoryValue.
- This is only a part of managed directories feature, still not complete.
- In this part the link between WorkspaceFileListener and Bazel-specific structures is to be seen.
- Class ManagedDirectoriesKnowledgeImpl obviously contains logic, needed for the future, not existing yet functionality, but if I only keep the currently needed part, it will not be clear why we need a separate wrapper class at all.
- Keep precalculated (by SequencedSkyframeExecutor) value of managed directories in the holder object, created by BazelRepositoryModule and available to all interested parties (repository dirty checker, RepositoryDelegatorFunction).
- Managed directories are part of the external repository definition. When the set of managed directories for a repository change, repository should be considered dirty. Repository dirty checker is changed to support that.
- When the set of managed directories for a repository change, also the computed repository digest value should change.
Add managed directories paths fragments to the digest.
- Add tests for both dirty checker and digest calculation.
PiperOrigin-RevId: 246370690
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 022867a..ec11210 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
@@ -39,6 +39,7 @@
import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
import com.google.devtools.build.lib.rules.repository.LocalRepositoryFunction;
import com.google.devtools.build.lib.rules.repository.LocalRepositoryRule;
+import com.google.devtools.build.lib.rules.repository.ManagedDirectoriesKnowledge;
import com.google.devtools.build.lib.rules.repository.RepositoryDelegatorFunction;
import com.google.devtools.build.lib.rules.repository.RepositoryFunction;
import com.google.devtools.build.lib.rules.repository.RepositoryLoaderFunction;
@@ -164,7 +165,12 @@
skyFunctions.put(
SkyFunctions.REPOSITORY_DIRECTORY,
new RepositoryDelegatorFunction(
- repositoryHandlers, null, new AtomicBoolean(true), ImmutableMap::of, directories));
+ repositoryHandlers,
+ null,
+ new AtomicBoolean(true),
+ ImmutableMap::of,
+ directories,
+ ManagedDirectoriesKnowledge.NO_MANAGED_DIRECTORIES));
skyFunctions.put(SkyFunctions.REPOSITORY, new RepositoryLoaderFunction());
differencer = new SequencedRecordingDifferencer();