diff options
author | Griffin Smith <grfn@gws.fyi> | 2020-08-08T20·44-0400 |
---|---|---|
committer | glittershark <grfn@gws.fyi> | 2020-08-09T02·22+0000 |
commit | e440f60b6c74c6e2f406b4f187e6c20ee6d315dd (patch) | |
tree | de04c21c18bfa2f80f75144f3403a804a10ff477 /third_party/nix/src/libstore/store-api.cc | |
parent | 747dc6515410913aa8eec33d7e84f80e84b8773b (diff) |
feat(tvix): Implement all remaining RPC calls r/1622
Implement all remaining RPC calls on the RpcSstore client, remove a few stub methods we had added that weren't actually present in the old RemoteStore implementation, and add one more RPC call for getBuildLog that is present in the store API, but that we hadn't added as a stub *or* to the proto. Fixes: #29 Change-Id: Id827f51a393ece4bc7bbecaf38aee9eb4b329770 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1692 Reviewed-by: kanepyork <rikingcoding@gmail.com> Tested-by: BuildkiteCI
Diffstat (limited to 'third_party/nix/src/libstore/store-api.cc')
-rw-r--r-- | third_party/nix/src/libstore/store-api.cc | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/third_party/nix/src/libstore/store-api.cc b/third_party/nix/src/libstore/store-api.cc index dba9c8f95ec6..a6863cc04b52 100644 --- a/third_party/nix/src/libstore/store-api.cc +++ b/third_party/nix/src/libstore/store-api.cc @@ -77,6 +77,44 @@ nix::proto::BuildStatus BuildResult::status_to_proto() { } } +std::optional<BuildResult> BuildResult::FromProto( + const nix::proto::BuildDerivationResponse& resp) { + BuildResult result; + switch (resp.status()) { + case proto::BuildStatus::Built: + result.status = BuildResult::Status::Built; + case proto::BuildStatus::Substituted: + result.status = BuildResult::Status::Substituted; + case proto::BuildStatus::AlreadyValid: + result.status = BuildResult::Status::AlreadyValid; + case proto::BuildStatus::PermanentFailure: + result.status = BuildResult::Status::PermanentFailure; + case proto::BuildStatus::InputRejected: + result.status = BuildResult::Status::InputRejected; + case proto::BuildStatus::OutputRejected: + result.status = BuildResult::Status::OutputRejected; + case proto::BuildStatus::TransientFailure: + result.status = BuildResult::Status::TransientFailure; + case proto::BuildStatus::CachedFailure: + result.status = BuildResult::Status::CachedFailure; + case proto::BuildStatus::TimedOut: + result.status = BuildResult::Status::TimedOut; + case proto::BuildStatus::MiscFailure: + result.status = BuildResult::Status::MiscFailure; + case proto::BuildStatus::DependencyFailed: + result.status = BuildResult::Status::DependencyFailed; + case proto::BuildStatus::LogLimitExceeded: + result.status = BuildResult::Status::LogLimitExceeded; + case proto::BuildStatus::NotDeterministic: + result.status = BuildResult::Status::NotDeterministic; + default: + return {}; + } + + result.errorMsg = resp.error_message(); + return result; +} + std::optional<GCOptions::GCAction> GCActionFromProto( nix::proto::GCAction gc_action) { switch (gc_action) { |