From 49024be05644d4fac252e2191e9de74e0ffd4fe3 Mon Sep 17 00:00:00 2001 From: Griffin Smith Date: Fri, 27 Nov 2020 18:12:44 -0500 Subject: feat(tvix): Thread a log sink through calls to buildDerivation Similarly to how we did for buildPaths, add a std::ostream& log_sink parameter to the build_derivation method on Store, and pass it std::cerr when called at the top level by nix commands - most notably, the build-remote hook binary, so that we get build logs when using tvix as a remote builder. Change-Id: I0f8f729ba8429d4838a0a135a5c2ac1e1a95d575 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2176 Tested-by: BuildkiteCI Reviewed-by: andi Reviewed-by: kanepyork --- third_party/nix/src/nix-daemon/nix-daemon-proto.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'third_party/nix/src/nix-daemon') diff --git a/third_party/nix/src/nix-daemon/nix-daemon-proto.cc b/third_party/nix/src/nix-daemon/nix-daemon-proto.cc index 597ef2434a..d6498e77c2 100644 --- a/third_party/nix/src/nix-daemon/nix-daemon-proto.cc +++ b/third_party/nix/src/nix-daemon/nix-daemon-proto.cc @@ -687,7 +687,10 @@ class WorkerServiceImpl final : public WorkerService::Service { return Status(grpc::StatusCode::INTERNAL, "Invalid build mode"); } - BuildResult res = store_->buildDerivation(drv_path, drv, *build_mode); + BuildLogStreambuf log_buffer(writer); + std::ostream log_sink(&log_buffer); + BuildResult res = + store_->buildDerivation(log_sink, drv_path, drv, *build_mode); proto::BuildResult proto_res{}; proto_res.set_status(res.status_to_proto()); -- cgit 1.4.1