diff options
author | Hadrien Chauvin <hadrienchauvin@gmail.com> | 2017-12-20 08:45:45 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2017-12-20 09:18:36 -0800 |
commit | 3d0a04ddc6b0f4d660256f274ceb3e5c7f654c90 (patch) | |
tree | d9cb81241894d7faf323ad101c7b81cc71a005c4 /src/tools/remote | |
parent | 8e3afccd8bea45105752ddeb33bde111c556fb8b (diff) |
remote: add directory support for remote caching and execution
Add support for directory trees as artifacts. Closes #4011.
PiperOrigin-RevId: 179691001
Diffstat (limited to 'src/tools/remote')
2 files changed, 9 insertions, 2 deletions
diff --git a/src/tools/remote/src/main/java/com/google/devtools/build/remote/worker/ExecutionServer.java b/src/tools/remote/src/main/java/com/google/devtools/build/remote/worker/ExecutionServer.java index 22761a9b19..f7575bd35b 100644 --- a/src/tools/remote/src/main/java/com/google/devtools/build/remote/worker/ExecutionServer.java +++ b/src/tools/remote/src/main/java/com/google/devtools/build/remote/worker/ExecutionServer.java @@ -191,7 +191,14 @@ final class ExecutionServer extends ExecutionImplBase { FileSystemUtils.createDirectoryAndParents(file.getParentDirectory()); outputs.add(file); } - // TODO(olaola): support output directories. + for (String output : action.getOutputDirectoriesList()) { + Path file = execRoot.getRelative(output); + if (file.exists()) { + throw new FileAlreadyExistsException("Output directory/file already exists: " + file); + } + FileSystemUtils.createDirectoryAndParents(file.getParentDirectory()); + outputs.add(file); + } // TODO(ulfjack): This is basically a copy of LocalSpawnRunner. Ideally, we'd use that // implementation instead of copying it. diff --git a/src/tools/remote/src/main/java/com/google/devtools/build/remote/worker/RemoteWorker.java b/src/tools/remote/src/main/java/com/google/devtools/build/remote/worker/RemoteWorker.java index 8463bb0091..c03039730e 100644 --- a/src/tools/remote/src/main/java/com/google/devtools/build/remote/worker/RemoteWorker.java +++ b/src/tools/remote/src/main/java/com/google/devtools/build/remote/worker/RemoteWorker.java @@ -268,7 +268,7 @@ public final class RemoteWorker { } else { blobStore = new ConcurrentMapBlobStore(new ConcurrentHashMap<String, byte[]>()); } - + DigestUtil digestUtil = new DigestUtil(fs.getDigestFunction()); RemoteWorker worker = new RemoteWorker( |