Pass syscall cache into PathPackageLocator#getWorkspaceFile: again, not strictly necessary for the goal of using the syscall cache for all getFastDigest calls, but good to get rid of NO_CACHE.
PiperOrigin-RevId: 428093426
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryContext.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryContext.java
index 12d0b56..217f8b0 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryContext.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryContext.java
@@ -51,6 +51,7 @@
import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
+import com.google.devtools.build.lib.vfs.SyscallCache;
import com.google.devtools.build.skyframe.SkyFunction.Environment;
import com.google.devtools.build.skyframe.SkyFunctionException.Transience;
import java.io.IOException;
@@ -103,6 +104,7 @@
private final PathPackageLocator packageLocator;
private final StructImpl attrObject;
private final ImmutableSet<PathFragment> ignoredPatterns;
+ private final SyscallCache syscallCache;
/**
* Create a new context (repository_ctx) object for a Starlark repository rule ({@code rule}
@@ -119,7 +121,8 @@
double timeoutScaling,
@Nullable ProcessWrapper processWrapper,
StarlarkSemantics starlarkSemantics,
- @Nullable RepositoryRemoteExecutor remoteExecutor)
+ @Nullable RepositoryRemoteExecutor remoteExecutor,
+ SyscallCache syscallCache)
throws EvalException {
super(
outputDirectory,
@@ -133,6 +136,7 @@
this.rule = rule;
this.packageLocator = packageLocator;
this.ignoredPatterns = ignoredPatterns;
+ this.syscallCache = syscallCache;
WorkspaceAttributeMapper attrs = WorkspaceAttributeMapper.of(rule);
ImmutableMap.Builder<String, Object> attrBuilder = new ImmutableMap.Builder<>();
for (String name : attrs.getAttributeNames()) {
@@ -176,7 +180,7 @@
|| path.startsWith(workingDirectory)) {
return starlarkPath;
}
- Path workspaceRoot = packageLocator.getWorkspaceFile().getParentDirectory();
+ Path workspaceRoot = packageLocator.getWorkspaceFile(syscallCache).getParentDirectory();
PathFragment relativePath = path.relativeTo(workspaceRoot);
for (PathFragment ignoredPattern : ignoredPatterns) {
if (relativePath.startsWith(ignoredPattern)) {
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryFunction.java
index 90ed308b..3d151b6 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryFunction.java
@@ -182,7 +182,8 @@
timeoutScaling,
processWrapper,
starlarkSemantics,
- repositoryRemoteExecutor);
+ repositoryRemoteExecutor,
+ syscallCache);
if (starlarkRepositoryContext.isRemotable()) {
// If a rule is declared remotable then invalidate it if remote execution gets
diff --git a/src/main/java/com/google/devtools/build/lib/pkgcache/PathPackageLocator.java b/src/main/java/com/google/devtools/build/lib/pkgcache/PathPackageLocator.java
index b9f3c37..2db2e88 100644
--- a/src/main/java/com/google/devtools/build/lib/pkgcache/PathPackageLocator.java
+++ b/src/main/java/com/google/devtools/build/lib/pkgcache/PathPackageLocator.java
@@ -223,15 +223,14 @@
* <p>If there are WORKSPACE files beneath multiple package path entries, the first one always
* wins.
*/
- public Path getWorkspaceFile() {
+ public Path getWorkspaceFile(SyscallCache syscallCache) {
// TODO(bazel-team): correctness in the presence of changes to the location of the WORKSPACE
- // file.
- Path workspaceFile =
- getFilePath(LabelConstants.WORKSPACE_DOT_BAZEL_FILE_NAME, SyscallCache.NO_CACHE);
+ // file.
+ Path workspaceFile = getFilePath(LabelConstants.WORKSPACE_DOT_BAZEL_FILE_NAME, syscallCache);
if (workspaceFile != null) {
return workspaceFile;
}
- return getFilePath(LabelConstants.WORKSPACE_FILE_NAME, SyscallCache.NO_CACHE);
+ return getFilePath(LabelConstants.WORKSPACE_FILE_NAME, syscallCache);
}
private Path getFilePath(PathFragment suffix, SyscallCache cache) {
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryContextTest.java b/src/test/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryContextTest.java
index 87fb22f..0857a3a 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryContextTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryContextTest.java
@@ -46,6 +46,7 @@
import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.build.lib.vfs.Root;
import com.google.devtools.build.lib.vfs.RootedPath;
+import com.google.devtools.build.lib.vfs.SyscallCache;
import com.google.devtools.build.skyframe.SkyFunction;
import java.io.File;
import java.io.IOException;
@@ -168,7 +169,8 @@
1.0,
/*processWrapper=*/ null,
starlarkSemantics,
- repoRemoteExecutor);
+ repoRemoteExecutor,
+ SyscallCache.NO_CACHE);
}
protected void setUpContextForRule(String name) throws Exception {
diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/PathPackageLocatorTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/PathPackageLocatorTest.java
index d645839..d05e7b6 100644
--- a/src/test/java/com/google/devtools/build/lib/pkgcache/PathPackageLocatorTest.java
+++ b/src/test/java/com/google/devtools/build/lib/pkgcache/PathPackageLocatorTest.java
@@ -263,7 +263,7 @@
@Test
public void testGetWorkspaceFile() throws Exception {
- assertThat(locator.getWorkspaceFile()).isEqualTo(rootDir1WorkspaceFile);
+ assertThat(locator.getWorkspaceFile(SyscallCache.NO_CACHE)).isEqualTo(rootDir1WorkspaceFile);
}
private Path setLocator(String root) {