about summary refs log tree commit diff
path: root/third_party/nix/src/proto
diff options
context:
space:
mode:
authorGriffin Smith <grfn@gws.fyi>2020-07-17T13·30-0400
committerglittershark <grfn@gws.fyi>2020-07-18T19·52+0000
commita79df261b498473ae7c6d4a04f32c50d5954124f (patch)
tree1758dd00cc3c541cd67801bd30cbef8c62aca593 /third_party/nix/src/proto
parent3f4e5050cd046c137ff6d0a1bd046c5494f60471 (diff)
feat(3p/nix/nix-daemon): Implement Worker::BuildDerivation handler r/1382
Implement the proto handler on the server side for
Worker::BuildDerivation. This includes several additions to the proto
which I had missed on the first pass, including the actual proto
definition for the Derivation itself and a few sequence number
reorderings which are fine because this is all provisional and not
deployed yet.

A couple things to note

- I implemented a couple constructors for nix classes that initialize
  themselves based on their proto variants, which felt nice and didn't
  end up causing any issues.
- I've made the conversions between the enum types in nix and in proto
  explicit via switch statements rather than using a static_cast, out of
  an abundance of caution that the error would get mismatched in the
  future and we'd convert the wrong thing to the wrong thing - this is
  verbose, but exceptionally future proof.

Change-Id: Iecf6b88e76bc37e49efa05fd65d6cd0cb0deffed
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1249
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Reviewed-by: Kane York <rikingcoding@gmail.com>
Diffstat (limited to 'third_party/nix/src/proto')
-rw-r--r--third_party/nix/src/proto/worker.proto17
1 files changed, 16 insertions, 1 deletions
diff --git a/third_party/nix/src/proto/worker.proto b/third_party/nix/src/proto/worker.proto
index 8e629da70967..3dd83d9988f7 100644
--- a/third_party/nix/src/proto/worker.proto
+++ b/third_party/nix/src/proto/worker.proto
@@ -288,10 +288,25 @@ message VerifyStoreResponse {
   bool errors = 1;
 }
 
+message Derivation {
+  message DerivationOutput {
+    StorePath path = 1;
+    string hash_algo = 2;
+    bytes hash = 3;
+  }
+  map<string, DerivationOutput> outputs = 1;
+  StorePaths input_sources = 2;
+  string platform = 3;
+  StorePath builder = 4;
+  repeated string args = 5;
+  map<string, string> env = 6;
+}
+
 message BuildDerivationRequest {
   // Only used for informational purposes.
   StorePath drv_path = 1;
-  BuildMode build_mode = 2;
+  Derivation derivation = 2;
+  BuildMode build_mode = 3;
 }
 
 message BuildDerivationResponse {