diff options
Diffstat (limited to 'third_party/nix/src/libstore/rpc-store.cc')
-rw-r--r-- | third_party/nix/src/libstore/rpc-store.cc | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/third_party/nix/src/libstore/rpc-store.cc b/third_party/nix/src/libstore/rpc-store.cc index f3fc5582f3ef..92ad4e762bf9 100644 --- a/third_party/nix/src/libstore/rpc-store.cc +++ b/third_party/nix/src/libstore/rpc-store.cc @@ -4,6 +4,7 @@ #include <filesystem> #include <memory> #include <optional> +#include <ostream> #include <absl/status/status.h> #include <absl/strings/str_cat.h> @@ -318,7 +319,8 @@ Path RpcStore::addTextToStore(const std::string& name, return result.path(); } -absl::Status RpcStore::buildPaths(const PathSet& paths, BuildMode buildMode) { +absl::Status RpcStore::buildPaths(std::ostream& log_sink, const PathSet& paths, + BuildMode build_mode) { ClientContext ctx; proto::BuildPathsRequest request; for (const auto& path : paths) { @@ -326,14 +328,7 @@ absl::Status RpcStore::buildPaths(const PathSet& paths, BuildMode buildMode) { } google::protobuf::Empty response; - request.set_mode(nix::BuildModeToProto(buildMode)); - - // TODO(tazjin): Temporary no-op sink used to discard build output, - // but satisfy the compiler. A real one is needed. - // - // Maybe this should just be stderr, considering that this is the - // *client*, but I'm not sure. - std::ostream discard_logs = DiscardLogsSink(); + request.set_mode(nix::BuildModeToProto(build_mode)); std::unique_ptr<grpc::ClientReader<proto::BuildEvent>> reader = stub_->BuildPaths(&ctx, request); @@ -342,11 +337,11 @@ absl::Status RpcStore::buildPaths(const PathSet& paths, BuildMode buildMode) { while (reader->Read(&event)) { if (event.has_build_log()) { // TODO(tazjin): Include .path()? - discard_logs << event.build_log().line(); + log_sink << event.build_log().line(); } else { - discard_logs << std::endl - << "Building path: " << event.building_path().path() - << std::endl; + log_sink << std::endl + << "Building path: " << event.building_path().path() + << std::endl; } // has_result() is not in use in this call (for now) |