diff options
author | Vincent Ambo <mail@tazj.in> | 2020-08-20T02·28+0100 |
---|---|---|
committer | tazjin <mail@tazj.in> | 2020-08-20T11·48+0000 |
commit | 33e8b0f975cd8934405c568cfa1d7e2a1edfa425 (patch) | |
tree | 2d67c57661cd424bfe6c87d33c4d38212f9a4e3c /third_party/nix/src/libstore/rpc-store.cc | |
parent | f7fa77f14dedad98ab9e8a014d3bcfd60565dfd0 (diff) |
chore(tvix): Thread a std::ostream through Store::buildPaths r/1689
This part of the store API needs to carry a handle to the log sink from now on, so that it can be passed in as appropriate from the gRPC handlers. In all places where there is no such handler available at the moment, the discarding log sink has been inserted. This can be used as a convenient grep target in the future. Change-Id: I26628e30b4c6437dccdf8f722ca2e8ed827dfc19 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1797 Tested-by: BuildkiteCI Reviewed-by: kanepyork <rikingcoding@gmail.com> Reviewed-by: glittershark <grfn@gws.fyi>
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) |