diff --git a/src/main/java/com/google/devtools/build/lib/remote/merkletree/DirectoryTreeBuilder.java b/src/main/java/com/google/devtools/build/lib/remote/merkletree/DirectoryTreeBuilder.java index 2522bd3fb90d50..1ddcf963520079 100644 --- a/src/main/java/com/google/devtools/build/lib/remote/merkletree/DirectoryTreeBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/remote/merkletree/DirectoryTreeBuilder.java @@ -146,7 +146,7 @@ private static int buildFromActionInputs( case DIRECTORY: SortedMap directoryInputs = - explodeDirectory(path, execRoot); + explodeDirectory(input.getExecPath(), execRoot); return buildFromActionInputs( directoryInputs, metadataProvider, execRoot, digestUtil, tree); diff --git a/src/test/shell/bazel/disk_cache_test.sh b/src/test/shell/bazel/disk_cache_test.sh index 303134057ad74c..05c6546ebe5f73 100755 --- a/src/test/shell/bazel/disk_cache_test.sh +++ b/src/test/shell/bazel/disk_cache_test.sh @@ -66,4 +66,29 @@ EOF assert_equals "0" $(cat "${execution_file}") } +function test_input_directories_in_external_repo_with_sibling_repository_layout() { + create_new_workspace + l=$TEST_TMPDIR/l + mkdir -p "$l/dir" + touch "$l/WORKSPACE" + touch "$l/dir/f" + cat > "$l/BUILD" <<'EOF' +exports_files(["dir"]) +EOF + + cat >> WORKSPACE < BUILD <<'EOF' +genrule(name="g", srcs=["@l//:dir"], outs=["go"], cmd="find $< > $@") +EOF + + bazel build \ + --experimental_sibling_repository_layout \ + --disk_cache="$TEST_TMPDIR/cache" \ + //:g || fail "build failed" + +} + run_suite "local action cache test"