refactor(tvix/store): move protobuf build config one level up
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
This commit is contained in:
parent
144d010515
commit
3e03e59893
3 changed files with 37 additions and 35 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
12
tvix/store/protos/default.nix
Normal file
12
tvix/store/protos/default.nix
Normal file
|
@ -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
|
Loading…
Reference in a new issue