2022-08-04 15:29:38 +02:00
|
|
|
# This file is automatically @generated by Cargo.
|
|
|
|
# It is not intended for manual editing.
|
|
|
|
version = 3
|
|
|
|
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
[[package]]
|
|
|
|
name = "addr2line"
|
|
|
|
version = "0.21.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
|
|
|
|
dependencies = [
|
|
|
|
"gimli",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "adler"
|
|
|
|
version = "1.0.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
|
|
|
|
|
2022-10-13 00:45:52 +02:00
|
|
|
[[package]]
|
|
|
|
name = "aho-corasick"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "1.0.1"
|
2022-10-13 00:45:52 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04"
|
2022-10-13 00:45:52 +02:00
|
|
|
dependencies = [
|
|
|
|
"memchr",
|
|
|
|
]
|
|
|
|
|
2022-12-16 12:54:22 +01:00
|
|
|
[[package]]
|
|
|
|
name = "anes"
|
|
|
|
version = "0.1.6"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
|
|
|
|
|
2023-05-01 16:29:20 +02:00
|
|
|
[[package]]
|
|
|
|
name = "anstream"
|
|
|
|
version = "0.3.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163"
|
|
|
|
dependencies = [
|
|
|
|
"anstyle",
|
|
|
|
"anstyle-parse",
|
|
|
|
"anstyle-query",
|
|
|
|
"anstyle-wincon",
|
|
|
|
"colorchoice",
|
|
|
|
"is-terminal",
|
|
|
|
"utf8parse",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "anstyle"
|
|
|
|
version = "1.0.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "41ed9a86bf92ae6580e0a31281f65a1b1d867c0cc68d5346e2ae128dddfa6a7d"
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "anstyle-parse"
|
|
|
|
version = "0.2.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e765fd216e48e067936442276d1d57399e37bce53c264d6fefbe298080cb57ee"
|
|
|
|
dependencies = [
|
|
|
|
"utf8parse",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "anstyle-query"
|
|
|
|
version = "1.0.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b"
|
|
|
|
dependencies = [
|
|
|
|
"windows-sys 0.48.0",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "anstyle-wincon"
|
|
|
|
version = "1.0.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188"
|
|
|
|
dependencies = [
|
|
|
|
"anstyle",
|
|
|
|
"windows-sys 0.48.0",
|
|
|
|
]
|
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "anyhow"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "1.0.71"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8"
|
2022-12-06 14:47:02 +01:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "arrayref"
|
2023-03-26 22:14:32 +02:00
|
|
|
version = "0.3.7"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-26 22:14:32 +02:00
|
|
|
checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545"
|
2022-12-06 14:47:02 +01:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "arrayvec"
|
|
|
|
version = "0.7.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "async-stream"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.3.5"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
|
|
|
"async-stream-impl",
|
|
|
|
"futures-core",
|
2023-03-16 13:31:28 +01:00
|
|
|
"pin-project-lite",
|
2022-11-13 00:23:14 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "async-stream-impl"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.3.5"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"proc-macro2 1.0.56",
|
2023-03-16 13:31:28 +01:00
|
|
|
"quote 1.0.26",
|
2023-05-01 16:29:20 +02:00
|
|
|
"syn 2.0.15",
|
2022-11-13 00:23:14 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "async-trait"
|
2023-03-26 22:14:32 +02:00
|
|
|
version = "0.1.68"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-26 22:14:32 +02:00
|
|
|
checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"proc-macro2 1.0.56",
|
2023-03-16 13:31:28 +01:00
|
|
|
"quote 1.0.26",
|
2023-05-01 16:29:20 +02:00
|
|
|
"syn 2.0.15",
|
2022-11-13 00:23:14 +01:00
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "atty"
|
|
|
|
version = "0.2.14"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
|
|
|
|
dependencies = [
|
2022-12-16 12:54:22 +01:00
|
|
|
"hermit-abi 0.1.19",
|
2022-08-25 17:04:07 +02:00
|
|
|
"libc",
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
2022-08-04 15:44:49 +02:00
|
|
|
[[package]]
|
|
|
|
name = "autocfg"
|
|
|
|
version = "1.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "axum"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.6.18"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "f8175979259124331c1d7bf6586ee7e0da434155e4b2d48ec2c8386281d8df39"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
|
|
|
"async-trait",
|
|
|
|
"axum-core",
|
|
|
|
"bitflags",
|
|
|
|
"bytes",
|
|
|
|
"futures-util",
|
|
|
|
"http",
|
|
|
|
"http-body",
|
|
|
|
"hyper",
|
|
|
|
"itoa",
|
|
|
|
"matchit",
|
|
|
|
"memchr",
|
|
|
|
"mime",
|
|
|
|
"percent-encoding",
|
|
|
|
"pin-project-lite",
|
|
|
|
"rustversion",
|
|
|
|
"serde",
|
|
|
|
"sync_wrapper",
|
|
|
|
"tower",
|
|
|
|
"tower-layer",
|
|
|
|
"tower-service",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "axum-core"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.3.4"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
|
|
|
"async-trait",
|
|
|
|
"bytes",
|
|
|
|
"futures-util",
|
|
|
|
"http",
|
|
|
|
"http-body",
|
|
|
|
"mime",
|
|
|
|
"rustversion",
|
|
|
|
"tower-layer",
|
|
|
|
"tower-service",
|
|
|
|
]
|
|
|
|
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
[[package]]
|
|
|
|
name = "backtrace"
|
|
|
|
version = "0.3.69"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
|
|
|
|
dependencies = [
|
|
|
|
"addr2line",
|
|
|
|
"cc",
|
|
|
|
"cfg-if",
|
|
|
|
"libc",
|
|
|
|
"miniz_oxide",
|
|
|
|
"object",
|
|
|
|
"rustc-demangle",
|
|
|
|
]
|
|
|
|
|
fix(tvix/cli): handle SRI hashes in outputHash
Instead of being called with `md5`, `sha1`, `sha256` or `sha512`,
`fetchurl.nix` (from corepkgs / `<nix`) can also be called with a `hash`
attribute, being an SRI hash.
In that case, `builtin.derivation` is called with `outputHashAlgo` being
an empty string, and `outputHash` being an SRI hash string.
In other cases, an SRI hash is passed as outputHash, but outputHashAlgo
is set too.
Nix does modify these values in (single, fixed) output specification it
serializes to ATerm, but keeps it unharmed in `env`.
Move this into a construct_output_hash helper function, that can be
tested better in isolation.
Change-Id: Id9d716a119664c44ea7747540399966752e20187
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7933
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
2023-01-26 14:18:12 +01:00
|
|
|
[[package]]
|
|
|
|
name = "base64"
|
|
|
|
version = "0.10.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e"
|
|
|
|
dependencies = [
|
|
|
|
"byteorder",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "base64"
|
|
|
|
version = "0.13.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
|
|
|
|
|
2023-01-07 13:23:32 +01:00
|
|
|
[[package]]
|
|
|
|
name = "bit-set"
|
|
|
|
version = "0.5.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1"
|
|
|
|
dependencies = [
|
|
|
|
"bit-vec",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "bit-vec"
|
|
|
|
version = "0.6.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "bitflags"
|
|
|
|
version = "1.3.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
|
|
|
|
2022-12-29 12:44:09 +01:00
|
|
|
[[package]]
|
|
|
|
name = "bitmaps"
|
2022-12-29 15:08:14 +01:00
|
|
|
version = "3.2.0"
|
2022-12-29 12:44:09 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-12-29 15:08:14 +01:00
|
|
|
checksum = "703642b98a00b3b90513279a8ede3fcfa479c126c5fb46e78f3051522f021403"
|
2022-12-29 12:44:09 +01:00
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "blake3"
|
|
|
|
version = "1.3.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "42ae2468a89544a466886840aa467a25b766499f4f04bf7d9fcd10ecee9fccef"
|
|
|
|
dependencies = [
|
|
|
|
"arrayref",
|
|
|
|
"arrayvec",
|
|
|
|
"cc",
|
|
|
|
"cfg-if",
|
|
|
|
"constant_time_eq",
|
fix(tvix/cli): handle SRI hashes in outputHash
Instead of being called with `md5`, `sha1`, `sha256` or `sha512`,
`fetchurl.nix` (from corepkgs / `<nix`) can also be called with a `hash`
attribute, being an SRI hash.
In that case, `builtin.derivation` is called with `outputHashAlgo` being
an empty string, and `outputHash` being an SRI hash string.
In other cases, an SRI hash is passed as outputHash, but outputHashAlgo
is set too.
Nix does modify these values in (single, fixed) output specification it
serializes to ATerm, but keeps it unharmed in `env`.
Move this into a construct_output_hash helper function, that can be
tested better in isolation.
Change-Id: Id9d716a119664c44ea7747540399966752e20187
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7933
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
2023-01-26 14:18:12 +01:00
|
|
|
"digest 0.10.6",
|
2022-12-06 14:47:02 +01:00
|
|
|
"rayon",
|
|
|
|
]
|
|
|
|
|
fix(tvix/cli): handle SRI hashes in outputHash
Instead of being called with `md5`, `sha1`, `sha256` or `sha512`,
`fetchurl.nix` (from corepkgs / `<nix`) can also be called with a `hash`
attribute, being an SRI hash.
In that case, `builtin.derivation` is called with `outputHashAlgo` being
an empty string, and `outputHash` being an SRI hash string.
In other cases, an SRI hash is passed as outputHash, but outputHashAlgo
is set too.
Nix does modify these values in (single, fixed) output specification it
serializes to ATerm, but keeps it unharmed in `env`.
Move this into a construct_output_hash helper function, that can be
tested better in isolation.
Change-Id: Id9d716a119664c44ea7747540399966752e20187
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7933
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
2023-01-26 14:18:12 +01:00
|
|
|
[[package]]
|
|
|
|
name = "block-buffer"
|
|
|
|
version = "0.7.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b"
|
|
|
|
dependencies = [
|
|
|
|
"block-padding",
|
|
|
|
"byte-tools",
|
|
|
|
"byteorder",
|
|
|
|
"generic-array 0.12.4",
|
|
|
|
]
|
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "block-buffer"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "0.10.4"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
|
2022-12-06 14:47:02 +01:00
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"generic-array 0.14.7",
|
fix(tvix/cli): handle SRI hashes in outputHash
Instead of being called with `md5`, `sha1`, `sha256` or `sha512`,
`fetchurl.nix` (from corepkgs / `<nix`) can also be called with a `hash`
attribute, being an SRI hash.
In that case, `builtin.derivation` is called with `outputHashAlgo` being
an empty string, and `outputHash` being an SRI hash string.
In other cases, an SRI hash is passed as outputHash, but outputHashAlgo
is set too.
Nix does modify these values in (single, fixed) output specification it
serializes to ATerm, but keeps it unharmed in `env`.
Move this into a construct_output_hash helper function, that can be
tested better in isolation.
Change-Id: Id9d716a119664c44ea7747540399966752e20187
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7933
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
2023-01-26 14:18:12 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "block-padding"
|
|
|
|
version = "0.1.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5"
|
|
|
|
dependencies = [
|
|
|
|
"byte-tools",
|
2022-12-06 14:47:02 +01:00
|
|
|
]
|
|
|
|
|
2023-07-29 21:14:44 +02:00
|
|
|
[[package]]
|
|
|
|
name = "bstr"
|
|
|
|
version = "1.6.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "6798148dccfbff0fae41c7574d2fa8f1ef3492fba0face179de5d8d447d67b05"
|
|
|
|
dependencies = [
|
|
|
|
"memchr",
|
|
|
|
"regex-automata",
|
|
|
|
"serde",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "bumpalo"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "3.12.1"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "9b1ce199063694f33ffb7dd4e0ee620741495c32833cde5aa08f02a0bf96f0c8"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
fix(tvix/cli): handle SRI hashes in outputHash
Instead of being called with `md5`, `sha1`, `sha256` or `sha512`,
`fetchurl.nix` (from corepkgs / `<nix`) can also be called with a `hash`
attribute, being an SRI hash.
In that case, `builtin.derivation` is called with `outputHashAlgo` being
an empty string, and `outputHash` being an SRI hash string.
In other cases, an SRI hash is passed as outputHash, but outputHashAlgo
is set too.
Nix does modify these values in (single, fixed) output specification it
serializes to ATerm, but keeps it unharmed in `env`.
Move this into a construct_output_hash helper function, that can be
tested better in isolation.
Change-Id: Id9d716a119664c44ea7747540399966752e20187
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7933
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
2023-01-26 14:18:12 +01:00
|
|
|
[[package]]
|
|
|
|
name = "byte-tools"
|
|
|
|
version = "0.3.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7"
|
|
|
|
|
2022-09-17 19:52:02 +02:00
|
|
|
[[package]]
|
|
|
|
name = "byteorder"
|
|
|
|
version = "1.4.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
|
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "bytes"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "1.4.0"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
|
2022-12-06 14:47:02 +01:00
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "cast"
|
|
|
|
version = "0.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "cc"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "1.0.79"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
|
2022-12-29 21:39:28 +01:00
|
|
|
dependencies = [
|
|
|
|
"jobserver",
|
|
|
|
]
|
2022-08-11 22:52:55 +02:00
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "cfg-if"
|
|
|
|
version = "1.0.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
|
|
|
|
|
|
|
[[package]]
|
2022-12-16 12:54:22 +01:00
|
|
|
name = "ciborium"
|
|
|
|
version = "0.2.0"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-12-16 12:54:22 +01:00
|
|
|
checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
2022-12-16 12:54:22 +01:00
|
|
|
"ciborium-io",
|
|
|
|
"ciborium-ll",
|
|
|
|
"serde",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "ciborium-io"
|
|
|
|
version = "0.2.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "ciborium-ll"
|
|
|
|
version = "0.2.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
|
|
|
|
dependencies = [
|
|
|
|
"ciborium-io",
|
|
|
|
"half",
|
2022-08-25 17:04:07 +02:00
|
|
|
]
|
|
|
|
|
2022-09-18 21:59:59 +02:00
|
|
|
[[package]]
|
|
|
|
name = "clap"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "3.2.25"
|
2022-09-18 21:59:59 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123"
|
2022-09-18 21:59:59 +02:00
|
|
|
dependencies = [
|
|
|
|
"bitflags",
|
2022-12-16 12:54:22 +01:00
|
|
|
"clap_lex 0.2.4",
|
2022-09-18 21:59:59 +02:00
|
|
|
"indexmap",
|
2022-12-16 12:54:22 +01:00
|
|
|
"textwrap",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "clap"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "4.2.7"
|
2022-12-16 12:54:22 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "34d21f9bf1b425d2968943631ec91202fe5e837264063503708b83013f8fc938"
|
2022-12-16 12:54:22 +01:00
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"clap_builder",
|
2022-12-16 12:54:22 +01:00
|
|
|
"clap_derive",
|
2022-09-18 21:59:59 +02:00
|
|
|
"once_cell",
|
2023-05-01 16:29:20 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "clap_builder"
|
|
|
|
version = "4.2.7"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "914c8c79fb560f238ef6429439a30023c862f7a28e688c58f7203f12b29970bd"
|
|
|
|
dependencies = [
|
|
|
|
"anstream",
|
|
|
|
"anstyle",
|
|
|
|
"bitflags",
|
|
|
|
"clap_lex 0.4.1",
|
2022-09-18 21:59:59 +02:00
|
|
|
"strsim",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "clap_derive"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "4.2.0"
|
2022-09-18 21:59:59 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "3f9644cd56d6b87dbe899ef8b053e331c0637664e9e21a33dfcdc36093f5c5c4"
|
2022-09-18 21:59:59 +02:00
|
|
|
dependencies = [
|
|
|
|
"heck",
|
2023-05-01 16:29:20 +02:00
|
|
|
"proc-macro2 1.0.56",
|
2023-03-16 13:31:28 +01:00
|
|
|
"quote 1.0.26",
|
2023-05-01 16:29:20 +02:00
|
|
|
"syn 2.0.15",
|
2022-09-18 21:59:59 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "clap_lex"
|
|
|
|
version = "0.2.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
|
|
|
|
dependencies = [
|
|
|
|
"os_str_bytes",
|
|
|
|
]
|
|
|
|
|
2022-12-16 12:54:22 +01:00
|
|
|
[[package]]
|
|
|
|
name = "clap_lex"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.4.1"
|
2022-12-16 12:54:22 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "8a2dd5a6fe8c6e3502f568a6353e5273bbb15193ad9a89e457b9970798efbea1"
|
2022-12-16 12:54:22 +01:00
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "clipboard-win"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "4.5.0"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "7191c27c2357d9b7ef96baac1773290d4ca63b24205b82a3fd8a0637afcf0362"
|
2022-08-11 22:52:55 +02:00
|
|
|
dependencies = [
|
|
|
|
"error-code",
|
|
|
|
"str-buf",
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
2022-09-01 14:52:48 +02:00
|
|
|
[[package]]
|
|
|
|
name = "codemap"
|
|
|
|
version = "0.1.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b9e769b5c8c8283982a987c6e948e540254f1058d5a74b8794914d4ef5fc2a24"
|
|
|
|
|
2022-09-11 23:34:25 +02:00
|
|
|
[[package]]
|
|
|
|
name = "codemap-diagnostic"
|
|
|
|
version = "0.1.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "4ba0e6be8e2774e750f9e90625b490249715bece38a12f9d09e82477caba5028"
|
|
|
|
dependencies = [
|
|
|
|
"atty",
|
|
|
|
"codemap",
|
|
|
|
"termcolor",
|
|
|
|
]
|
|
|
|
|
2023-05-01 16:29:20 +02:00
|
|
|
[[package]]
|
|
|
|
name = "colorchoice"
|
|
|
|
version = "1.0.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
|
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "constant_time_eq"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "0.2.5"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "13418e745008f7349ec7e449155f419a61b92b58a99cc3616942b926825ec76b"
|
2022-12-06 14:47:02 +01:00
|
|
|
|
2023-02-13 16:47:22 +01:00
|
|
|
[[package]]
|
|
|
|
name = "count-write"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ced507ab50aa0123e2c54db8b5f44fdfee04b1c93744d69e924307945fe57a85"
|
|
|
|
|
2022-08-04 15:44:49 +02:00
|
|
|
[[package]]
|
|
|
|
name = "countme"
|
2022-08-16 22:43:45 +02:00
|
|
|
version = "3.0.1"
|
2022-08-04 15:44:49 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-08-16 22:43:45 +02:00
|
|
|
checksum = "7704b5fdd17b18ae31c4c1da5a2e0305a2bf17b5249300a9ee9ed7b72114c636"
|
2022-08-04 15:44:49 +02:00
|
|
|
|
2023-01-02 16:09:18 +01:00
|
|
|
[[package]]
|
|
|
|
name = "cpufeatures"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.2.7"
|
2023-01-02 16:09:18 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "3e4c1eaa2012c47becbbad2ab175484c2a84d1185b566fb2cc5b8707343dfe58"
|
2023-01-02 16:09:18 +01:00
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2022-12-29 21:39:28 +01:00
|
|
|
[[package]]
|
|
|
|
name = "crc32fast"
|
|
|
|
version = "1.3.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
|
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "criterion"
|
2022-12-16 12:54:22 +01:00
|
|
|
version = "0.4.0"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-12-16 12:54:22 +01:00
|
|
|
checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
2022-12-16 12:54:22 +01:00
|
|
|
"anes",
|
2022-08-25 17:04:07 +02:00
|
|
|
"atty",
|
|
|
|
"cast",
|
2022-12-16 12:54:22 +01:00
|
|
|
"ciborium",
|
2023-05-01 16:29:20 +02:00
|
|
|
"clap 3.2.25",
|
2022-08-25 17:04:07 +02:00
|
|
|
"criterion-plot",
|
|
|
|
"itertools",
|
|
|
|
"lazy_static",
|
|
|
|
"num-traits",
|
|
|
|
"oorandom",
|
|
|
|
"plotters",
|
|
|
|
"rayon",
|
|
|
|
"regex",
|
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
|
|
|
"serde_json",
|
|
|
|
"tinytemplate",
|
|
|
|
"walkdir",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "criterion-plot"
|
2022-12-16 12:54:22 +01:00
|
|
|
version = "0.5.0"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-12-16 12:54:22 +01:00
|
|
|
checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"cast",
|
|
|
|
"itertools",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "crossbeam-channel"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.5.8"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"crossbeam-utils",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "crossbeam-deque"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "0.8.3"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"crossbeam-epoch",
|
|
|
|
"crossbeam-utils",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "crossbeam-epoch"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "0.9.14"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"autocfg",
|
|
|
|
"cfg-if",
|
|
|
|
"crossbeam-utils",
|
2023-03-26 22:14:32 +02:00
|
|
|
"memoffset",
|
2022-08-25 17:04:07 +02:00
|
|
|
"scopeguard",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "crossbeam-utils"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "0.8.15"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
]
|
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "crypto-common"
|
|
|
|
version = "0.1.6"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
|
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"generic-array 0.14.7",
|
2022-12-06 14:47:02 +01:00
|
|
|
"typenum",
|
|
|
|
]
|
|
|
|
|
2022-08-16 14:33:50 +02:00
|
|
|
[[package]]
|
|
|
|
name = "ctor"
|
2022-11-23 04:42:06 +01:00
|
|
|
version = "0.1.26"
|
2022-08-16 14:33:50 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-11-23 04:42:06 +01:00
|
|
|
checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096"
|
2022-08-16 14:33:50 +02:00
|
|
|
dependencies = [
|
2023-03-16 13:31:28 +01:00
|
|
|
"quote 1.0.26",
|
|
|
|
"syn 1.0.109",
|
2022-08-16 14:33:50 +02:00
|
|
|
]
|
|
|
|
|
2022-12-29 22:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "data-encoding"
|
|
|
|
version = "2.3.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "23d8666cb01533c39dde32bcbab8e227b4ed6679b2c925eba05feabea39508fb"
|
|
|
|
|
2022-08-16 14:33:50 +02:00
|
|
|
[[package]]
|
|
|
|
name = "diff"
|
|
|
|
version = "0.1.13"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
|
|
|
|
|
fix(tvix/cli): handle SRI hashes in outputHash
Instead of being called with `md5`, `sha1`, `sha256` or `sha512`,
`fetchurl.nix` (from corepkgs / `<nix`) can also be called with a `hash`
attribute, being an SRI hash.
In that case, `builtin.derivation` is called with `outputHashAlgo` being
an empty string, and `outputHash` being an SRI hash string.
In other cases, an SRI hash is passed as outputHash, but outputHashAlgo
is set too.
Nix does modify these values in (single, fixed) output specification it
serializes to ATerm, but keeps it unharmed in `env`.
Move this into a construct_output_hash helper function, that can be
tested better in isolation.
Change-Id: Id9d716a119664c44ea7747540399966752e20187
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7933
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
2023-01-26 14:18:12 +01:00
|
|
|
[[package]]
|
|
|
|
name = "digest"
|
|
|
|
version = "0.8.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5"
|
|
|
|
dependencies = [
|
|
|
|
"generic-array 0.12.4",
|
|
|
|
]
|
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "digest"
|
|
|
|
version = "0.10.6"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f"
|
|
|
|
dependencies = [
|
2023-03-16 13:31:28 +01:00
|
|
|
"block-buffer 0.10.4",
|
2022-12-06 14:47:02 +01:00
|
|
|
"crypto-common",
|
|
|
|
"subtle",
|
|
|
|
]
|
|
|
|
|
2022-08-11 23:26:05 +02:00
|
|
|
[[package]]
|
|
|
|
name = "dirs"
|
|
|
|
version = "4.0.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059"
|
|
|
|
dependencies = [
|
|
|
|
"dirs-sys",
|
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "dirs-next"
|
|
|
|
version = "2.0.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1"
|
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"dirs-sys-next",
|
|
|
|
]
|
|
|
|
|
2022-08-11 23:26:05 +02:00
|
|
|
[[package]]
|
|
|
|
name = "dirs-sys"
|
|
|
|
version = "0.3.7"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"redox_users",
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "dirs-sys-next"
|
|
|
|
version = "0.1.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"redox_users",
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "either"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "1.8.1"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "endian-type"
|
|
|
|
version = "0.1.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d"
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "errno"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.3.1"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a"
|
2022-08-11 22:52:55 +02:00
|
|
|
dependencies = [
|
|
|
|
"errno-dragonfly",
|
|
|
|
"libc",
|
2023-05-01 16:29:20 +02:00
|
|
|
"windows-sys 0.48.0",
|
2022-08-11 22:52:55 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "errno-dragonfly"
|
|
|
|
version = "0.1.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
|
|
|
|
dependencies = [
|
|
|
|
"cc",
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "error-code"
|
|
|
|
version = "2.3.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "64f18991e7bf11e7ffee451b5318b5c1a73c52d0d0ada6e5a3017c8c1ced6a21"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"str-buf",
|
|
|
|
]
|
|
|
|
|
fix(tvix/cli): handle SRI hashes in outputHash
Instead of being called with `md5`, `sha1`, `sha256` or `sha512`,
`fetchurl.nix` (from corepkgs / `<nix`) can also be called with a `hash`
attribute, being an SRI hash.
In that case, `builtin.derivation` is called with `outputHashAlgo` being
an empty string, and `outputHash` being an SRI hash string.
In other cases, an SRI hash is passed as outputHash, but outputHashAlgo
is set too.
Nix does modify these values in (single, fixed) output specification it
serializes to ATerm, but keeps it unharmed in `env`.
Move this into a construct_output_hash helper function, that can be
tested better in isolation.
Change-Id: Id9d716a119664c44ea7747540399966752e20187
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7933
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
2023-01-26 14:18:12 +01:00
|
|
|
[[package]]
|
|
|
|
name = "fake-simd"
|
|
|
|
version = "0.1.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed"
|
|
|
|
|
2022-09-17 19:52:02 +02:00
|
|
|
[[package]]
|
|
|
|
name = "fastrand"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "1.9.0"
|
2022-09-17 19:52:02 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
|
2022-09-17 19:52:02 +02:00
|
|
|
dependencies = [
|
|
|
|
"instant",
|
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "fd-lock"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "3.0.12"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "39ae6b3d9530211fb3b12a95374b8b0823be812f53d09e18c5675c0146b09642"
|
2022-08-11 22:52:55 +02:00
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"rustix",
|
2023-05-01 16:29:20 +02:00
|
|
|
"windows-sys 0.48.0",
|
2022-08-11 22:52:55 +02:00
|
|
|
]
|
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "fixedbitset"
|
|
|
|
version = "0.4.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "fnv"
|
|
|
|
version = "1.0.7"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
|
|
|
|
|
2023-06-09 18:07:00 +02:00
|
|
|
[[package]]
|
|
|
|
name = "form_urlencoded"
|
|
|
|
version = "1.2.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652"
|
|
|
|
dependencies = [
|
|
|
|
"percent-encoding",
|
|
|
|
]
|
|
|
|
|
2022-12-29 21:39:28 +01:00
|
|
|
[[package]]
|
|
|
|
name = "fs2"
|
|
|
|
version = "0.4.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
2022-09-03 17:42:27 +02:00
|
|
|
[[package]]
|
|
|
|
name = "fuchsia-cprng"
|
|
|
|
version = "0.1.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
|
|
|
|
|
2023-05-28 09:22:08 +02:00
|
|
|
[[package]]
|
|
|
|
name = "fuser"
|
|
|
|
version = "0.12.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "5910691a0ececcc6eba8bb14029025c2d123e96a53db1533f6a4602861a5aaf7"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"log",
|
|
|
|
"memchr",
|
|
|
|
"page_size",
|
|
|
|
"pkg-config",
|
|
|
|
"smallvec",
|
|
|
|
"users",
|
|
|
|
"zerocopy",
|
|
|
|
]
|
|
|
|
|
2023-01-18 20:46:33 +01:00
|
|
|
[[package]]
|
|
|
|
name = "futures"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.3.28"
|
2023-01-18 20:46:33 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40"
|
2023-01-18 20:46:33 +01:00
|
|
|
dependencies = [
|
|
|
|
"futures-channel",
|
|
|
|
"futures-core",
|
|
|
|
"futures-executor",
|
|
|
|
"futures-io",
|
|
|
|
"futures-sink",
|
|
|
|
"futures-task",
|
|
|
|
"futures-util",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "futures-channel"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.3.28"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
|
|
|
"futures-core",
|
2023-01-18 20:46:33 +01:00
|
|
|
"futures-sink",
|
2022-11-13 00:23:14 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "futures-core"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.3.28"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c"
|
2022-11-13 00:23:14 +01:00
|
|
|
|
2023-01-18 20:46:33 +01:00
|
|
|
[[package]]
|
|
|
|
name = "futures-executor"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.3.28"
|
2023-01-18 20:46:33 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0"
|
2023-01-18 20:46:33 +01:00
|
|
|
dependencies = [
|
|
|
|
"futures-core",
|
|
|
|
"futures-task",
|
|
|
|
"futures-util",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "futures-io"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.3.28"
|
2023-01-18 20:46:33 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964"
|
2023-01-18 20:46:33 +01:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "futures-macro"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.3.28"
|
2023-01-18 20:46:33 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
|
2023-01-18 20:46:33 +01:00
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"proc-macro2 1.0.56",
|
2023-03-16 13:31:28 +01:00
|
|
|
"quote 1.0.26",
|
2023-05-01 16:29:20 +02:00
|
|
|
"syn 2.0.15",
|
2023-01-18 20:46:33 +01:00
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "futures-sink"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.3.28"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e"
|
2022-11-13 00:23:14 +01:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "futures-task"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.3.28"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65"
|
2022-11-13 00:23:14 +01:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "futures-util"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.3.28"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
2023-01-18 20:46:33 +01:00
|
|
|
"futures-channel",
|
2022-11-13 00:23:14 +01:00
|
|
|
"futures-core",
|
2023-01-18 20:46:33 +01:00
|
|
|
"futures-io",
|
|
|
|
"futures-macro",
|
|
|
|
"futures-sink",
|
2022-11-13 00:23:14 +01:00
|
|
|
"futures-task",
|
2023-01-18 20:46:33 +01:00
|
|
|
"memchr",
|
2022-11-13 00:23:14 +01:00
|
|
|
"pin-project-lite",
|
|
|
|
"pin-utils",
|
2023-01-18 20:46:33 +01:00
|
|
|
"slab",
|
2022-11-13 00:23:14 +01:00
|
|
|
]
|
|
|
|
|
2022-12-29 21:39:28 +01:00
|
|
|
[[package]]
|
|
|
|
name = "fxhash"
|
|
|
|
version = "0.2.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c"
|
|
|
|
dependencies = [
|
|
|
|
"byteorder",
|
|
|
|
]
|
|
|
|
|
2023-02-26 17:00:25 +01:00
|
|
|
[[package]]
|
|
|
|
name = "genawaiter"
|
|
|
|
version = "0.99.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "c86bd0361bcbde39b13475e6e36cb24c329964aa2611be285289d1e4b751c1a0"
|
|
|
|
dependencies = [
|
|
|
|
"genawaiter-macro",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "genawaiter-macro"
|
|
|
|
version = "0.99.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "0b32dfe1fdfc0bbde1f22a5da25355514b5e450c33a6af6770884c8750aedfbc"
|
|
|
|
|
fix(tvix/cli): handle SRI hashes in outputHash
Instead of being called with `md5`, `sha1`, `sha256` or `sha512`,
`fetchurl.nix` (from corepkgs / `<nix`) can also be called with a `hash`
attribute, being an SRI hash.
In that case, `builtin.derivation` is called with `outputHashAlgo` being
an empty string, and `outputHash` being an SRI hash string.
In other cases, an SRI hash is passed as outputHash, but outputHashAlgo
is set too.
Nix does modify these values in (single, fixed) output specification it
serializes to ATerm, but keeps it unharmed in `env`.
Move this into a construct_output_hash helper function, that can be
tested better in isolation.
Change-Id: Id9d716a119664c44ea7747540399966752e20187
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7933
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
2023-01-26 14:18:12 +01:00
|
|
|
[[package]]
|
|
|
|
name = "generic-array"
|
|
|
|
version = "0.12.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd"
|
|
|
|
dependencies = [
|
|
|
|
"typenum",
|
|
|
|
]
|
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "generic-array"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.14.7"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
|
2022-12-06 14:47:02 +01:00
|
|
|
dependencies = [
|
|
|
|
"typenum",
|
|
|
|
"version_check",
|
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "getrandom"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.2.9"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4"
|
2022-08-11 22:52:55 +02:00
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"libc",
|
|
|
|
"wasi",
|
|
|
|
]
|
|
|
|
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
[[package]]
|
|
|
|
name = "gimli"
|
|
|
|
version = "0.28.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
|
|
|
|
|
2022-08-10 17:52:42 +02:00
|
|
|
[[package]]
|
|
|
|
name = "glob"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "0.3.1"
|
2022-08-10 17:52:42 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
|
2022-08-10 17:52:42 +02:00
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "h2"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.3.18"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "17f8a914c2987b688368b5138aa05321db91f4090cf26118185672ad588bce21"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
|
|
|
"fnv",
|
|
|
|
"futures-core",
|
|
|
|
"futures-sink",
|
|
|
|
"futures-util",
|
|
|
|
"http",
|
|
|
|
"indexmap",
|
|
|
|
"slab",
|
|
|
|
"tokio",
|
|
|
|
"tokio-util",
|
|
|
|
"tracing",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "half"
|
|
|
|
version = "1.8.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
|
|
|
|
|
2022-08-04 15:44:49 +02:00
|
|
|
[[package]]
|
|
|
|
name = "hashbrown"
|
2022-08-16 22:43:45 +02:00
|
|
|
version = "0.12.3"
|
2022-08-04 15:44:49 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-08-16 22:43:45 +02:00
|
|
|
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
|
2022-08-04 15:44:49 +02:00
|
|
|
|
2022-09-18 21:59:59 +02:00
|
|
|
[[package]]
|
|
|
|
name = "heck"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "0.4.1"
|
2022-09-18 21:59:59 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
|
2022-09-18 21:59:59 +02:00
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "hermit-abi"
|
|
|
|
version = "0.1.19"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2022-12-16 12:54:22 +01:00
|
|
|
[[package]]
|
|
|
|
name = "hermit-abi"
|
|
|
|
version = "0.2.6"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2023-02-04 10:05:13 +01:00
|
|
|
[[package]]
|
|
|
|
name = "hermit-abi"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "0.3.1"
|
2023-02-04 10:05:13 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286"
|
2023-02-04 10:05:13 +01:00
|
|
|
|
fix(tvix/cli): handle SRI hashes in outputHash
Instead of being called with `md5`, `sha1`, `sha256` or `sha512`,
`fetchurl.nix` (from corepkgs / `<nix`) can also be called with a `hash`
attribute, being an SRI hash.
In that case, `builtin.derivation` is called with `outputHashAlgo` being
an empty string, and `outputHash` being an SRI hash string.
In other cases, an SRI hash is passed as outputHash, but outputHashAlgo
is set too.
Nix does modify these values in (single, fixed) output specification it
serializes to ATerm, but keeps it unharmed in `env`.
Move this into a construct_output_hash helper function, that can be
tested better in isolation.
Change-Id: Id9d716a119664c44ea7747540399966752e20187
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7933
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
2023-01-26 14:18:12 +01:00
|
|
|
[[package]]
|
|
|
|
name = "hex"
|
|
|
|
version = "0.3.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77"
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "http"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "0.2.9"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
|
|
|
"fnv",
|
|
|
|
"itoa",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "http-body"
|
|
|
|
version = "0.4.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1"
|
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
|
|
|
"http",
|
|
|
|
"pin-project-lite",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "httparse"
|
|
|
|
version = "1.8.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "httpdate"
|
|
|
|
version = "1.0.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "hyper"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.14.26"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "ab302d72a6f11a3b910431ff93aae7e773078c769f0a3ef15fb9ec692ed147d4"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
|
|
|
"futures-channel",
|
|
|
|
"futures-core",
|
|
|
|
"futures-util",
|
|
|
|
"h2",
|
|
|
|
"http",
|
|
|
|
"http-body",
|
|
|
|
"httparse",
|
|
|
|
"httpdate",
|
|
|
|
"itoa",
|
|
|
|
"pin-project-lite",
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
"socket2 0.4.9",
|
2022-11-13 00:23:14 +01:00
|
|
|
"tokio",
|
|
|
|
"tower-service",
|
|
|
|
"tracing",
|
|
|
|
"want",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "hyper-timeout"
|
|
|
|
version = "0.4.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1"
|
|
|
|
dependencies = [
|
|
|
|
"hyper",
|
|
|
|
"pin-project-lite",
|
|
|
|
"tokio",
|
|
|
|
"tokio-io-timeout",
|
|
|
|
]
|
|
|
|
|
2023-06-09 18:07:00 +02:00
|
|
|
[[package]]
|
|
|
|
name = "idna"
|
|
|
|
version = "0.4.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c"
|
|
|
|
dependencies = [
|
|
|
|
"unicode-bidi",
|
|
|
|
"unicode-normalization",
|
|
|
|
]
|
|
|
|
|
2022-12-29 12:44:09 +01:00
|
|
|
[[package]]
|
2022-12-29 15:08:14 +01:00
|
|
|
name = "imbl"
|
|
|
|
version = "2.0.0"
|
2022-12-29 12:44:09 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-12-29 15:08:14 +01:00
|
|
|
checksum = "c2806b69cd9f4664844027b64465eacb444c67c1db9c778e341adff0c25cdb0d"
|
2022-12-29 12:44:09 +01:00
|
|
|
dependencies = [
|
|
|
|
"bitmaps",
|
2022-12-29 15:08:14 +01:00
|
|
|
"imbl-sized-chunks",
|
2023-01-07 13:23:32 +01:00
|
|
|
"proptest",
|
2022-12-29 12:44:09 +01:00
|
|
|
"rand_core 0.6.4",
|
|
|
|
"rand_xoshiro",
|
2022-12-24 18:18:26 +01:00
|
|
|
"serde",
|
2022-12-29 12:44:09 +01:00
|
|
|
"version_check",
|
|
|
|
]
|
|
|
|
|
2022-12-29 15:08:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "imbl-sized-chunks"
|
|
|
|
version = "0.1.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e6957ea0b2541c5ca561d3ef4538044af79f8a05a1eb3a3b148936aaceaa1076"
|
|
|
|
dependencies = [
|
|
|
|
"bitmaps",
|
|
|
|
]
|
|
|
|
|
2022-09-18 21:59:59 +02:00
|
|
|
[[package]]
|
|
|
|
name = "indexmap"
|
2023-03-26 22:14:32 +02:00
|
|
|
version = "1.9.3"
|
2022-09-18 21:59:59 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-26 22:14:32 +02:00
|
|
|
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
|
2022-09-18 21:59:59 +02:00
|
|
|
dependencies = [
|
|
|
|
"autocfg",
|
|
|
|
"hashbrown",
|
|
|
|
]
|
|
|
|
|
2022-09-17 19:52:02 +02:00
|
|
|
[[package]]
|
|
|
|
name = "instant"
|
|
|
|
version = "0.1.12"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
|
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "io-lifetimes"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "1.0.10"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220"
|
2022-11-23 04:42:06 +01:00
|
|
|
dependencies = [
|
2023-03-26 22:14:32 +02:00
|
|
|
"hermit-abi 0.3.1",
|
2022-11-23 04:42:06 +01:00
|
|
|
"libc",
|
2023-05-01 16:29:20 +02:00
|
|
|
"windows-sys 0.48.0",
|
2022-11-23 04:42:06 +01:00
|
|
|
]
|
2022-08-11 22:52:55 +02:00
|
|
|
|
2022-12-16 12:54:22 +01:00
|
|
|
[[package]]
|
|
|
|
name = "is-terminal"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.4.7"
|
2022-12-16 12:54:22 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f"
|
2022-12-16 12:54:22 +01:00
|
|
|
dependencies = [
|
2023-03-16 13:31:28 +01:00
|
|
|
"hermit-abi 0.3.1",
|
2022-12-16 12:54:22 +01:00
|
|
|
"io-lifetimes",
|
|
|
|
"rustix",
|
2023-05-01 16:29:20 +02:00
|
|
|
"windows-sys 0.48.0",
|
2022-12-16 12:54:22 +01:00
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "itertools"
|
2022-11-23 04:42:06 +01:00
|
|
|
version = "0.10.5"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-11-23 04:42:06 +01:00
|
|
|
checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"either",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "itoa"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "1.0.6"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
2022-12-29 21:39:28 +01:00
|
|
|
[[package]]
|
|
|
|
name = "jobserver"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "0.1.26"
|
2022-12-29 21:39:28 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2"
|
2022-12-29 21:39:28 +01:00
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "js-sys"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "0.3.61"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"wasm-bindgen",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "lazy_static"
|
|
|
|
version = "1.4.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
|
|
|
|
feat(tvix/eval): use lexical-core to format float
Apparently our naive implementation of float formatting, which simply
used {:.5}, and trimmed trailing "0" strings not sufficient.
It wrongly trimmed numbers with zeroes but no decimal point, like
`10000` got trimmed to `1`.
Nix uses `std::to_string` on the double, which according to
https://en.cppreference.com/w/cpp/string/basic_string/to_string
is equivalent to `std::sprintf(buf, "%f", value)`.
https://en.cppreference.com/w/cpp/io/c/fprintf mentions this is treated
like this:
> Precision specifies the exact number of digits to appear after
> the decimal point character. The default precision is 6. In the
> alternative implementation decimal point character is written even if
> no digits follow it. For infinity and not-a-number conversion style
> see notes.
This doesn't seem to be the case though, and Nix uses scientific
notation in some cases.
There's a whole bunch of strategies to determine which is a more compact
notation, and which notation should be used for a given number.
https://github.com/rust-lang/rust/issues/24556 provides some pointers
into various rabbit holes for those interested.
This gist seems to be that currently a different formatting is not
exposed in rust directly, at least not for public consumption.
There is the
[lexical-core](https://github.com/Alexhuszagh/rust-lexical) crate
though, which provides a way to format floats with various strategies
and formats.
Change our implementation of `TotalDisplay` for the `Value::Float` case
to use that. We still need to do some post-processing, because Nix
always adds the sign in scientific notation (and there's no way to
configure lexical-core to do that), and lexical-core in some cases keeps
the trailing zeros.
Even with all that in place, there as a difference in `eval-okay-
fromjson.nix` (from tvix-tests), which I couldn't get to work. I updated
the fixture to a less problematic number.
With this, the testsuite passes again, and does for the upcoming CL
introducing builtins.fromTOML, and enabling the nix testsuite bits for
it, too.
Change-Id: Ie6fba5619e1d9fd7ce669a51594658b029057acc
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7922
Tested-by: BuildkiteCI
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: tazjin <tazjin@tvl.su>
2023-01-24 19:27:20 +01:00
|
|
|
[[package]]
|
|
|
|
name = "lexical-core"
|
|
|
|
version = "0.8.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46"
|
|
|
|
dependencies = [
|
|
|
|
"lexical-parse-float",
|
|
|
|
"lexical-parse-integer",
|
|
|
|
"lexical-util",
|
|
|
|
"lexical-write-float",
|
|
|
|
"lexical-write-integer",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "lexical-parse-float"
|
|
|
|
version = "0.8.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f"
|
|
|
|
dependencies = [
|
|
|
|
"lexical-parse-integer",
|
|
|
|
"lexical-util",
|
|
|
|
"static_assertions",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "lexical-parse-integer"
|
|
|
|
version = "0.8.6"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9"
|
|
|
|
dependencies = [
|
|
|
|
"lexical-util",
|
|
|
|
"static_assertions",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "lexical-util"
|
|
|
|
version = "0.8.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc"
|
|
|
|
dependencies = [
|
|
|
|
"static_assertions",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "lexical-write-float"
|
|
|
|
version = "0.8.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862"
|
|
|
|
dependencies = [
|
|
|
|
"lexical-util",
|
|
|
|
"lexical-write-integer",
|
|
|
|
"static_assertions",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "lexical-write-integer"
|
|
|
|
version = "0.8.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446"
|
|
|
|
dependencies = [
|
|
|
|
"lexical-util",
|
|
|
|
"static_assertions",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "libc"
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
version = "0.2.148"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b"
|
2023-03-16 13:31:28 +01:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "libm"
|
|
|
|
version = "0.2.6"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "linux-raw-sys"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.3.7"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "ece97ea872ece730aed82664c424eb4c8291e1ff2480247ccf7409044bc6479f"
|
2022-08-11 22:52:55 +02:00
|
|
|
|
2022-12-29 21:39:28 +01:00
|
|
|
[[package]]
|
|
|
|
name = "lock_api"
|
|
|
|
version = "0.4.9"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
|
|
|
|
dependencies = [
|
|
|
|
"autocfg",
|
|
|
|
"scopeguard",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "log"
|
|
|
|
version = "0.4.17"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
|
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "matchit"
|
|
|
|
version = "0.7.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40"
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "memchr"
|
|
|
|
version = "2.5.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
|
|
|
|
2022-11-23 04:42:06 +01:00
|
|
|
[[package]]
|
|
|
|
name = "memoffset"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "0.8.0"
|
2022-11-23 04:42:06 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
|
2022-11-23 04:42:06 +01:00
|
|
|
dependencies = [
|
|
|
|
"autocfg",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "mime"
|
2023-03-26 22:14:32 +02:00
|
|
|
version = "0.3.17"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-26 22:14:32 +02:00
|
|
|
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
|
2022-11-13 00:23:14 +01:00
|
|
|
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
[[package]]
|
|
|
|
name = "miniz_oxide"
|
|
|
|
version = "0.7.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
|
|
|
|
dependencies = [
|
|
|
|
"adler",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "mio"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "0.8.6"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"log",
|
|
|
|
"wasi",
|
2023-03-16 13:31:28 +01:00
|
|
|
"windows-sys 0.45.0",
|
2022-11-13 00:23:14 +01:00
|
|
|
]
|
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "multimap"
|
|
|
|
version = "0.8.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a"
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "nibble_vec"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43"
|
|
|
|
dependencies = [
|
|
|
|
"smallvec",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "nix"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "0.25.1"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4"
|
2022-08-11 22:52:55 +02:00
|
|
|
dependencies = [
|
2023-02-01 18:54:30 +01:00
|
|
|
"autocfg",
|
2022-08-11 22:52:55 +02:00
|
|
|
"bitflags",
|
|
|
|
"cfg-if",
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "nix-cli"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"clap 4.2.7",
|
2022-12-06 14:47:02 +01:00
|
|
|
"tempfile",
|
|
|
|
]
|
|
|
|
|
2023-01-31 12:18:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "nix-compat"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"anyhow",
|
2023-07-29 21:14:44 +02:00
|
|
|
"bstr",
|
2023-01-31 12:18:03 +01:00
|
|
|
"data-encoding",
|
|
|
|
"glob",
|
2023-01-31 14:45:42 +01:00
|
|
|
"serde",
|
|
|
|
"serde_json",
|
2023-01-31 12:18:03 +01:00
|
|
|
"sha2 0.10.6",
|
|
|
|
"test-case",
|
2023-01-31 14:45:42 +01:00
|
|
|
"test-generator",
|
2023-01-31 12:18:03 +01:00
|
|
|
"thiserror",
|
|
|
|
]
|
|
|
|
|
2023-01-24 15:54:29 +01:00
|
|
|
[[package]]
|
|
|
|
name = "nom8"
|
|
|
|
version = "0.2.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ae01545c9c7fc4486ab7debaf2aad7003ac19431791868fb2e8066df97fad2f8"
|
|
|
|
dependencies = [
|
|
|
|
"memchr",
|
|
|
|
]
|
|
|
|
|
2022-12-28 17:17:53 +01:00
|
|
|
[[package]]
|
|
|
|
name = "nu-ansi-term"
|
|
|
|
version = "0.46.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
|
|
|
|
dependencies = [
|
|
|
|
"overload",
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
2022-08-04 15:44:49 +02:00
|
|
|
[[package]]
|
|
|
|
name = "num-traits"
|
|
|
|
version = "0.2.15"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
|
|
|
|
dependencies = [
|
|
|
|
"autocfg",
|
2023-03-16 13:31:28 +01:00
|
|
|
"libm",
|
2022-08-04 15:44:49 +02:00
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "num_cpus"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "1.15.0"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
2023-02-01 18:54:30 +01:00
|
|
|
"hermit-abi 0.2.6",
|
2022-08-25 17:04:07 +02:00
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
[[package]]
|
|
|
|
name = "object"
|
|
|
|
version = "0.32.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0"
|
|
|
|
dependencies = [
|
|
|
|
"memchr",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "once_cell"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "1.17.1"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "oorandom"
|
|
|
|
version = "11.1.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
|
|
|
|
|
fix(tvix/cli): handle SRI hashes in outputHash
Instead of being called with `md5`, `sha1`, `sha256` or `sha512`,
`fetchurl.nix` (from corepkgs / `<nix`) can also be called with a `hash`
attribute, being an SRI hash.
In that case, `builtin.derivation` is called with `outputHashAlgo` being
an empty string, and `outputHash` being an SRI hash string.
In other cases, an SRI hash is passed as outputHash, but outputHashAlgo
is set too.
Nix does modify these values in (single, fixed) output specification it
serializes to ATerm, but keeps it unharmed in `env`.
Move this into a construct_output_hash helper function, that can be
tested better in isolation.
Change-Id: Id9d716a119664c44ea7747540399966752e20187
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7933
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
2023-01-26 14:18:12 +01:00
|
|
|
[[package]]
|
|
|
|
name = "opaque-debug"
|
|
|
|
version = "0.2.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c"
|
|
|
|
|
2022-09-18 21:59:59 +02:00
|
|
|
[[package]]
|
|
|
|
name = "os_str_bytes"
|
2023-03-26 22:14:32 +02:00
|
|
|
version = "6.5.0"
|
2022-09-18 21:59:59 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-26 22:14:32 +02:00
|
|
|
checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
|
2022-09-18 21:59:59 +02:00
|
|
|
|
2022-08-16 14:33:50 +02:00
|
|
|
[[package]]
|
|
|
|
name = "output_vt100"
|
|
|
|
version = "0.1.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "628223faebab4e3e40667ee0b2336d34a5b960ff60ea743ddfdbcf7770bcfb66"
|
|
|
|
dependencies = [
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
2022-12-28 17:17:53 +01:00
|
|
|
[[package]]
|
|
|
|
name = "overload"
|
|
|
|
version = "0.1.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
|
|
|
|
|
2023-05-28 09:22:08 +02:00
|
|
|
[[package]]
|
|
|
|
name = "page_size"
|
|
|
|
version = "0.4.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "eebde548fbbf1ea81a99b128872779c437752fb99f217c45245e1a61dcd9edcd"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
2022-12-29 21:39:28 +01:00
|
|
|
[[package]]
|
|
|
|
name = "parking_lot"
|
|
|
|
version = "0.11.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
|
|
|
|
dependencies = [
|
|
|
|
"instant",
|
|
|
|
"lock_api",
|
|
|
|
"parking_lot_core",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "parking_lot_core"
|
|
|
|
version = "0.8.6"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc"
|
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"instant",
|
|
|
|
"libc",
|
2023-05-01 16:29:20 +02:00
|
|
|
"redox_syscall 0.2.16",
|
2022-12-29 21:39:28 +01:00
|
|
|
"smallvec",
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
2022-08-12 17:52:48 +02:00
|
|
|
[[package]]
|
|
|
|
name = "path-clean"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ecba01bf2678719532c5e3059e0b5f0811273d94b397088b82e3bd0a78c78fdd"
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "percent-encoding"
|
2023-06-09 18:07:00 +02:00
|
|
|
version = "2.3.0"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-06-09 18:07:00 +02:00
|
|
|
checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94"
|
2022-11-13 00:23:14 +01:00
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "petgraph"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "0.6.3"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4"
|
2022-12-06 14:47:02 +01:00
|
|
|
dependencies = [
|
|
|
|
"fixedbitset",
|
|
|
|
"indexmap",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "pin-project"
|
|
|
|
version = "1.0.12"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc"
|
|
|
|
dependencies = [
|
|
|
|
"pin-project-internal",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "pin-project-internal"
|
|
|
|
version = "1.0.12"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55"
|
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"proc-macro2 1.0.56",
|
2023-03-16 13:31:28 +01:00
|
|
|
"quote 1.0.26",
|
|
|
|
"syn 1.0.109",
|
2022-11-13 00:23:14 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "pin-project-lite"
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
version = "0.2.13"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
|
2022-11-13 00:23:14 +01:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "pin-utils"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
|
|
|
|
|
2023-05-28 09:22:08 +02:00
|
|
|
[[package]]
|
|
|
|
name = "pkg-config"
|
|
|
|
version = "0.3.27"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "plotters"
|
2022-09-03 17:42:27 +02:00
|
|
|
version = "0.3.4"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-09-03 17:42:27 +02:00
|
|
|
checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"num-traits",
|
|
|
|
"plotters-backend",
|
|
|
|
"plotters-svg",
|
|
|
|
"wasm-bindgen",
|
|
|
|
"web-sys",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "plotters-backend"
|
|
|
|
version = "0.3.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "plotters-svg"
|
|
|
|
version = "0.3.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
|
|
|
|
dependencies = [
|
|
|
|
"plotters-backend",
|
|
|
|
]
|
|
|
|
|
2022-09-17 19:52:02 +02:00
|
|
|
[[package]]
|
|
|
|
name = "ppv-lite86"
|
2022-11-23 04:42:06 +01:00
|
|
|
version = "0.2.17"
|
2022-09-17 19:52:02 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-11-23 04:42:06 +01:00
|
|
|
checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
|
2022-09-17 19:52:02 +02:00
|
|
|
|
2022-08-16 14:33:50 +02:00
|
|
|
[[package]]
|
|
|
|
name = "pretty_assertions"
|
|
|
|
version = "1.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "a25e9bcb20aa780fd0bb16b72403a9064d6b3f22f026946029acb941a50af755"
|
|
|
|
dependencies = [
|
|
|
|
"ctor",
|
|
|
|
"diff",
|
|
|
|
"output_vt100",
|
|
|
|
"yansi",
|
|
|
|
]
|
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "prettyplease"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "0.1.25"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86"
|
2022-12-06 14:47:02 +01:00
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"proc-macro2 1.0.56",
|
2023-03-16 13:31:28 +01:00
|
|
|
"syn 1.0.109",
|
2022-12-06 14:47:02 +01:00
|
|
|
]
|
|
|
|
|
2022-09-18 21:59:59 +02:00
|
|
|
[[package]]
|
|
|
|
name = "proc-macro-error"
|
|
|
|
version = "1.0.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
|
|
|
|
dependencies = [
|
2023-03-11 23:39:31 +01:00
|
|
|
"proc-macro-error-attr",
|
2023-05-01 16:29:20 +02:00
|
|
|
"proc-macro2 1.0.56",
|
2023-03-16 13:31:28 +01:00
|
|
|
"quote 1.0.26",
|
|
|
|
"syn 1.0.109",
|
2023-02-26 17:00:25 +01:00
|
|
|
"version_check",
|
|
|
|
]
|
|
|
|
|
2022-09-18 21:59:59 +02:00
|
|
|
[[package]]
|
|
|
|
name = "proc-macro-error-attr"
|
|
|
|
version = "1.0.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
|
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"proc-macro2 1.0.56",
|
2023-03-16 13:31:28 +01:00
|
|
|
"quote 1.0.26",
|
2022-09-18 21:59:59 +02:00
|
|
|
"version_check",
|
|
|
|
]
|
|
|
|
|
2022-08-10 17:52:42 +02:00
|
|
|
[[package]]
|
|
|
|
name = "proc-macro2"
|
|
|
|
version = "0.4.30"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759"
|
|
|
|
dependencies = [
|
|
|
|
"unicode-xid",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "proc-macro2"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "1.0.56"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"unicode-ident",
|
|
|
|
]
|
|
|
|
|
2022-09-17 19:52:02 +02:00
|
|
|
[[package]]
|
|
|
|
name = "proptest"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "1.1.0"
|
2022-09-17 19:52:02 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "29f1b898011ce9595050a68e60f90bad083ff2987a695a42357134c8381fba70"
|
2022-09-17 19:52:02 +02:00
|
|
|
dependencies = [
|
2023-01-07 13:23:32 +01:00
|
|
|
"bit-set",
|
2022-09-17 19:52:02 +02:00
|
|
|
"bitflags",
|
|
|
|
"byteorder",
|
|
|
|
"lazy_static",
|
|
|
|
"num-traits",
|
2023-01-07 13:23:32 +01:00
|
|
|
"quick-error 2.0.1",
|
2022-09-17 19:52:02 +02:00
|
|
|
"rand 0.8.5",
|
|
|
|
"rand_chacha",
|
|
|
|
"rand_xorshift",
|
2023-05-01 16:29:20 +02:00
|
|
|
"regex-syntax 0.6.29",
|
2023-01-07 13:23:32 +01:00
|
|
|
"rusty-fork",
|
2022-09-17 19:52:02 +02:00
|
|
|
"tempfile",
|
2023-03-16 13:31:28 +01:00
|
|
|
"unarray",
|
2022-09-17 19:52:02 +02:00
|
|
|
]
|
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "prost"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.11.9"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd"
|
2022-12-06 14:47:02 +01:00
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
|
|
|
"prost-derive",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "prost-build"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.11.9"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270"
|
2022-12-06 14:47:02 +01:00
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
|
|
|
"heck",
|
|
|
|
"itertools",
|
|
|
|
"lazy_static",
|
|
|
|
"log",
|
|
|
|
"multimap",
|
|
|
|
"petgraph",
|
|
|
|
"prettyplease",
|
|
|
|
"prost",
|
|
|
|
"prost-types",
|
|
|
|
"regex",
|
2023-03-16 13:31:28 +01:00
|
|
|
"syn 1.0.109",
|
2022-12-06 14:47:02 +01:00
|
|
|
"tempfile",
|
|
|
|
"which",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "prost-derive"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.11.9"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4"
|
2022-12-06 14:47:02 +01:00
|
|
|
dependencies = [
|
|
|
|
"anyhow",
|
|
|
|
"itertools",
|
2023-05-01 16:29:20 +02:00
|
|
|
"proc-macro2 1.0.56",
|
2023-03-16 13:31:28 +01:00
|
|
|
"quote 1.0.26",
|
|
|
|
"syn 1.0.109",
|
2022-12-06 14:47:02 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "prost-types"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.11.9"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13"
|
2022-12-06 14:47:02 +01:00
|
|
|
dependencies = [
|
|
|
|
"prost",
|
|
|
|
]
|
|
|
|
|
2023-01-07 13:23:32 +01:00
|
|
|
[[package]]
|
|
|
|
name = "quick-error"
|
|
|
|
version = "1.2.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
|
|
|
|
|
2022-09-17 19:52:02 +02:00
|
|
|
[[package]]
|
|
|
|
name = "quick-error"
|
|
|
|
version = "2.0.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
|
|
|
|
|
2022-08-10 17:52:42 +02:00
|
|
|
[[package]]
|
|
|
|
name = "quote"
|
|
|
|
version = "0.6.13"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1"
|
|
|
|
dependencies = [
|
2022-08-25 17:04:07 +02:00
|
|
|
"proc-macro2 0.4.30",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "quote"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "1.0.26"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"proc-macro2 1.0.56",
|
2022-08-10 17:52:42 +02:00
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "radix_trie"
|
|
|
|
version = "0.2.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd"
|
|
|
|
dependencies = [
|
|
|
|
"endian-type",
|
|
|
|
"nibble_vec",
|
|
|
|
]
|
|
|
|
|
2022-09-03 17:42:27 +02:00
|
|
|
[[package]]
|
|
|
|
name = "rand"
|
|
|
|
version = "0.4.6"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293"
|
|
|
|
dependencies = [
|
|
|
|
"fuchsia-cprng",
|
|
|
|
"libc",
|
|
|
|
"rand_core 0.3.1",
|
|
|
|
"rdrand",
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
2022-09-17 19:52:02 +02:00
|
|
|
[[package]]
|
|
|
|
name = "rand"
|
|
|
|
version = "0.8.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"rand_chacha",
|
|
|
|
"rand_core 0.6.4",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "rand_chacha"
|
|
|
|
version = "0.3.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
|
|
|
|
dependencies = [
|
|
|
|
"ppv-lite86",
|
|
|
|
"rand_core 0.6.4",
|
|
|
|
]
|
|
|
|
|
2022-09-03 17:42:27 +02:00
|
|
|
[[package]]
|
|
|
|
name = "rand_core"
|
|
|
|
version = "0.3.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
|
|
|
|
dependencies = [
|
|
|
|
"rand_core 0.4.2",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "rand_core"
|
|
|
|
version = "0.4.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc"
|
|
|
|
|
2022-09-17 19:52:02 +02:00
|
|
|
[[package]]
|
|
|
|
name = "rand_core"
|
|
|
|
version = "0.6.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
|
|
|
|
dependencies = [
|
|
|
|
"getrandom",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "rand_xorshift"
|
|
|
|
version = "0.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f"
|
|
|
|
dependencies = [
|
|
|
|
"rand_core 0.6.4",
|
|
|
|
]
|
|
|
|
|
2022-12-29 12:44:09 +01:00
|
|
|
[[package]]
|
|
|
|
name = "rand_xoshiro"
|
|
|
|
version = "0.6.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa"
|
|
|
|
dependencies = [
|
|
|
|
"rand_core 0.6.4",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "rayon"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "1.7.0"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"either",
|
|
|
|
"rayon-core",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "rayon-core"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "1.11.0"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"crossbeam-channel",
|
|
|
|
"crossbeam-deque",
|
|
|
|
"crossbeam-utils",
|
|
|
|
"num_cpus",
|
|
|
|
]
|
|
|
|
|
2022-09-03 17:42:27 +02:00
|
|
|
[[package]]
|
|
|
|
name = "rdrand"
|
|
|
|
version = "0.4.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
|
|
|
|
dependencies = [
|
|
|
|
"rand_core 0.3.1",
|
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "redox_syscall"
|
|
|
|
version = "0.2.16"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
|
|
|
|
dependencies = [
|
|
|
|
"bitflags",
|
|
|
|
]
|
|
|
|
|
2023-05-01 16:29:20 +02:00
|
|
|
[[package]]
|
|
|
|
name = "redox_syscall"
|
|
|
|
version = "0.3.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
|
|
|
|
dependencies = [
|
|
|
|
"bitflags",
|
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "redox_users"
|
|
|
|
version = "0.4.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
|
|
|
|
dependencies = [
|
|
|
|
"getrandom",
|
2023-05-01 16:29:20 +02:00
|
|
|
"redox_syscall 0.2.16",
|
2022-08-11 22:52:55 +02:00
|
|
|
"thiserror",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "regex"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "1.8.1"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "af83e617f331cc6ae2da5443c602dfa5af81e517212d9d611a5b3ba1777b5370"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
2022-10-13 00:45:52 +02:00
|
|
|
"aho-corasick",
|
|
|
|
"memchr",
|
2023-05-01 16:29:20 +02:00
|
|
|
"regex-syntax 0.7.1",
|
2022-08-25 17:04:07 +02:00
|
|
|
]
|
|
|
|
|
2023-07-29 21:14:44 +02:00
|
|
|
[[package]]
|
|
|
|
name = "regex-automata"
|
|
|
|
version = "0.3.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b7b6d6190b7594385f61bd3911cd1be99dfddcfc365a4160cc2ab5bff4aed294"
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "regex-syntax"
|
2023-03-26 22:14:32 +02:00
|
|
|
version = "0.6.29"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-26 22:14:32 +02:00
|
|
|
checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
2023-05-01 16:29:20 +02:00
|
|
|
[[package]]
|
|
|
|
name = "regex-syntax"
|
|
|
|
version = "0.7.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "a5996294f19bd3aae0453a862ad728f60e6600695733dd5df01da90c54363a3c"
|
|
|
|
|
2022-09-03 17:42:27 +02:00
|
|
|
[[package]]
|
|
|
|
name = "remove_dir_all"
|
|
|
|
version = "0.5.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
|
|
|
|
dependencies = [
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
2022-08-04 15:44:49 +02:00
|
|
|
[[package]]
|
|
|
|
name = "rnix"
|
2022-12-06 14:31:09 +01:00
|
|
|
version = "0.11.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "bb35cedbeb70e0ccabef2a31bcff0aebd114f19566086300b8f42c725fc2cb5f"
|
2022-08-04 15:44:49 +02:00
|
|
|
dependencies = [
|
|
|
|
"rowan",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "rowan"
|
2023-03-26 22:14:32 +02:00
|
|
|
version = "0.15.11"
|
2022-08-04 15:44:49 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-26 22:14:32 +02:00
|
|
|
checksum = "64449cfef9483a475ed56ae30e2da5ee96448789fb2aa240a04beb6a055078bf"
|
2022-08-04 15:44:49 +02:00
|
|
|
dependencies = [
|
|
|
|
"countme",
|
|
|
|
"hashbrown",
|
2023-03-26 22:14:32 +02:00
|
|
|
"memoffset",
|
2022-08-04 15:44:49 +02:00
|
|
|
"rustc-hash",
|
|
|
|
"text-size",
|
|
|
|
]
|
|
|
|
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
[[package]]
|
|
|
|
name = "rustc-demangle"
|
|
|
|
version = "0.1.23"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
|
|
|
|
|
2022-08-04 15:44:49 +02:00
|
|
|
[[package]]
|
|
|
|
name = "rustc-hash"
|
|
|
|
version = "1.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "rustix"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.37.19"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "acf8729d8542766f1b2cf77eb034d52f40d375bb8b615d0b147089946e16613d"
|
2022-08-11 22:52:55 +02:00
|
|
|
dependencies = [
|
|
|
|
"bitflags",
|
|
|
|
"errno",
|
|
|
|
"io-lifetimes",
|
|
|
|
"libc",
|
|
|
|
"linux-raw-sys",
|
2023-05-01 16:29:20 +02:00
|
|
|
"windows-sys 0.48.0",
|
2022-08-11 22:52:55 +02:00
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "rustversion"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "1.0.12"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06"
|
2022-11-13 00:23:14 +01:00
|
|
|
|
2023-01-07 13:23:32 +01:00
|
|
|
[[package]]
|
|
|
|
name = "rusty-fork"
|
|
|
|
version = "0.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f"
|
|
|
|
dependencies = [
|
|
|
|
"fnv",
|
|
|
|
"quick-error 1.2.3",
|
|
|
|
"tempfile",
|
|
|
|
"wait-timeout",
|
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "rustyline"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "10.1.1"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "c1e83c32c3f3c33b08496e0d1df9ea8c64d39adb8eb36a1ebb1440c690697aef"
|
2022-08-11 22:52:55 +02:00
|
|
|
dependencies = [
|
|
|
|
"bitflags",
|
|
|
|
"cfg-if",
|
|
|
|
"clipboard-win",
|
|
|
|
"dirs-next",
|
|
|
|
"fd-lock",
|
|
|
|
"libc",
|
|
|
|
"log",
|
|
|
|
"memchr",
|
2023-03-11 23:39:31 +01:00
|
|
|
"nix",
|
2022-08-11 22:52:55 +02:00
|
|
|
"radix_trie",
|
|
|
|
"scopeguard",
|
|
|
|
"unicode-segmentation",
|
|
|
|
"unicode-width",
|
|
|
|
"utf8parse",
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "ryu"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "1.0.13"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "same-file"
|
|
|
|
version = "1.0.6"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
|
|
|
|
dependencies = [
|
|
|
|
"winapi-util",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "scopeguard"
|
|
|
|
version = "1.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
|
|
|
|
|
2022-08-04 15:44:49 +02:00
|
|
|
[[package]]
|
|
|
|
name = "serde"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "1.0.162"
|
2022-08-04 15:44:49 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "71b2f6e1ab5c2b98c05f0f35b236b22e8df7ead6ffbf51d7808da7f8817e7ab6"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
2022-12-16 12:54:22 +01:00
|
|
|
"serde_derive",
|
2022-08-25 17:04:07 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "serde_derive"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "1.0.162"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "a2a0814352fd64b58489904a44ea8d90cb1a91dcb6b4f5ebabc32c8318e93cb6"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"proc-macro2 1.0.56",
|
2023-03-16 13:31:28 +01:00
|
|
|
"quote 1.0.26",
|
2023-05-01 16:29:20 +02:00
|
|
|
"syn 2.0.15",
|
2022-08-25 17:04:07 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "serde_json"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "1.0.96"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
2022-12-16 12:54:22 +01:00
|
|
|
"itoa",
|
2022-08-25 17:04:07 +02:00
|
|
|
"ryu",
|
|
|
|
"serde",
|
|
|
|
]
|
|
|
|
|
2023-01-24 15:54:29 +01:00
|
|
|
[[package]]
|
|
|
|
name = "serde_spanned"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "0.6.1"
|
2023-01-24 15:54:29 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "0efd8caf556a6cebd3b285caf480045fcc1ac04f6bd786b09a6f11af30c4fcf4"
|
2023-01-24 15:54:29 +01:00
|
|
|
dependencies = [
|
|
|
|
"serde",
|
|
|
|
]
|
|
|
|
|
fix(tvix/cli): handle SRI hashes in outputHash
Instead of being called with `md5`, `sha1`, `sha256` or `sha512`,
`fetchurl.nix` (from corepkgs / `<nix`) can also be called with a `hash`
attribute, being an SRI hash.
In that case, `builtin.derivation` is called with `outputHashAlgo` being
an empty string, and `outputHash` being an SRI hash string.
In other cases, an SRI hash is passed as outputHash, but outputHashAlgo
is set too.
Nix does modify these values in (single, fixed) output specification it
serializes to ATerm, but keeps it unharmed in `env`.
Move this into a construct_output_hash helper function, that can be
tested better in isolation.
Change-Id: Id9d716a119664c44ea7747540399966752e20187
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7933
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
2023-01-26 14:18:12 +01:00
|
|
|
[[package]]
|
|
|
|
name = "sha-1"
|
|
|
|
version = "0.8.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df"
|
|
|
|
dependencies = [
|
|
|
|
"block-buffer 0.7.3",
|
|
|
|
"digest 0.8.1",
|
|
|
|
"fake-simd",
|
|
|
|
"opaque-debug",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "sha2"
|
|
|
|
version = "0.8.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69"
|
|
|
|
dependencies = [
|
|
|
|
"block-buffer 0.7.3",
|
|
|
|
"digest 0.8.1",
|
|
|
|
"fake-simd",
|
|
|
|
"opaque-debug",
|
|
|
|
]
|
|
|
|
|
2023-01-02 16:09:18 +01:00
|
|
|
[[package]]
|
|
|
|
name = "sha2"
|
|
|
|
version = "0.10.6"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0"
|
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"cpufeatures",
|
fix(tvix/cli): handle SRI hashes in outputHash
Instead of being called with `md5`, `sha1`, `sha256` or `sha512`,
`fetchurl.nix` (from corepkgs / `<nix`) can also be called with a `hash`
attribute, being an SRI hash.
In that case, `builtin.derivation` is called with `outputHashAlgo` being
an empty string, and `outputHash` being an SRI hash string.
In other cases, an SRI hash is passed as outputHash, but outputHashAlgo
is set too.
Nix does modify these values in (single, fixed) output specification it
serializes to ATerm, but keeps it unharmed in `env`.
Move this into a construct_output_hash helper function, that can be
tested better in isolation.
Change-Id: Id9d716a119664c44ea7747540399966752e20187
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7933
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
2023-01-26 14:18:12 +01:00
|
|
|
"digest 0.10.6",
|
2023-01-02 16:09:18 +01:00
|
|
|
]
|
|
|
|
|
2022-12-28 17:17:53 +01:00
|
|
|
[[package]]
|
|
|
|
name = "sharded-slab"
|
|
|
|
version = "0.1.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31"
|
|
|
|
dependencies = [
|
|
|
|
"lazy_static",
|
|
|
|
]
|
|
|
|
|
2023-09-03 16:39:44 +02:00
|
|
|
[[package]]
|
|
|
|
name = "signal-hook-registry"
|
|
|
|
version = "1.4.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "slab"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "0.4.8"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
|
|
|
"autocfg",
|
|
|
|
]
|
|
|
|
|
2022-12-29 21:39:28 +01:00
|
|
|
[[package]]
|
|
|
|
name = "sled"
|
|
|
|
version = "0.34.7"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "7f96b4737c2ce5987354855aed3797279def4ebf734436c6aa4552cf8e169935"
|
|
|
|
dependencies = [
|
|
|
|
"crc32fast",
|
|
|
|
"crossbeam-epoch",
|
|
|
|
"crossbeam-utils",
|
|
|
|
"fs2",
|
|
|
|
"fxhash",
|
|
|
|
"libc",
|
|
|
|
"log",
|
|
|
|
"parking_lot",
|
|
|
|
"zstd",
|
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "smallvec"
|
2022-11-23 04:42:06 +01:00
|
|
|
version = "1.10.0"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-11-23 04:42:06 +01:00
|
|
|
checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
|
2022-08-11 22:52:55 +02:00
|
|
|
|
2022-08-04 15:44:49 +02:00
|
|
|
[[package]]
|
|
|
|
name = "smol_str"
|
2023-05-11 17:06:32 +02:00
|
|
|
version = "0.2.0"
|
2022-08-04 15:44:49 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-11 17:06:32 +02:00
|
|
|
checksum = "74212e6bbe9a4352329b2f68ba3130c15a3f26fe88ff22dbdc6cdd58fa85e99c"
|
2022-08-04 15:44:49 +02:00
|
|
|
dependencies = [
|
|
|
|
"serde",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "socket2"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "0.4.9"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
[[package]]
|
|
|
|
name = "socket2"
|
|
|
|
version = "0.5.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"windows-sys 0.48.0",
|
|
|
|
]
|
|
|
|
|
fix(tvix/cli): handle SRI hashes in outputHash
Instead of being called with `md5`, `sha1`, `sha256` or `sha512`,
`fetchurl.nix` (from corepkgs / `<nix`) can also be called with a `hash`
attribute, being an SRI hash.
In that case, `builtin.derivation` is called with `outputHashAlgo` being
an empty string, and `outputHash` being an SRI hash string.
In other cases, an SRI hash is passed as outputHash, but outputHashAlgo
is set too.
Nix does modify these values in (single, fixed) output specification it
serializes to ATerm, but keeps it unharmed in `env`.
Move this into a construct_output_hash helper function, that can be
tested better in isolation.
Change-Id: Id9d716a119664c44ea7747540399966752e20187
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7933
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
2023-01-26 14:18:12 +01:00
|
|
|
[[package]]
|
|
|
|
name = "ssri"
|
|
|
|
version = "7.0.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "a9cec0d388f39fbe79d7aa600e8d38053bf97b1bc8d350da7c0ba800d0f423f2"
|
|
|
|
dependencies = [
|
|
|
|
"base64 0.10.1",
|
|
|
|
"digest 0.8.1",
|
|
|
|
"hex",
|
|
|
|
"serde",
|
|
|
|
"sha-1",
|
|
|
|
"sha2 0.8.2",
|
|
|
|
"thiserror",
|
|
|
|
]
|
|
|
|
|
feat(tvix/eval): use lexical-core to format float
Apparently our naive implementation of float formatting, which simply
used {:.5}, and trimmed trailing "0" strings not sufficient.
It wrongly trimmed numbers with zeroes but no decimal point, like
`10000` got trimmed to `1`.
Nix uses `std::to_string` on the double, which according to
https://en.cppreference.com/w/cpp/string/basic_string/to_string
is equivalent to `std::sprintf(buf, "%f", value)`.
https://en.cppreference.com/w/cpp/io/c/fprintf mentions this is treated
like this:
> Precision specifies the exact number of digits to appear after
> the decimal point character. The default precision is 6. In the
> alternative implementation decimal point character is written even if
> no digits follow it. For infinity and not-a-number conversion style
> see notes.
This doesn't seem to be the case though, and Nix uses scientific
notation in some cases.
There's a whole bunch of strategies to determine which is a more compact
notation, and which notation should be used for a given number.
https://github.com/rust-lang/rust/issues/24556 provides some pointers
into various rabbit holes for those interested.
This gist seems to be that currently a different formatting is not
exposed in rust directly, at least not for public consumption.
There is the
[lexical-core](https://github.com/Alexhuszagh/rust-lexical) crate
though, which provides a way to format floats with various strategies
and formats.
Change our implementation of `TotalDisplay` for the `Value::Float` case
to use that. We still need to do some post-processing, because Nix
always adds the sign in scientific notation (and there's no way to
configure lexical-core to do that), and lexical-core in some cases keeps
the trailing zeros.
Even with all that in place, there as a difference in `eval-okay-
fromjson.nix` (from tvix-tests), which I couldn't get to work. I updated
the fixture to a less problematic number.
With this, the testsuite passes again, and does for the upcoming CL
introducing builtins.fromTOML, and enabling the nix testsuite bits for
it, too.
Change-Id: Ie6fba5619e1d9fd7ce669a51594658b029057acc
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7922
Tested-by: BuildkiteCI
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: tazjin <tazjin@tvl.su>
2023-01-24 19:27:20 +01:00
|
|
|
[[package]]
|
|
|
|
name = "static_assertions"
|
|
|
|
version = "1.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "str-buf"
|
|
|
|
version = "1.0.6"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0"
|
|
|
|
|
2022-09-18 21:59:59 +02:00
|
|
|
[[package]]
|
|
|
|
name = "strsim"
|
|
|
|
version = "0.10.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
|
|
|
|
|
2022-09-17 19:52:02 +02:00
|
|
|
[[package]]
|
|
|
|
name = "structmeta"
|
2023-03-26 22:14:32 +02:00
|
|
|
version = "0.1.6"
|
2022-09-17 19:52:02 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-26 22:14:32 +02:00
|
|
|
checksum = "104842d6278bf64aa9d2f182ba4bde31e8aec7a131d29b7f444bb9b344a09e2a"
|
2022-09-17 19:52:02 +02:00
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"proc-macro2 1.0.56",
|
2023-03-16 13:31:28 +01:00
|
|
|
"quote 1.0.26",
|
2022-09-17 19:52:02 +02:00
|
|
|
"structmeta-derive",
|
2023-03-16 13:31:28 +01:00
|
|
|
"syn 1.0.109",
|
2022-09-17 19:52:02 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "structmeta-derive"
|
2023-03-26 22:14:32 +02:00
|
|
|
version = "0.1.6"
|
2022-09-17 19:52:02 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-26 22:14:32 +02:00
|
|
|
checksum = "24420be405b590e2d746d83b01f09af673270cf80e9b003a5fa7b651c58c7d93"
|
2022-09-17 19:52:02 +02:00
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"proc-macro2 1.0.56",
|
2023-03-16 13:31:28 +01:00
|
|
|
"quote 1.0.26",
|
|
|
|
"syn 1.0.109",
|
2022-09-17 19:52:02 +02:00
|
|
|
]
|
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "subtle"
|
|
|
|
version = "2.4.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601"
|
|
|
|
|
2022-08-10 17:52:42 +02:00
|
|
|
[[package]]
|
|
|
|
name = "syn"
|
|
|
|
version = "0.15.44"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5"
|
|
|
|
dependencies = [
|
2022-08-25 17:04:07 +02:00
|
|
|
"proc-macro2 0.4.30",
|
|
|
|
"quote 0.6.13",
|
2022-08-10 17:52:42 +02:00
|
|
|
"unicode-xid",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "syn"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "1.0.109"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"proc-macro2 1.0.56",
|
2023-03-26 22:14:32 +02:00
|
|
|
"quote 1.0.26",
|
|
|
|
"unicode-ident",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "syn"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "2.0.15"
|
2023-03-26 22:14:32 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822"
|
2023-03-26 22:14:32 +02:00
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"proc-macro2 1.0.56",
|
2023-03-16 13:31:28 +01:00
|
|
|
"quote 1.0.26",
|
2022-08-25 17:04:07 +02:00
|
|
|
"unicode-ident",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "sync_wrapper"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "0.1.2"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
|
2022-11-13 00:23:14 +01:00
|
|
|
|
2022-08-13 20:29:30 +02:00
|
|
|
[[package]]
|
|
|
|
name = "tabwriter"
|
|
|
|
version = "1.2.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "36205cfc997faadcc4b0b87aaef3fbedafe20d38d4959a7ca6ff803564051111"
|
|
|
|
dependencies = [
|
|
|
|
"unicode-width",
|
|
|
|
]
|
|
|
|
|
2022-09-03 17:42:27 +02:00
|
|
|
[[package]]
|
|
|
|
name = "tempdir"
|
|
|
|
version = "0.3.7"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8"
|
|
|
|
dependencies = [
|
2022-09-17 19:52:02 +02:00
|
|
|
"rand 0.4.6",
|
2022-09-03 17:42:27 +02:00
|
|
|
"remove_dir_all",
|
|
|
|
]
|
|
|
|
|
2022-09-17 19:52:02 +02:00
|
|
|
[[package]]
|
|
|
|
name = "tempfile"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "3.5.0"
|
2022-09-17 19:52:02 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998"
|
2022-09-17 19:52:02 +02:00
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"fastrand",
|
2023-05-01 16:29:20 +02:00
|
|
|
"redox_syscall 0.3.5",
|
2023-03-16 13:31:28 +01:00
|
|
|
"rustix",
|
2023-05-01 16:29:20 +02:00
|
|
|
"windows-sys 0.45.0",
|
2022-09-17 19:52:02 +02:00
|
|
|
]
|
|
|
|
|
2022-09-11 23:34:25 +02:00
|
|
|
[[package]]
|
|
|
|
name = "termcolor"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "1.2.0"
|
2022-09-11 23:34:25 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
|
2022-09-11 23:34:25 +02:00
|
|
|
dependencies = [
|
|
|
|
"winapi-util",
|
|
|
|
]
|
|
|
|
|
2022-12-29 22:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "test-case"
|
|
|
|
version = "2.2.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "21d6cf5a7dffb3f9dceec8e6b8ca528d9bd71d36c9f074defb548ce161f598c0"
|
|
|
|
dependencies = [
|
|
|
|
"test-case-macros",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "test-case-macros"
|
|
|
|
version = "2.2.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e45b7bf6e19353ddd832745c8fcf77a17a93171df7151187f26623f2b75b5b26"
|
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
2023-03-11 23:39:31 +01:00
|
|
|
"proc-macro-error",
|
2023-05-01 16:29:20 +02:00
|
|
|
"proc-macro2 1.0.56",
|
2023-03-16 13:31:28 +01:00
|
|
|
"quote 1.0.26",
|
|
|
|
"syn 1.0.109",
|
2022-12-29 22:47:02 +01:00
|
|
|
]
|
|
|
|
|
2022-08-10 17:52:42 +02:00
|
|
|
[[package]]
|
|
|
|
name = "test-generator"
|
|
|
|
version = "0.3.0"
|
2022-12-18 15:23:35 +01:00
|
|
|
source = "git+https://github.com/JamesGuthrie/test-generator.git?rev=82e799979980962aec1aa324ec6e0e4cad781f41#82e799979980962aec1aa324ec6e0e4cad781f41"
|
2022-08-10 17:52:42 +02:00
|
|
|
dependencies = [
|
|
|
|
"glob",
|
2022-08-25 17:04:07 +02:00
|
|
|
"proc-macro2 0.4.30",
|
|
|
|
"quote 0.6.13",
|
|
|
|
"syn 0.15.44",
|
2022-08-10 17:52:42 +02:00
|
|
|
]
|
|
|
|
|
2022-09-17 19:52:02 +02:00
|
|
|
[[package]]
|
|
|
|
name = "test-strategy"
|
|
|
|
version = "0.2.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "62d6408d1406657be2f9d1701fbae379331d30d2f6e92050710edb0d34eeb480"
|
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"proc-macro2 1.0.56",
|
2023-03-16 13:31:28 +01:00
|
|
|
"quote 1.0.26",
|
2022-09-17 19:52:02 +02:00
|
|
|
"structmeta",
|
2023-03-16 13:31:28 +01:00
|
|
|
"syn 1.0.109",
|
2022-09-17 19:52:02 +02:00
|
|
|
]
|
|
|
|
|
2022-08-04 15:44:49 +02:00
|
|
|
[[package]]
|
|
|
|
name = "text-size"
|
|
|
|
version = "1.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "288cb548dbe72b652243ea797201f3d481a0609a967980fcc5b2315ea811560a"
|
|
|
|
|
2022-09-18 21:59:59 +02:00
|
|
|
[[package]]
|
|
|
|
name = "textwrap"
|
2022-11-23 04:42:06 +01:00
|
|
|
version = "0.16.0"
|
2022-09-18 21:59:59 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-11-23 04:42:06 +01:00
|
|
|
checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
|
2022-09-18 21:59:59 +02:00
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "thiserror"
|
2023-03-26 22:14:32 +02:00
|
|
|
version = "1.0.40"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-26 22:14:32 +02:00
|
|
|
checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
|
2022-08-11 22:52:55 +02:00
|
|
|
dependencies = [
|
|
|
|
"thiserror-impl",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "thiserror-impl"
|
2023-03-26 22:14:32 +02:00
|
|
|
version = "1.0.40"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-26 22:14:32 +02:00
|
|
|
checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
|
2022-08-11 22:52:55 +02:00
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"proc-macro2 1.0.56",
|
2023-03-16 13:31:28 +01:00
|
|
|
"quote 1.0.26",
|
2023-05-01 16:29:20 +02:00
|
|
|
"syn 2.0.15",
|
2022-08-11 22:52:55 +02:00
|
|
|
]
|
|
|
|
|
2022-12-28 17:17:53 +01:00
|
|
|
[[package]]
|
|
|
|
name = "thread_local"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "1.1.7"
|
2022-12-28 17:17:53 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
|
2022-12-28 17:17:53 +01:00
|
|
|
dependencies = [
|
2023-03-16 13:31:28 +01:00
|
|
|
"cfg-if",
|
2022-12-28 17:17:53 +01:00
|
|
|
"once_cell",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "tinytemplate"
|
|
|
|
version = "1.2.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
|
|
|
|
dependencies = [
|
|
|
|
"serde",
|
|
|
|
"serde_json",
|
|
|
|
]
|
|
|
|
|
2023-06-09 18:07:00 +02:00
|
|
|
[[package]]
|
|
|
|
name = "tinyvec"
|
|
|
|
version = "1.6.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
|
|
|
|
dependencies = [
|
|
|
|
"tinyvec_macros",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tinyvec_macros"
|
|
|
|
version = "0.1.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "tokio"
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
version = "1.32.0"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
"backtrace",
|
2022-11-13 00:23:14 +01:00
|
|
|
"bytes",
|
|
|
|
"libc",
|
|
|
|
"mio",
|
2022-12-28 16:40:28 +01:00
|
|
|
"num_cpus",
|
2022-11-13 00:23:14 +01:00
|
|
|
"pin-project-lite",
|
2023-09-03 16:39:44 +02:00
|
|
|
"signal-hook-registry",
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
"socket2 0.5.4",
|
2022-11-13 00:23:14 +01:00
|
|
|
"tokio-macros",
|
2023-05-01 16:29:20 +02:00
|
|
|
"windows-sys 0.48.0",
|
2022-11-13 00:23:14 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tokio-io-timeout"
|
|
|
|
version = "1.2.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf"
|
|
|
|
dependencies = [
|
|
|
|
"pin-project-lite",
|
|
|
|
"tokio",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tokio-macros"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "2.1.0"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"proc-macro2 1.0.56",
|
2023-03-16 13:31:28 +01:00
|
|
|
"quote 1.0.26",
|
2023-05-01 16:29:20 +02:00
|
|
|
"syn 2.0.15",
|
2022-11-13 00:23:14 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tokio-stream"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.1.14"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
|
|
|
"futures-core",
|
|
|
|
"pin-project-lite",
|
|
|
|
"tokio",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tokio-util"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.7.8"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
|
|
|
"futures-core",
|
|
|
|
"futures-sink",
|
|
|
|
"pin-project-lite",
|
|
|
|
"tokio",
|
|
|
|
"tracing",
|
|
|
|
]
|
|
|
|
|
2023-01-24 15:54:29 +01:00
|
|
|
[[package]]
|
|
|
|
name = "toml"
|
|
|
|
version = "0.6.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "4fb9d890e4dc9298b70f740f615f2e05b9db37dce531f6b24fb77ac993f9f217"
|
|
|
|
dependencies = [
|
|
|
|
"serde",
|
|
|
|
"serde_spanned",
|
|
|
|
"toml_datetime",
|
|
|
|
"toml_edit",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "toml_datetime"
|
|
|
|
version = "0.5.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "4553f467ac8e3d374bc9a177a26801e5d0f9b211aa1673fb137a403afd1c9cf5"
|
|
|
|
dependencies = [
|
|
|
|
"serde",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "toml_edit"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "0.18.1"
|
2023-01-24 15:54:29 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "56c59d8dd7d0dcbc6428bf7aa2f0e823e26e43b3c9aca15bbc9475d23e5fa12b"
|
2023-01-24 15:54:29 +01:00
|
|
|
dependencies = [
|
|
|
|
"indexmap",
|
|
|
|
"nom8",
|
|
|
|
"serde",
|
|
|
|
"serde_spanned",
|
|
|
|
"toml_datetime",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "tonic"
|
|
|
|
version = "0.8.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "8f219fad3b929bef19b1f86fbc0358d35daed8f2cac972037ac0dc10bbb8d5fb"
|
|
|
|
dependencies = [
|
|
|
|
"async-stream",
|
|
|
|
"async-trait",
|
|
|
|
"axum",
|
fix(tvix/cli): handle SRI hashes in outputHash
Instead of being called with `md5`, `sha1`, `sha256` or `sha512`,
`fetchurl.nix` (from corepkgs / `<nix`) can also be called with a `hash`
attribute, being an SRI hash.
In that case, `builtin.derivation` is called with `outputHashAlgo` being
an empty string, and `outputHash` being an SRI hash string.
In other cases, an SRI hash is passed as outputHash, but outputHashAlgo
is set too.
Nix does modify these values in (single, fixed) output specification it
serializes to ATerm, but keeps it unharmed in `env`.
Move this into a construct_output_hash helper function, that can be
tested better in isolation.
Change-Id: Id9d716a119664c44ea7747540399966752e20187
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7933
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
2023-01-26 14:18:12 +01:00
|
|
|
"base64 0.13.1",
|
2022-11-13 00:23:14 +01:00
|
|
|
"bytes",
|
|
|
|
"futures-core",
|
|
|
|
"futures-util",
|
|
|
|
"h2",
|
|
|
|
"http",
|
|
|
|
"http-body",
|
|
|
|
"hyper",
|
|
|
|
"hyper-timeout",
|
|
|
|
"percent-encoding",
|
|
|
|
"pin-project",
|
|
|
|
"prost",
|
|
|
|
"prost-derive",
|
|
|
|
"tokio",
|
|
|
|
"tokio-stream",
|
|
|
|
"tokio-util",
|
|
|
|
"tower",
|
|
|
|
"tower-layer",
|
|
|
|
"tower-service",
|
|
|
|
"tracing",
|
|
|
|
"tracing-futures",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tonic-build"
|
|
|
|
version = "0.8.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "5bf5e9b9c0f7e0a7c027dcfaba7b2c60816c7049171f679d99ee2ff65d0de8c4"
|
|
|
|
dependencies = [
|
|
|
|
"prettyplease",
|
2023-05-01 16:29:20 +02:00
|
|
|
"proc-macro2 1.0.56",
|
2022-11-13 00:23:14 +01:00
|
|
|
"prost-build",
|
2023-03-16 13:31:28 +01:00
|
|
|
"quote 1.0.26",
|
|
|
|
"syn 1.0.109",
|
2022-11-13 00:23:14 +01:00
|
|
|
]
|
|
|
|
|
2023-01-18 20:46:33 +01:00
|
|
|
[[package]]
|
|
|
|
name = "tonic-mock"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "git+https://github.com/brainrake/tonic-mock?branch=bump-dependencies#ec1a15510875de99d709d684190db5d9beab175e"
|
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
|
|
|
"futures",
|
|
|
|
"http",
|
|
|
|
"http-body",
|
|
|
|
"prost",
|
|
|
|
"tonic",
|
|
|
|
]
|
|
|
|
|
2022-11-26 02:14:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "tonic-reflection"
|
|
|
|
version = "0.5.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "0455f730d540a1484bffc3c55c94100b18a662597b982c2e9073f2c55c602616"
|
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
|
|
|
"prost",
|
|
|
|
"prost-types",
|
|
|
|
"tokio",
|
|
|
|
"tokio-stream",
|
|
|
|
"tonic",
|
|
|
|
"tonic-build",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "tower"
|
|
|
|
version = "0.4.13"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
|
|
|
|
dependencies = [
|
|
|
|
"futures-core",
|
|
|
|
"futures-util",
|
|
|
|
"indexmap",
|
|
|
|
"pin-project",
|
|
|
|
"pin-project-lite",
|
|
|
|
"rand 0.8.5",
|
|
|
|
"slab",
|
|
|
|
"tokio",
|
|
|
|
"tokio-util",
|
|
|
|
"tower-layer",
|
|
|
|
"tower-service",
|
|
|
|
"tracing",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tower-layer"
|
|
|
|
version = "0.3.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0"
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tower-service"
|
|
|
|
version = "0.3.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tracing"
|
|
|
|
version = "0.1.37"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
|
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
feat(tvix/store/directorysvc): add gRPC client
This provides a GRPCDirectoryService struct implementing
DirectoryService, allowing a client to Directory objects from a (remote)
tvix-store.
Remote in this case is anything outside the current process, be it
another process, or an endpoint on the network.
To keep the sync interface in the `DirectoryService` trait, a handle to
some tokio runtime needs to be passed into the constructor, and the two
methods use `self.tokio_handle.spawn` to start an async function, and
`self.tokio_handle.block_on` to wait for its completion.
The client handle, called `grpc_client` itself is easy to clone, and
treats concurrent requests internally. This means, even though we keep
the `DirectoryService` trait sync, there's nothing preventing it from
being used concurrently, let's say from multiple threads.
There's still two limitations for now:
1) The trait doesn't make use of the `recursive` request, which
currently leads to a N+1 query problem. This can be fixed
by `GRPCDirectoryService` having a reference to another
`DirectoryService` acting as the local side.
I want to wait for general store composition code to pop up before
manually coding this here.
2) It's currently only possible to put() leaf directory nodes, as the
request normally requires uploading a whole closure. We might want
to add another batch function to upload a whole closure, and/or do
this batching in certain cases. This still needs some more thinking.
Change-Id: I7ffec791610b72c0960cf5307cefbb12ec946dc9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8336
Tested-by: BuildkiteCI
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: tazjin <tazjin@tvl.su>
2023-03-23 13:49:57 +01:00
|
|
|
"log",
|
2022-11-13 00:23:14 +01:00
|
|
|
"pin-project-lite",
|
|
|
|
"tracing-attributes",
|
|
|
|
"tracing-core",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tracing-attributes"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.1.24"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"proc-macro2 1.0.56",
|
2023-03-16 13:31:28 +01:00
|
|
|
"quote 1.0.26",
|
2023-05-01 16:29:20 +02:00
|
|
|
"syn 2.0.15",
|
2022-11-13 00:23:14 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tracing-core"
|
|
|
|
version = "0.1.30"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a"
|
|
|
|
dependencies = [
|
|
|
|
"once_cell",
|
2022-12-28 17:17:53 +01:00
|
|
|
"valuable",
|
2022-11-13 00:23:14 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tracing-futures"
|
|
|
|
version = "0.2.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2"
|
|
|
|
dependencies = [
|
|
|
|
"pin-project",
|
|
|
|
"tracing",
|
|
|
|
]
|
|
|
|
|
2022-12-28 17:17:53 +01:00
|
|
|
[[package]]
|
|
|
|
name = "tracing-log"
|
|
|
|
version = "0.1.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922"
|
|
|
|
dependencies = [
|
|
|
|
"lazy_static",
|
|
|
|
"log",
|
|
|
|
"tracing-core",
|
|
|
|
]
|
|
|
|
|
2023-02-16 16:49:22 +01:00
|
|
|
[[package]]
|
|
|
|
name = "tracing-serde"
|
|
|
|
version = "0.1.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1"
|
|
|
|
dependencies = [
|
|
|
|
"serde",
|
|
|
|
"tracing-core",
|
|
|
|
]
|
|
|
|
|
2022-12-28 17:17:53 +01:00
|
|
|
[[package]]
|
|
|
|
name = "tracing-subscriber"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.3.17"
|
2022-12-28 17:17:53 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77"
|
2022-12-28 17:17:53 +01:00
|
|
|
dependencies = [
|
|
|
|
"nu-ansi-term",
|
2023-02-16 16:49:22 +01:00
|
|
|
"serde",
|
|
|
|
"serde_json",
|
2022-12-28 17:17:53 +01:00
|
|
|
"sharded-slab",
|
|
|
|
"smallvec",
|
|
|
|
"thread_local",
|
|
|
|
"tracing-core",
|
|
|
|
"tracing-log",
|
2023-02-16 16:49:22 +01:00
|
|
|
"tracing-serde",
|
2022-12-28 17:17:53 +01:00
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "try-lock"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "0.2.4"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"
|
2022-11-13 00:23:14 +01:00
|
|
|
|
2022-12-08 22:19:22 +01:00
|
|
|
[[package]]
|
|
|
|
name = "tvix-cli"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
2023-07-19 17:52:50 +02:00
|
|
|
"bytes",
|
2023-05-01 16:29:20 +02:00
|
|
|
"clap 4.2.7",
|
fix(tvix/cli): handle SRI hashes in outputHash
Instead of being called with `md5`, `sha1`, `sha256` or `sha512`,
`fetchurl.nix` (from corepkgs / `<nix`) can also be called with a `hash`
attribute, being an SRI hash.
In that case, `builtin.derivation` is called with `outputHashAlgo` being
an empty string, and `outputHash` being an SRI hash string.
In other cases, an SRI hash is passed as outputHash, but outputHashAlgo
is set too.
Nix does modify these values in (single, fixed) output specification it
serializes to ATerm, but keeps it unharmed in `env`.
Move this into a construct_output_hash helper function, that can be
tested better in isolation.
Change-Id: Id9d716a119664c44ea7747540399966752e20187
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7933
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
2023-01-26 14:18:12 +01:00
|
|
|
"data-encoding",
|
2022-12-08 22:19:22 +01:00
|
|
|
"dirs",
|
2023-01-31 14:45:42 +01:00
|
|
|
"nix-compat",
|
2022-12-08 22:19:22 +01:00
|
|
|
"rustyline",
|
2022-12-13 18:17:00 +01:00
|
|
|
"smol_str",
|
fix(tvix/cli): handle SRI hashes in outputHash
Instead of being called with `md5`, `sha1`, `sha256` or `sha512`,
`fetchurl.nix` (from corepkgs / `<nix`) can also be called with a `hash`
attribute, being an SRI hash.
In that case, `builtin.derivation` is called with `outputHashAlgo` being
an empty string, and `outputHash` being an SRI hash string.
In other cases, an SRI hash is passed as outputHash, but outputHashAlgo
is set too.
Nix does modify these values in (single, fixed) output specification it
serializes to ATerm, but keeps it unharmed in `env`.
Move this into a construct_output_hash helper function, that can be
tested better in isolation.
Change-Id: Id9d716a119664c44ea7747540399966752e20187
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7933
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
2023-01-26 14:18:12 +01:00
|
|
|
"ssri",
|
2023-01-26 23:42:10 +01:00
|
|
|
"thiserror",
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
"tokio",
|
2023-09-02 20:16:35 +02:00
|
|
|
"tracing",
|
2022-12-08 22:19:22 +01:00
|
|
|
"tvix-eval",
|
2023-05-14 20:21:27 +02:00
|
|
|
"tvix-store",
|
refactor(tvix/cli): use Wu-Manber string scanning for drv references
Switch out the string-scanning algorithm used in the reference scanner.
The construction of aho-corasick automata made up the vast majority of
runtime when evaluating nixpkgs previously. While the actual scanning
with a constructed automaton is relatively fast, we almost never scan
for the same set of strings twice and the cost is not worth it.
An algorithm that better matches our needs is the Wu-Manber multiple
string match algorithm, which works efficiently on *long* and *random*
strings of the *same length*, which describes store paths (up to their
hash component).
This switches the refscanner crate to a Rust implementation[0][1] of
this algorithm.
This has several implications:
1. This crate does not provide a way to scan streams. I'm not sure if
this is an inherent problem with the algorithm (probably not, but
it would need buffering). Either way, related functions and
tests (which were actually unused) have been removed.
2. All strings need to be of the same length. For this reason, we
truncate the known paths after their hash part (they are still
unique, of course).
3. Passing an empty set of matches, or a match that is shorter than
the length of a store path, causes the crate to panic. We safeguard
against this by completely skipping the refscanning if there are no
known paths (i.e. when evaluating the first derivation of an eval),
and by bailing out of scanning a string that is shorter than a
store path.
On the upside, this reduces overall runtime to less 1/5 of what it was
before when evaluating `pkgs.stdenv.drvPath`.
[0]: Frankly, it's a random, research-grade MIT-licensed
crate that I found on Github:
https://github.com/jneem/wu-manber
[1]: We probably want to rewrite or at least fork the above crate, and
add things like a three-byte wide scanner. Evaluating large
portions of nixpkgs can easily lead to more than 65k derivations
being scanned for.
Change-Id: I08926778e1e5d5a87fc9ac26e0437aed8bbd9eb0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8017
Tested-by: BuildkiteCI
Reviewed-by: flokli <flokli@flokli.de>
2023-02-02 13:51:59 +01:00
|
|
|
"wu-manber",
|
2022-12-08 22:19:22 +01:00
|
|
|
]
|
|
|
|
|
2022-08-04 15:29:38 +02:00
|
|
|
[[package]]
|
|
|
|
name = "tvix-eval"
|
|
|
|
version = "0.1.0"
|
2022-08-04 15:44:49 +02:00
|
|
|
dependencies = [
|
2023-07-19 17:52:50 +02:00
|
|
|
"bytes",
|
2022-09-01 14:52:48 +02:00
|
|
|
"codemap",
|
2022-09-11 23:34:25 +02:00
|
|
|
"codemap-diagnostic",
|
2022-08-25 17:04:07 +02:00
|
|
|
"criterion",
|
2022-08-11 23:26:05 +02:00
|
|
|
"dirs",
|
2023-02-26 17:00:25 +01:00
|
|
|
"genawaiter",
|
2022-12-29 15:08:14 +01:00
|
|
|
"imbl",
|
2022-09-02 21:02:19 +02:00
|
|
|
"itertools",
|
feat(tvix/eval): use lexical-core to format float
Apparently our naive implementation of float formatting, which simply
used {:.5}, and trimmed trailing "0" strings not sufficient.
It wrongly trimmed numbers with zeroes but no decimal point, like
`10000` got trimmed to `1`.
Nix uses `std::to_string` on the double, which according to
https://en.cppreference.com/w/cpp/string/basic_string/to_string
is equivalent to `std::sprintf(buf, "%f", value)`.
https://en.cppreference.com/w/cpp/io/c/fprintf mentions this is treated
like this:
> Precision specifies the exact number of digits to appear after
> the decimal point character. The default precision is 6. In the
> alternative implementation decimal point character is written even if
> no digits follow it. For infinity and not-a-number conversion style
> see notes.
This doesn't seem to be the case though, and Nix uses scientific
notation in some cases.
There's a whole bunch of strategies to determine which is a more compact
notation, and which notation should be used for a given number.
https://github.com/rust-lang/rust/issues/24556 provides some pointers
into various rabbit holes for those interested.
This gist seems to be that currently a different formatting is not
exposed in rust directly, at least not for public consumption.
There is the
[lexical-core](https://github.com/Alexhuszagh/rust-lexical) crate
though, which provides a way to format floats with various strategies
and formats.
Change our implementation of `TotalDisplay` for the `Value::Float` case
to use that. We still need to do some post-processing, because Nix
always adds the sign in scientific notation (and there's no way to
configure lexical-core to do that), and lexical-core in some cases keeps
the trailing zeros.
Even with all that in place, there as a difference in `eval-okay-
fromjson.nix` (from tvix-tests), which I couldn't get to work. I updated
the fixture to a less problematic number.
With this, the testsuite passes again, and does for the upcoming CL
introducing builtins.fromTOML, and enabling the nix testsuite bits for
it, too.
Change-Id: Ie6fba5619e1d9fd7ce669a51594658b029057acc
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7922
Tested-by: BuildkiteCI
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: tazjin <tazjin@tvl.su>
2023-01-24 19:27:20 +01:00
|
|
|
"lazy_static",
|
|
|
|
"lexical-core",
|
2022-08-12 17:52:48 +02:00
|
|
|
"path-clean",
|
2022-08-16 14:33:50 +02:00
|
|
|
"pretty_assertions",
|
2022-09-17 19:52:02 +02:00
|
|
|
"proptest",
|
2022-10-13 00:45:52 +02:00
|
|
|
"regex",
|
2022-08-04 15:44:49 +02:00
|
|
|
"rnix",
|
2022-08-16 22:43:45 +02:00
|
|
|
"rowan",
|
2022-10-13 14:23:45 +02:00
|
|
|
"serde",
|
2022-10-10 06:32:57 +02:00
|
|
|
"serde_json",
|
2022-08-11 18:02:19 +02:00
|
|
|
"smol_str",
|
2022-08-13 20:29:30 +02:00
|
|
|
"tabwriter",
|
2022-09-03 17:42:27 +02:00
|
|
|
"tempdir",
|
2022-08-10 17:52:42 +02:00
|
|
|
"test-generator",
|
2022-09-17 19:52:02 +02:00
|
|
|
"test-strategy",
|
2023-01-24 15:54:29 +01:00
|
|
|
"toml",
|
2022-11-06 00:50:31 +01:00
|
|
|
"tvix-eval-builtin-macros",
|
2023-01-15 12:52:37 +01:00
|
|
|
"xml-rs",
|
2022-11-06 00:50:31 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tvix-eval-builtin-macros"
|
|
|
|
version = "0.0.1"
|
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"proc-macro2 1.0.56",
|
2023-03-16 13:31:28 +01:00
|
|
|
"quote 1.0.26",
|
|
|
|
"syn 1.0.109",
|
2022-12-06 14:47:02 +01:00
|
|
|
"tvix-eval",
|
|
|
|
]
|
|
|
|
|
2022-12-31 16:13:59 +01:00
|
|
|
[[package]]
|
|
|
|
name = "tvix-serde"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"serde",
|
|
|
|
"tvix-eval",
|
|
|
|
]
|
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
2023-03-14 22:36:10 +01:00
|
|
|
name = "tvix-store"
|
2022-12-06 14:47:02 +01:00
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
2022-12-27 18:10:46 +01:00
|
|
|
"anyhow",
|
2022-12-06 14:47:02 +01:00
|
|
|
"blake3",
|
refactor(tvix/store): remove ChunkService
Whether chunking is involved or not, is an implementation detail of each
Blobstore. Consumers of a whole blob shouldn't need to worry about that.
It currently is not visible in the gRPC interface either. It
shouldn't bleed into everything.
Let the BlobService trait provide `open_read` and `open_write` methods,
which return handles providing io::Read or io::Write, and leave the
details up to the implementation.
This means, our custom BlobReader module can go away, and all the
chunking bits in there, too.
In the future, we might still want to add more chunking-aware syncing,
but as a syncing strategy some stores can expose, not as a fundamental
protocol component.
This currently needs "SyncReadIntoAsyncRead", taken and vendored in from
https://github.com/tokio-rs/tokio/pull/5669.
It provides a AsyncRead for a sync Read, which is necessary to connect
our (sync) BlobReader interface to a GRPC server implementation.
As an alternative, we could also make the BlobReader itself async, and
let consumers of the trait (EvalIO) deal with the async-ness, but this
is less of a change for now.
In terms of vendoring, I initially tried to move our tokio crate to
these commits, but ended up in version incompatibilities, so let's
vendor it in for now.
Change-Id: I5969ebbc4c0e1ceece47981be3b9e7cfb3f59ad0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8551
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2023-05-11 14:49:01 +02:00
|
|
|
"bytes",
|
2023-05-01 16:29:20 +02:00
|
|
|
"clap 4.2.7",
|
2023-02-13 16:47:22 +01:00
|
|
|
"count-write",
|
2022-12-30 16:40:58 +01:00
|
|
|
"data-encoding",
|
2023-05-28 09:22:08 +02:00
|
|
|
"fuser",
|
refactor(tvix/store): remove ChunkService
Whether chunking is involved or not, is an implementation detail of each
Blobstore. Consumers of a whole blob shouldn't need to worry about that.
It currently is not visible in the gRPC interface either. It
shouldn't bleed into everything.
Let the BlobService trait provide `open_read` and `open_write` methods,
which return handles providing io::Read or io::Write, and leave the
details up to the implementation.
This means, our custom BlobReader module can go away, and all the
chunking bits in there, too.
In the future, we might still want to add more chunking-aware syncing,
but as a syncing strategy some stores can expose, not as a fundamental
protocol component.
This currently needs "SyncReadIntoAsyncRead", taken and vendored in from
https://github.com/tokio-rs/tokio/pull/5669.
It provides a AsyncRead for a sync Read, which is necessary to connect
our (sync) BlobReader interface to a GRPC server implementation.
As an alternative, we could also make the BlobReader itself async, and
let consumers of the trait (EvalIO) deal with the async-ness, but this
is less of a change for now.
In terms of vendoring, I initially tried to move our tokio crate to
these commits, but ended up in version incompatibilities, so let's
vendor it in for now.
Change-Id: I5969ebbc4c0e1ceece47981be3b9e7cfb3f59ad0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8551
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2023-05-11 14:49:01 +02:00
|
|
|
"futures",
|
2022-12-27 17:41:31 +01:00
|
|
|
"lazy_static",
|
2023-05-28 09:22:08 +02:00
|
|
|
"libc",
|
2023-01-31 12:18:03 +01:00
|
|
|
"nix-compat",
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
"pin-project-lite",
|
2022-12-06 14:47:02 +01:00
|
|
|
"prost",
|
|
|
|
"prost-build",
|
2023-03-01 18:30:54 +01:00
|
|
|
"rayon",
|
2023-05-11 17:01:17 +02:00
|
|
|
"serde_json",
|
2023-02-13 16:47:22 +01:00
|
|
|
"sha2 0.10.6",
|
2022-12-29 21:39:28 +01:00
|
|
|
"sled",
|
2023-05-11 17:01:17 +02:00
|
|
|
"smol_str",
|
2022-12-29 21:39:28 +01:00
|
|
|
"tempfile",
|
2022-12-29 22:47:02 +01:00
|
|
|
"test-case",
|
2022-12-27 18:10:46 +01:00
|
|
|
"thiserror",
|
2022-12-28 16:40:28 +01:00
|
|
|
"tokio",
|
|
|
|
"tokio-stream",
|
2023-03-11 21:21:40 +01:00
|
|
|
"tokio-util",
|
2022-11-13 00:23:14 +01:00
|
|
|
"tonic",
|
|
|
|
"tonic-build",
|
2023-01-18 20:46:33 +01:00
|
|
|
"tonic-mock",
|
2022-11-26 02:14:02 +01:00
|
|
|
"tonic-reflection",
|
feat(tvix/store/directorysvc): add gRPC client
This provides a GRPCDirectoryService struct implementing
DirectoryService, allowing a client to Directory objects from a (remote)
tvix-store.
Remote in this case is anything outside the current process, be it
another process, or an endpoint on the network.
To keep the sync interface in the `DirectoryService` trait, a handle to
some tokio runtime needs to be passed into the constructor, and the two
methods use `self.tokio_handle.spawn` to start an async function, and
`self.tokio_handle.block_on` to wait for its completion.
The client handle, called `grpc_client` itself is easy to clone, and
treats concurrent requests internally. This means, even though we keep
the `DirectoryService` trait sync, there's nothing preventing it from
being used concurrently, let's say from multiple threads.
There's still two limitations for now:
1) The trait doesn't make use of the `recursive` request, which
currently leads to a N+1 query problem. This can be fixed
by `GRPCDirectoryService` having a reference to another
`DirectoryService` acting as the local side.
I want to wait for general store composition code to pop up before
manually coding this here.
2) It's currently only possible to put() leaf directory nodes, as the
request normally requires uploading a whole closure. We might want
to add another batch function to upload a whole closure, and/or do
this batching in certain cases. This still needs some more thinking.
Change-Id: I7ffec791610b72c0960cf5307cefbb12ec946dc9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8336
Tested-by: BuildkiteCI
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: tazjin <tazjin@tvl.su>
2023-03-23 13:49:57 +01:00
|
|
|
"tower",
|
2022-12-28 17:17:53 +01:00
|
|
|
"tracing",
|
|
|
|
"tracing-subscriber",
|
2023-06-09 18:07:00 +02:00
|
|
|
"url",
|
2023-02-27 13:03:53 +01:00
|
|
|
"walkdir",
|
2022-08-04 15:44:49 +02:00
|
|
|
]
|
2022-08-10 17:52:42 +02:00
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "typenum"
|
|
|
|
version = "1.16.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
|
|
|
|
|
2023-03-16 13:31:28 +01:00
|
|
|
[[package]]
|
|
|
|
name = "unarray"
|
|
|
|
version = "0.1.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94"
|
|
|
|
|
2023-06-09 18:07:00 +02:00
|
|
|
[[package]]
|
|
|
|
name = "unicode-bidi"
|
|
|
|
version = "0.3.13"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "unicode-ident"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "1.0.8"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
2023-06-09 18:07:00 +02:00
|
|
|
[[package]]
|
|
|
|
name = "unicode-normalization"
|
|
|
|
version = "0.1.22"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
|
|
|
|
dependencies = [
|
|
|
|
"tinyvec",
|
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "unicode-segmentation"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "1.10.1"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
|
2022-08-11 22:52:55 +02:00
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "unicode-width"
|
2022-09-03 17:42:27 +02:00
|
|
|
version = "0.1.10"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-09-03 17:42:27 +02:00
|
|
|
checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
2022-08-10 17:52:42 +02:00
|
|
|
[[package]]
|
|
|
|
name = "unicode-xid"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
2023-06-09 18:07:00 +02:00
|
|
|
[[package]]
|
|
|
|
name = "url"
|
|
|
|
version = "2.4.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb"
|
|
|
|
dependencies = [
|
|
|
|
"form_urlencoded",
|
|
|
|
"idna",
|
|
|
|
"percent-encoding",
|
|
|
|
]
|
|
|
|
|
2023-05-28 09:22:08 +02:00
|
|
|
[[package]]
|
|
|
|
name = "users"
|
|
|
|
version = "0.11.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "24cc0f6d6f267b73e5a2cadf007ba8f9bc39c6a6f9666f8cf25ea809a153b032"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"log",
|
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "utf8parse"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "0.2.1"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
|
2022-08-11 22:52:55 +02:00
|
|
|
|
2022-12-28 17:17:53 +01:00
|
|
|
[[package]]
|
|
|
|
name = "valuable"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
|
|
|
|
|
2022-09-18 21:59:59 +02:00
|
|
|
[[package]]
|
|
|
|
name = "version_check"
|
|
|
|
version = "0.9.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
|
|
|
|
|
2023-01-07 13:23:32 +01:00
|
|
|
[[package]]
|
|
|
|
name = "wait-timeout"
|
|
|
|
version = "0.2.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "walkdir"
|
2023-09-05 16:08:50 +02:00
|
|
|
version = "2.4.0"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-09-05 16:08:50 +02:00
|
|
|
checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"same-file",
|
|
|
|
"winapi-util",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "want"
|
|
|
|
version = "0.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0"
|
|
|
|
dependencies = [
|
|
|
|
"log",
|
|
|
|
"try-lock",
|
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "wasi"
|
|
|
|
version = "0.11.0+wasi-snapshot-preview1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "wasm-bindgen"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "0.2.84"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"wasm-bindgen-macro",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "wasm-bindgen-backend"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "0.2.84"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"bumpalo",
|
|
|
|
"log",
|
|
|
|
"once_cell",
|
2023-05-01 16:29:20 +02:00
|
|
|
"proc-macro2 1.0.56",
|
2023-03-16 13:31:28 +01:00
|
|
|
"quote 1.0.26",
|
|
|
|
"syn 1.0.109",
|
2022-08-25 17:04:07 +02:00
|
|
|
"wasm-bindgen-shared",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "wasm-bindgen-macro"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "0.2.84"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
2023-03-16 13:31:28 +01:00
|
|
|
"quote 1.0.26",
|
2022-08-25 17:04:07 +02:00
|
|
|
"wasm-bindgen-macro-support",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "wasm-bindgen-macro-support"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "0.2.84"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"proc-macro2 1.0.56",
|
2023-03-16 13:31:28 +01:00
|
|
|
"quote 1.0.26",
|
|
|
|
"syn 1.0.109",
|
2022-08-25 17:04:07 +02:00
|
|
|
"wasm-bindgen-backend",
|
|
|
|
"wasm-bindgen-shared",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "wasm-bindgen-shared"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "0.2.84"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "web-sys"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "0.3.61"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"js-sys",
|
|
|
|
"wasm-bindgen",
|
|
|
|
]
|
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "which"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "4.4.0"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269"
|
2022-12-06 14:47:02 +01:00
|
|
|
dependencies = [
|
|
|
|
"either",
|
|
|
|
"libc",
|
|
|
|
"once_cell",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "winapi"
|
|
|
|
version = "0.3.9"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
|
|
|
|
dependencies = [
|
|
|
|
"winapi-i686-pc-windows-gnu",
|
|
|
|
"winapi-x86_64-pc-windows-gnu",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "winapi-i686-pc-windows-gnu"
|
|
|
|
version = "0.4.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "winapi-util"
|
|
|
|
version = "0.1.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
|
|
|
|
dependencies = [
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "winapi-x86_64-pc-windows-gnu"
|
|
|
|
version = "0.4.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
2022-08-11 22:52:55 +02:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "windows-sys"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.45.0"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
|
2022-08-11 22:52:55 +02:00
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"windows-targets 0.42.2",
|
2022-08-11 22:52:55 +02:00
|
|
|
]
|
|
|
|
|
2023-02-04 10:05:13 +01:00
|
|
|
[[package]]
|
|
|
|
name = "windows-sys"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.48.0"
|
2023-02-04 10:05:13 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
|
2023-02-04 10:05:13 +01:00
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"windows-targets 0.48.0",
|
2023-02-04 10:05:13 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "windows-targets"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "0.42.2"
|
2023-02-04 10:05:13 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
|
2023-02-04 10:05:13 +01:00
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"windows_aarch64_gnullvm 0.42.2",
|
|
|
|
"windows_aarch64_msvc 0.42.2",
|
|
|
|
"windows_i686_gnu 0.42.2",
|
|
|
|
"windows_i686_msvc 0.42.2",
|
|
|
|
"windows_x86_64_gnu 0.42.2",
|
|
|
|
"windows_x86_64_gnullvm 0.42.2",
|
|
|
|
"windows_x86_64_msvc 0.42.2",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "windows-targets"
|
|
|
|
version = "0.48.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5"
|
|
|
|
dependencies = [
|
|
|
|
"windows_aarch64_gnullvm 0.48.0",
|
|
|
|
"windows_aarch64_msvc 0.48.0",
|
|
|
|
"windows_i686_gnu 0.48.0",
|
|
|
|
"windows_i686_msvc 0.48.0",
|
|
|
|
"windows_x86_64_gnu 0.48.0",
|
|
|
|
"windows_x86_64_gnullvm 0.48.0",
|
|
|
|
"windows_x86_64_msvc 0.48.0",
|
2023-02-04 10:05:13 +01:00
|
|
|
]
|
|
|
|
|
2022-11-23 04:42:06 +01:00
|
|
|
[[package]]
|
|
|
|
name = "windows_aarch64_gnullvm"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "0.42.2"
|
2022-11-23 04:42:06 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
|
2022-11-23 04:42:06 +01:00
|
|
|
|
2023-05-01 16:29:20 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows_aarch64_gnullvm"
|
|
|
|
version = "0.48.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows_aarch64_msvc"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "0.42.2"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
|
2022-08-11 22:52:55 +02:00
|
|
|
|
2023-05-01 16:29:20 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows_aarch64_msvc"
|
|
|
|
version = "0.48.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows_i686_gnu"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "0.42.2"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
|
2022-08-11 22:52:55 +02:00
|
|
|
|
2023-05-01 16:29:20 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows_i686_gnu"
|
|
|
|
version = "0.48.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows_i686_msvc"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "0.42.2"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
|
2022-08-11 22:52:55 +02:00
|
|
|
|
2023-05-01 16:29:20 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows_i686_msvc"
|
|
|
|
version = "0.48.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows_x86_64_gnu"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "0.42.2"
|
2022-11-23 04:42:06 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
|
2022-11-23 04:42:06 +01:00
|
|
|
|
2023-05-01 16:29:20 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows_x86_64_gnu"
|
|
|
|
version = "0.48.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
|
|
|
|
|
2022-11-23 04:42:06 +01:00
|
|
|
[[package]]
|
|
|
|
name = "windows_x86_64_gnullvm"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "0.42.2"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
|
2022-08-11 22:52:55 +02:00
|
|
|
|
2023-05-01 16:29:20 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows_x86_64_gnullvm"
|
|
|
|
version = "0.48.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows_x86_64_msvc"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "0.42.2"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
|
2022-08-16 14:33:50 +02:00
|
|
|
|
2023-05-01 16:29:20 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows_x86_64_msvc"
|
|
|
|
version = "0.48.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
|
|
|
|
|
refactor(tvix/cli): use Wu-Manber string scanning for drv references
Switch out the string-scanning algorithm used in the reference scanner.
The construction of aho-corasick automata made up the vast majority of
runtime when evaluating nixpkgs previously. While the actual scanning
with a constructed automaton is relatively fast, we almost never scan
for the same set of strings twice and the cost is not worth it.
An algorithm that better matches our needs is the Wu-Manber multiple
string match algorithm, which works efficiently on *long* and *random*
strings of the *same length*, which describes store paths (up to their
hash component).
This switches the refscanner crate to a Rust implementation[0][1] of
this algorithm.
This has several implications:
1. This crate does not provide a way to scan streams. I'm not sure if
this is an inherent problem with the algorithm (probably not, but
it would need buffering). Either way, related functions and
tests (which were actually unused) have been removed.
2. All strings need to be of the same length. For this reason, we
truncate the known paths after their hash part (they are still
unique, of course).
3. Passing an empty set of matches, or a match that is shorter than
the length of a store path, causes the crate to panic. We safeguard
against this by completely skipping the refscanning if there are no
known paths (i.e. when evaluating the first derivation of an eval),
and by bailing out of scanning a string that is shorter than a
store path.
On the upside, this reduces overall runtime to less 1/5 of what it was
before when evaluating `pkgs.stdenv.drvPath`.
[0]: Frankly, it's a random, research-grade MIT-licensed
crate that I found on Github:
https://github.com/jneem/wu-manber
[1]: We probably want to rewrite or at least fork the above crate, and
add things like a three-byte wide scanner. Evaluating large
portions of nixpkgs can easily lead to more than 65k derivations
being scanned for.
Change-Id: I08926778e1e5d5a87fc9ac26e0437aed8bbd9eb0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8017
Tested-by: BuildkiteCI
Reviewed-by: flokli <flokli@flokli.de>
2023-02-02 13:51:59 +01:00
|
|
|
[[package]]
|
|
|
|
name = "wu-manber"
|
|
|
|
version = "0.1.0"
|
2023-07-30 00:38:55 +02:00
|
|
|
source = "git+https://github.com/tvlfyi/wu-manber.git#0d5b22bea136659f7de60b102a7030e0daaa503d"
|
refactor(tvix/cli): use Wu-Manber string scanning for drv references
Switch out the string-scanning algorithm used in the reference scanner.
The construction of aho-corasick automata made up the vast majority of
runtime when evaluating nixpkgs previously. While the actual scanning
with a constructed automaton is relatively fast, we almost never scan
for the same set of strings twice and the cost is not worth it.
An algorithm that better matches our needs is the Wu-Manber multiple
string match algorithm, which works efficiently on *long* and *random*
strings of the *same length*, which describes store paths (up to their
hash component).
This switches the refscanner crate to a Rust implementation[0][1] of
this algorithm.
This has several implications:
1. This crate does not provide a way to scan streams. I'm not sure if
this is an inherent problem with the algorithm (probably not, but
it would need buffering). Either way, related functions and
tests (which were actually unused) have been removed.
2. All strings need to be of the same length. For this reason, we
truncate the known paths after their hash part (they are still
unique, of course).
3. Passing an empty set of matches, or a match that is shorter than
the length of a store path, causes the crate to panic. We safeguard
against this by completely skipping the refscanning if there are no
known paths (i.e. when evaluating the first derivation of an eval),
and by bailing out of scanning a string that is shorter than a
store path.
On the upside, this reduces overall runtime to less 1/5 of what it was
before when evaluating `pkgs.stdenv.drvPath`.
[0]: Frankly, it's a random, research-grade MIT-licensed
crate that I found on Github:
https://github.com/jneem/wu-manber
[1]: We probably want to rewrite or at least fork the above crate, and
add things like a three-byte wide scanner. Evaluating large
portions of nixpkgs can easily lead to more than 65k derivations
being scanned for.
Change-Id: I08926778e1e5d5a87fc9ac26e0437aed8bbd9eb0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8017
Tested-by: BuildkiteCI
Reviewed-by: flokli <flokli@flokli.de>
2023-02-02 13:51:59 +01:00
|
|
|
|
2023-01-15 12:52:37 +01:00
|
|
|
[[package]]
|
|
|
|
name = "xml-rs"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.8.7"
|
2023-01-15 12:52:37 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "699d0104bcdd7e7af6d093d6c6e2d0c479b8a129ee0d1023b31d2e0c71bfdda2"
|
2023-01-15 12:52:37 +01:00
|
|
|
|
2022-08-16 14:33:50 +02:00
|
|
|
[[package]]
|
|
|
|
name = "yansi"
|
|
|
|
version = "0.5.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
|
2022-12-29 21:39:28 +01:00
|
|
|
|
2023-05-28 09:22:08 +02:00
|
|
|
[[package]]
|
|
|
|
name = "zerocopy"
|
|
|
|
version = "0.6.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "332f188cc1bcf1fe1064b8c58d150f497e697f49774aa846f2dc949d9a25f236"
|
|
|
|
dependencies = [
|
|
|
|
"byteorder",
|
|
|
|
"zerocopy-derive",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "zerocopy-derive"
|
|
|
|
version = "0.3.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "6505e6815af7de1746a08f69c69606bb45695a17149517680f3b2149713b19a3"
|
|
|
|
dependencies = [
|
|
|
|
"proc-macro2 1.0.56",
|
|
|
|
"quote 1.0.26",
|
|
|
|
"syn 1.0.109",
|
|
|
|
]
|
|
|
|
|
2022-12-29 21:39:28 +01:00
|
|
|
[[package]]
|
|
|
|
name = "zstd"
|
|
|
|
version = "0.9.2+zstd.1.5.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "2390ea1bf6c038c39674f22d95f0564725fc06034a47129179810b2fc58caa54"
|
|
|
|
dependencies = [
|
|
|
|
"zstd-safe",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "zstd-safe"
|
|
|
|
version = "4.1.3+zstd.1.5.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e99d81b99fb3c2c2c794e3fe56c305c63d5173a16a46b5850b07c935ffc7db79"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"zstd-sys",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "zstd-sys"
|
|
|
|
version = "1.6.2+zstd.1.5.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "2daf2f248d9ea44454bfcb2516534e8b8ad2fc91bf818a1885495fc42bc8ac9f"
|
|
|
|
dependencies = [
|
|
|
|
"cc",
|
|
|
|
"libc",
|
|
|
|
]
|