diff options
Diffstat (limited to 'src/buildtool/execution_api/local/local_api.hpp')
-rw-r--r-- | src/buildtool/execution_api/local/local_api.hpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/buildtool/execution_api/local/local_api.hpp b/src/buildtool/execution_api/local/local_api.hpp index 577d771b..87296414 100644 --- a/src/buildtool/execution_api/local/local_api.hpp +++ b/src/buildtool/execution_api/local/local_api.hpp @@ -309,8 +309,18 @@ class LocalApi final : public IExecutionApi { if (Compatibility::IsCompatible()) { BlobContainer blobs{}; + auto const& cas = storage_->CAS(); auto digest = BazelMsgFactory::CreateDirectoryDigestFromTree( *build_root, + [&cas](std::vector<bazel_re::Digest> const& digests, + std::vector<std::string>* targets) { + targets->reserve(digests.size()); + for (auto const& digest : digests) { + auto p = cas.BlobPath(digest, /*is_executable=*/false); + auto content = FileSystemManager::ReadFile(*p); + targets->emplace_back(*content); + } + }, [&blobs](BazelBlob&& blob) { blobs.Emplace(std::move(blob)); }); if (not digest) { Logger::Log(LogLevel::Debug, |