feat(tvix/build), add OciBuildService, the old way

This is just patchset 10 of CL10855, before the color_eyre changes,
rebased to the tvix_castore api.

Change-Id: If4b42412ff8568058908cda971ad7d6f2d9f9b7b

---
This provides a build service invoking runc. It can be used by using the
`oci://$path_to_some_tempdir` builder URL for now.

For now, it can be tested as such:

```
BUILD_SERVICE_ADDR=oci://$PWD/bundles target/debug/tvix
let pkgs = (import <nixpkgs> {}); in builtins.readDir pkgs.perl
```

readDir is to actually trigger IO into the store path (which triggers
the builds).

For now it fails due to missing reference scanning (see followup CLs).

Change-Id: I09b40e410114ce69966a41a0e3c33281b859e443
Reviewed-on: https://cl.tvl.fyi/c/depot/+/12526
Autosubmit: yuka <yuka@yuka.dev>
Tested-by: BuildkiteCI
Reviewed-by: flokli <flokli@flokli.de>
This commit is contained in:
Florian Klink 2024-09-27 14:13:21 +02:00 committed by clbot
parent cf91917a9d
commit 2414c87282
14 changed files with 1270 additions and 18 deletions

View file

@ -2956,7 +2956,32 @@ rec {
];
};
"darling" = rec {
"darling 0.14.4" = rec {
crateName = "darling";
version = "0.14.4";
edition = "2018";
sha256 = "0l1qrn805bsxa0iy7x8bmdwr8c10hlw0yiqs8ckv7lbz86rhqxbv";
authors = [
"Ted Driggs <ted.driggs@outlook.com>"
];
dependencies = [
{
name = "darling_core";
packageId = "darling_core 0.14.4";
}
{
name = "darling_macro";
packageId = "darling_macro 0.14.4";
}
];
features = {
"default" = [ "suggestions" ];
"diagnostics" = [ "darling_core/diagnostics" ];
"suggestions" = [ "darling_core/suggestions" ];
};
resolvedDefaultFeatures = [ "default" "suggestions" ];
};
"darling 0.20.8" = rec {
crateName = "darling";
version = "0.20.8";
edition = "2018";
@ -2967,11 +2992,11 @@ rec {
dependencies = [
{
name = "darling_core";
packageId = "darling_core";
packageId = "darling_core 0.20.8";
}
{
name = "darling_macro";
packageId = "darling_macro";
packageId = "darling_macro 0.20.8";
}
];
features = {
@ -2981,7 +3006,49 @@ rec {
};
resolvedDefaultFeatures = [ "default" "suggestions" ];
};
"darling_core" = rec {
"darling_core 0.14.4" = rec {
crateName = "darling_core";
version = "0.14.4";
edition = "2018";
sha256 = "1w4b2ndxmkwghwq84yphk8x15jnpivm08w596g12ry5pwsk1r70h";
authors = [
"Ted Driggs <ted.driggs@outlook.com>"
];
dependencies = [
{
name = "fnv";
packageId = "fnv";
}
{
name = "ident_case";
packageId = "ident_case";
}
{
name = "proc-macro2";
packageId = "proc-macro2";
}
{
name = "quote";
packageId = "quote";
}
{
name = "strsim";
packageId = "strsim 0.10.0";
optional = true;
}
{
name = "syn";
packageId = "syn 1.0.109";
features = [ "full" "extra-traits" ];
}
];
features = {
"strsim" = [ "dep:strsim" ];
"suggestions" = [ "strsim" ];
};
resolvedDefaultFeatures = [ "strsim" "suggestions" ];
};
"darling_core 0.20.8" = rec {
crateName = "darling_core";
version = "0.20.8";
edition = "2018";
@ -3023,7 +3090,32 @@ rec {
};
resolvedDefaultFeatures = [ "strsim" "suggestions" ];
};
"darling_macro" = rec {
"darling_macro 0.14.4" = rec {
crateName = "darling_macro";
version = "0.14.4";
edition = "2018";
sha256 = "13mlyd5w275c815k0ijf6g4c446hs8b3m2h4an5isqgpr7dv9am4";
procMacro = true;
authors = [
"Ted Driggs <ted.driggs@outlook.com>"
];
dependencies = [
{
name = "darling_core";
packageId = "darling_core 0.14.4";
}
{
name = "quote";
packageId = "quote";
}
{
name = "syn";
packageId = "syn 1.0.109";
}
];
};
"darling_macro 0.20.8" = rec {
crateName = "darling_macro";
version = "0.20.8";
edition = "2018";
@ -3035,7 +3127,7 @@ rec {
dependencies = [
{
name = "darling_core";
packageId = "darling_core";
packageId = "darling_core 0.20.8";
}
{
name = "quote";
@ -3131,6 +3223,88 @@ rec {
};
resolvedDefaultFeatures = [ "alloc" "powerfmt" "serde" "std" ];
};
"derive_builder" = rec {
crateName = "derive_builder";
version = "0.12.0";
edition = "2015";
sha256 = "1y4p569zcvpmly5s5hmjp9h83drxvdp6kj6bb61h225mhj3pfrwd";
authors = [
"Colin Kiegel <kiegel@gmx.de>"
"Pascal Hertleif <killercup@gmail.com>"
"Jan-Erik Rediger <janerik@fnordig.de>"
"Ted Driggs <ted.driggs@outlook.com>"
];
dependencies = [
{
name = "derive_builder_macro";
packageId = "derive_builder_macro";
}
];
features = {
"clippy" = [ "derive_builder_macro/clippy" ];
"default" = [ "std" ];
};
resolvedDefaultFeatures = [ "default" "std" ];
};
"derive_builder_core" = rec {
crateName = "derive_builder_core";
version = "0.12.0";
edition = "2015";
sha256 = "03vvmw3mfg370swq0dh2h5kcjjb8va2m4asqgp9wfyy4l08xq6y1";
authors = [
"Colin Kiegel <kiegel@gmx.de>"
"Pascal Hertleif <killercup@gmail.com>"
"Jan-Erik Rediger <janerik@fnordig.de>"
"Ted Driggs <ted.driggs@outlook.com>"
];
dependencies = [
{
name = "darling";
packageId = "darling 0.14.4";
}
{
name = "proc-macro2";
packageId = "proc-macro2";
}
{
name = "quote";
packageId = "quote";
}
{
name = "syn";
packageId = "syn 1.0.109";
features = [ "full" "extra-traits" ];
}
];
features = { };
};
"derive_builder_macro" = rec {
crateName = "derive_builder_macro";
version = "0.12.0";
edition = "2015";
sha256 = "17p71qzh7x1q2yxzz3xrg73zw3xl0h479b7ybyjm0s1rg9fa7kgb";
procMacro = true;
authors = [
"Colin Kiegel <kiegel@gmx.de>"
"Pascal Hertleif <killercup@gmail.com>"
"Jan-Erik Rediger <janerik@fnordig.de>"
"Ted Driggs <ted.driggs@outlook.com>"
];
dependencies = [
{
name = "derive_builder_core";
packageId = "derive_builder_core";
}
{
name = "syn";
packageId = "syn 1.0.109";
features = [ "full" "extra-traits" ];
}
];
features = {
"clippy" = [ "derive_builder_core/clippy" ];
};
};
"diff" = rec {
crateName = "diff";
version = "0.1.13";
@ -4724,6 +4898,36 @@ rec {
};
resolvedDefaultFeatures = [ "js" "js-sys" "std" "wasm-bindgen" ];
};
"getset" = rec {
crateName = "getset";
version = "0.1.2";
edition = "2018";
sha256 = "1f8yc83hm5b7vzscxq20ivdv7wlfvabn79j653zh9k3m1qjjfmz4";
procMacro = true;
authors = [
"Ana Hobden <ana@hoverbear.org>"
];
dependencies = [
{
name = "proc-macro-error";
packageId = "proc-macro-error";
}
{
name = "proc-macro2";
packageId = "proc-macro2";
usesDefaultFeatures = false;
}
{
name = "quote";
packageId = "quote";
}
{
name = "syn";
packageId = "syn 1.0.109";
}
];
};
"gimli" = rec {
crateName = "gimli";
version = "0.28.1";
@ -7779,6 +7983,54 @@ rec {
};
resolvedDefaultFeatures = [ "aws" "azure" "base64" "cloud" "gcp" "http" "hyper" "md-5" "quick-xml" "rand" "reqwest" "ring" "rustls-pemfile" "serde" "serde_json" ];
};
"oci-spec" = rec {
crateName = "oci-spec";
version = "0.6.4";
edition = "2021";
sha256 = "02b3vsvsagd1h5gf4kb9z5b080kr0y8z34d9zgxblm1ry7pzi143";
libName = "oci_spec";
authors = [
"Furisto"
"Sascha Grunert <sgrunert@redhat.com>"
"Toru Komatsu <k0ma@utam0k.jp>"
];
dependencies = [
{
name = "derive_builder";
packageId = "derive_builder";
}
{
name = "getset";
packageId = "getset";
}
{
name = "serde";
packageId = "serde";
features = [ "derive" ];
}
{
name = "serde_json";
packageId = "serde_json";
}
{
name = "thiserror";
packageId = "thiserror";
}
];
devDependencies = [
{
name = "serde_json";
packageId = "serde_json";
features = [ "preserve_order" ];
}
];
features = {
"default" = [ "distribution" "image" "runtime" ];
"proptests" = [ "quickcheck" ];
"quickcheck" = [ "dep:quickcheck" ];
};
resolvedDefaultFeatures = [ "default" "distribution" "image" "runtime" ];
};
"once_cell" = rec {
crateName = "once_cell";
version = "1.19.0";
@ -8969,6 +9221,76 @@ rec {
"verbatim" = [ "syn/parsing" ];
};
};
"proc-macro-error" = rec {
crateName = "proc-macro-error";
version = "1.0.4";
edition = "2018";
sha256 = "1373bhxaf0pagd8zkyd03kkx6bchzf6g0dkwrwzsnal9z47lj9fs";
libName = "proc_macro_error";
authors = [
"CreepySkeleton <creepy-skeleton@yandex.ru>"
];
dependencies = [
{
name = "proc-macro-error-attr";
packageId = "proc-macro-error-attr";
}
{
name = "proc-macro2";
packageId = "proc-macro2";
}
{
name = "quote";
packageId = "quote";
}
{
name = "syn";
packageId = "syn 1.0.109";
optional = true;
usesDefaultFeatures = false;
}
];
buildDependencies = [
{
name = "version_check";
packageId = "version_check";
}
];
features = {
"default" = [ "syn-error" ];
"syn" = [ "dep:syn" ];
"syn-error" = [ "syn" ];
};
resolvedDefaultFeatures = [ "default" "syn" "syn-error" ];
};
"proc-macro-error-attr" = rec {
crateName = "proc-macro-error-attr";
version = "1.0.4";
edition = "2018";
sha256 = "0sgq6m5jfmasmwwy8x4mjygx5l7kp8s4j60bv25ckv2j1qc41gm1";
procMacro = true;
libName = "proc_macro_error_attr";
authors = [
"CreepySkeleton <creepy-skeleton@yandex.ru>"
];
dependencies = [
{
name = "proc-macro2";
packageId = "proc-macro2";
}
{
name = "quote";
packageId = "quote";
}
];
buildDependencies = [
{
name = "version_check";
packageId = "version_check";
}
];
};
"proc-macro2" = rec {
crateName = "proc-macro2";
version = "1.0.86";
@ -11822,7 +12144,7 @@ rec {
dependencies = [
{
name = "darling";
packageId = "darling";
packageId = "darling 0.20.8";
}
{
name = "proc-macro2";
@ -12976,7 +13298,7 @@ rec {
"tracing" = [ "dep:tracing" ];
"windows-sys" = [ "dep:windows-sys" ];
};
resolvedDefaultFeatures = [ "bytes" "default" "fs" "io-std" "io-util" "libc" "macros" "mio" "net" "rt" "rt-multi-thread" "signal" "signal-hook-registry" "socket2" "sync" "test-util" "time" "tokio-macros" "windows-sys" ];
resolvedDefaultFeatures = [ "bytes" "default" "fs" "io-std" "io-util" "libc" "macros" "mio" "net" "process" "rt" "rt-multi-thread" "signal" "signal-hook-registry" "socket2" "sync" "test-util" "time" "tokio-macros" "windows-sys" ];
};
"tokio-listener" = rec {
crateName = "tokio-listener";
@ -14878,6 +15200,18 @@ rec {
src = lib.cleanSourceWith { filter = sourceFilter; src = ./build; };
libName = "tvix_build";
dependencies = [
{
name = "anyhow";
packageId = "anyhow";
}
{
name = "blake3";
packageId = "blake3";
}
{
name = "bstr";
packageId = "bstr";
}
{
name = "bytes";
packageId = "bytes";
@ -14887,6 +15221,14 @@ rec {
packageId = "clap";
features = [ "derive" "env" ];
}
{
name = "data-encoding";
packageId = "data-encoding";
}
{
name = "futures";
packageId = "futures";
}
{
name = "itertools";
packageId = "itertools 0.12.1";
@ -14895,10 +15237,18 @@ rec {
name = "mimalloc";
packageId = "mimalloc";
}
{
name = "oci-spec";
packageId = "oci-spec";
}
{
name = "prost";
packageId = "prost";
}
{
name = "serde_json";
packageId = "serde_json";
}
{
name = "thiserror";
packageId = "thiserror";
@ -14906,6 +15256,7 @@ rec {
{
name = "tokio";
packageId = "tokio";
features = [ "process" ];
}
{
name = "tokio-listener";
@ -14929,6 +15280,7 @@ rec {
{
name = "tvix-castore";
packageId = "tvix-castore";
features = [ "fuse" ];
}
{
name = "tvix-tracing";
@ -14938,6 +15290,11 @@ rec {
name = "url";
packageId = "url";
}
{
name = "uuid";
packageId = "uuid";
features = [ "v4" ];
}
];
buildDependencies = [
{
@ -14950,10 +15307,18 @@ rec {
}
];
devDependencies = [
{
name = "lazy_static";
packageId = "lazy_static";
}
{
name = "rstest";
packageId = "rstest";
}
{
name = "tempfile";
packageId = "tempfile";
}
];
features = {
"tonic-reflection" = [ "dep:tonic-reflection" "tvix-castore/tonic-reflection" ];