diff options
author | Vincent Ambo <mail@tazj.in> | 2023-01-06T17·20+0300 |
---|---|---|
committer | tazjin <tazjin@tvl.su> | 2023-01-06T17·57+0000 |
commit | 3e03e59893b77b0b3915224967b377f6e940670d (patch) | |
tree | c2fd130c402a651e0e9c3dab87469976a856d3b0 /tvix | |
parent | 144d010515c5a92c4a8ee05b95a913973f8bc6f2 (diff) |
refactor(tvix/store): move protobuf build config one level up r/5615
This embeds the build config directly at the point where `Cargo.nix` is imported, making it transparent to library consumers. Change-Id: I5586e12f02ed14587c32d9ef7d93f079366fb127 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7780 Autosubmit: tazjin <tazjin@tvl.su> Reviewed-by: flokli <flokli@flokli.de> Tested-by: BuildkiteCI
Diffstat (limited to 'tvix')
-rw-r--r-- | tvix/default.nix | 24 | ||||
-rw-r--r-- | tvix/store/default.nix | 36 | ||||
-rw-r--r-- | tvix/store/protos/default.nix | 12 |
3 files changed, 37 insertions, 35 deletions
diff --git a/tvix/default.nix b/tvix/default.nix index d0357fe24ef8..f0da4d05b335 100644 --- a/tvix/default.nix +++ b/tvix/default.nix @@ -1,11 +1,35 @@ # Nix helpers for projects under //tvix { pkgs, depot, ... }: +let + # crate override for crates that need protobuf + protobufDep = prev: (prev.nativeBuildInputs or [ ]) ++ [ pkgs.protobuf ]; +in { # Load the crate2nix crate tree. crates = import ./Cargo.nix { inherit pkgs; nixpkgs = pkgs.path; + + defaultCrateOverrides = pkgs.defaultCrateOverrides // { + prost-build = prev: { + nativeBuildInputs = protobufDep prev; + }; + + tonic-reflection = prev: { + nativeBuildInputs = protobufDep prev; + }; + + tvix-store = prev: { + PROTO_ROOT = depot.tvix.store.protos; + nativeBuildInputs = protobufDep prev; + }; + + tvix-store-bin = prev: { + PROTO_ROOT = depot.tvix.store.protos; + nativeBuildInputs = protobufDep prev; + }; + }; }; # Run crate2nix generate in the current working directory, then diff --git a/tvix/store/default.nix b/tvix/store/default.nix index 65289cacc87c..3d873a097ec4 100644 --- a/tvix/store/default.nix +++ b/tvix/store/default.nix @@ -1,39 +1,5 @@ -{ depot, pkgs, ... }: +{ depot, ... }: -let - protoRoot = depot.nix.sparseTree depot.path.origSrc [ - ./protos/castore.proto - ./protos/pathinfo.proto - ./protos/rpc_blobstore.proto - ./protos/rpc_directory.proto - ./protos/rpc_pathinfo.proto - ]; - - protobufDep = prev: (prev.nativeBuildInputs or [ ]) ++ [ pkgs.protobuf ]; -in depot.tvix.crates.workspaceMembers.tvix-store-bin.build.override { - # Ensure protobuf dependencies are available. - # TODO: figure out a way to embed this directly in the //tvix - # crate2nix config. - crateOverrides = { - prost-build = prev: { - nativeBuildInputs = protobufDep prev; - }; - - tonic-reflection = prev: { - nativeBuildInputs = protobufDep prev; - }; - - tvix-store = prev: { - PROTO_ROOT = protoRoot; - nativeBuildInputs = protobufDep prev; - }; - - tvix-store-bin = prev: { - PROTO_ROOT = protoRoot; - nativeBuildInputs = protobufDep prev; - }; - }; - runTests = true; } diff --git a/tvix/store/protos/default.nix b/tvix/store/protos/default.nix new file mode 100644 index 000000000000..0ffdcac0418a --- /dev/null +++ b/tvix/store/protos/default.nix @@ -0,0 +1,12 @@ +# Target containing just the proto files. + +{ depot, lib, ... }: + +let + inherit (lib.strings) hasSuffix; + inherit (builtins) attrNames filter readDir; + + protoFileNames = filter (hasSuffix ".proto") (attrNames (readDir ./.)); + protoFiles = map (f: ./. + ("/" + f)) protoFileNames; +in +depot.nix.sparseTree depot.path.origSrc protoFiles |