From d1c38d9597e110bef92a548c86a651174bd385dc Mon Sep 17 00:00:00 2001 From: Griffin Smith Date: Thu, 13 Aug 2020 22:06:23 -0400 Subject: refactor(tvix): Make Store::buildPaths return a Status Make Store::buildPaths return a Status with [[nodiscard]] rather than throwing exceptions to signal failure. This is the beginning of a long road to refactor the entire store API to be status/statusor based instead of using exceptions. Change-Id: I2e32371c95a25b87ad129987c217d49c6d6e0c85 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1745 Tested-by: BuildkiteCI Reviewed-by: kanepyork --- third_party/nix/src/libstore/remote-store.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'third_party/nix/src/libstore/remote-store.cc') diff --git a/third_party/nix/src/libstore/remote-store.cc b/third_party/nix/src/libstore/remote-store.cc index 41881f8ef9..6948d4e61d 100644 --- a/third_party/nix/src/libstore/remote-store.cc +++ b/third_party/nix/src/libstore/remote-store.cc @@ -3,6 +3,7 @@ #include #include +#include #include #include #include @@ -459,7 +460,8 @@ Path RemoteStore::addTextToStore(const std::string& name, const std::string& s, return readStorePath(*this, conn->from); } -void RemoteStore::buildPaths(const PathSet& drvPaths, BuildMode buildMode) { +absl::Status RemoteStore::buildPaths(const PathSet& drvPaths, + BuildMode buildMode) { auto conn(getConnection()); conn->to << wopBuildPaths; if (GET_PROTOCOL_MINOR(conn->daemonVersion) >= 13) { @@ -470,7 +472,8 @@ void RemoteStore::buildPaths(const PathSet& drvPaths, BuildMode buildMode) { /* Old daemons did not take a 'buildMode' parameter, so we need to validate it here on the client side. */ if (buildMode != bmNormal) { - throw Error( + return absl::Status( + absl::StatusCode::kInvalidArgument, "repairing or checking is not supported when building through the " "Nix daemon"); } @@ -485,6 +488,8 @@ void RemoteStore::buildPaths(const PathSet& drvPaths, BuildMode buildMode) { } conn.processStderr(); readInt(conn->from); + + return absl::OkStatus(); } BuildResult RemoteStore::buildDerivation(const Path& drvPath, -- cgit 1.4.1