refactor(tvix/nix-compat): reorganize wire and bytes
Move everything bytes-related into its own module, and re-export both bytes and primitive in a flat space from wire/mod.rs. Expose this if a `wire` feature flag is set. We only have `async` stuff in here. Change-Id: Ia4ce4791f13a5759901cc9d6ce6bd6bbcca587c7 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11389 Autosubmit: flokli <flokli@flokli.de> Reviewed-by: raitobezarius <tvl@lahfa.xyz> Tested-by: BuildkiteCI Reviewed-by: Brian Olsen <me@griff.name>
This commit is contained in:
parent
839c971a0f
commit
36b296609b
12 changed files with 69 additions and 96 deletions
9
users/picnoir/tvix-daemon/Cargo.lock
generated
9
users/picnoir/tvix-daemon/Cargo.lock
generated
|
@ -441,12 +441,6 @@ version = "0.3.30"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
|
||||
|
||||
[[package]]
|
||||
name = "futures-io"
|
||||
version = "0.3.30"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
|
||||
|
||||
[[package]]
|
||||
name = "futures-macro"
|
||||
version = "0.3.30"
|
||||
|
@ -477,10 +471,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"futures-io",
|
||||
"futures-macro",
|
||||
"futures-task",
|
||||
"memchr",
|
||||
"pin-project-lite",
|
||||
"pin-utils",
|
||||
"slab",
|
||||
|
@ -753,7 +745,6 @@ dependencies = [
|
|||
"ed25519",
|
||||
"ed25519-dalek",
|
||||
"enum-primitive-derive",
|
||||
"futures-util",
|
||||
"glob",
|
||||
"nom",
|
||||
"num-traits",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# This file was @generated by crate2nix 0.12.0 with the command:
|
||||
# "generate"
|
||||
# This file was @generated by crate2nix 0.13.0 with the command:
|
||||
# "generate" "--all-features"
|
||||
# See https://github.com/kolloch/crate2nix for more info.
|
||||
|
||||
{ nixpkgs ? <nixpkgs>
|
||||
|
@ -1386,16 +1386,6 @@ rec {
|
|||
};
|
||||
resolvedDefaultFeatures = [ "alloc" "default" "std" ];
|
||||
};
|
||||
"futures-io" = rec {
|
||||
crateName = "futures-io";
|
||||
version = "0.3.30";
|
||||
edition = "2018";
|
||||
sha256 = "1hgh25isvsr4ybibywhr4dpys8mjnscw4wfxxwca70cn1gi26im4";
|
||||
features = {
|
||||
"default" = [ "std" ];
|
||||
};
|
||||
resolvedDefaultFeatures = [ "std" ];
|
||||
};
|
||||
"futures-macro" = rec {
|
||||
crateName = "futures-macro";
|
||||
version = "0.3.30";
|
||||
|
@ -1452,13 +1442,6 @@ rec {
|
|||
packageId = "futures-core";
|
||||
usesDefaultFeatures = false;
|
||||
}
|
||||
{
|
||||
name = "futures-io";
|
||||
packageId = "futures-io";
|
||||
optional = true;
|
||||
usesDefaultFeatures = false;
|
||||
features = [ "std" ];
|
||||
}
|
||||
{
|
||||
name = "futures-macro";
|
||||
packageId = "futures-macro";
|
||||
|
@ -1470,11 +1453,6 @@ rec {
|
|||
packageId = "futures-task";
|
||||
usesDefaultFeatures = false;
|
||||
}
|
||||
{
|
||||
name = "memchr";
|
||||
packageId = "memchr";
|
||||
optional = true;
|
||||
}
|
||||
{
|
||||
name = "pin-project-lite";
|
||||
packageId = "pin-project-lite";
|
||||
|
@ -1511,7 +1489,7 @@ rec {
|
|||
"unstable" = [ "futures-core/unstable" "futures-task/unstable" ];
|
||||
"write-all-vectored" = [ "io" ];
|
||||
};
|
||||
resolvedDefaultFeatures = [ "alloc" "async-await" "async-await-macro" "default" "futures-io" "futures-macro" "io" "memchr" "slab" "std" ];
|
||||
resolvedDefaultFeatures = [ "alloc" "async-await" "async-await-macro" "default" "futures-macro" "slab" "std" ];
|
||||
};
|
||||
"generic-array" = rec {
|
||||
crateName = "generic-array";
|
||||
|
@ -2340,12 +2318,6 @@ rec {
|
|||
name = "enum-primitive-derive";
|
||||
packageId = "enum-primitive-derive";
|
||||
}
|
||||
{
|
||||
name = "futures-util";
|
||||
packageId = "futures-util";
|
||||
optional = true;
|
||||
features = [ "io" ];
|
||||
}
|
||||
{
|
||||
name = "glob";
|
||||
packageId = "glob";
|
||||
|
@ -2394,12 +2366,13 @@ rec {
|
|||
}
|
||||
];
|
||||
features = {
|
||||
"async" = [ "futures-util" "tokio" "pin-project-lite" ];
|
||||
"async" = [ "futures-util" ];
|
||||
"futures-util" = [ "dep:futures-util" ];
|
||||
"pin-project-lite" = [ "dep:pin-project-lite" ];
|
||||
"tokio" = [ "dep:tokio" ];
|
||||
"wire" = [ "tokio" "pin-project-lite" ];
|
||||
};
|
||||
resolvedDefaultFeatures = [ "async" "futures-util" "pin-project-lite" "tokio" ];
|
||||
resolvedDefaultFeatures = [ "pin-project-lite" "tokio" "wire" ];
|
||||
};
|
||||
"nom" = rec {
|
||||
crateName = "nom";
|
||||
|
@ -4153,7 +4126,7 @@ rec {
|
|||
{
|
||||
name = "nix-compat";
|
||||
packageId = "nix-compat";
|
||||
features = [ "async" ];
|
||||
features = [ "wire" ];
|
||||
}
|
||||
{
|
||||
name = "tokio";
|
||||
|
@ -5193,6 +5166,7 @@ rec {
|
|||
(
|
||||
_: {
|
||||
buildTests = true;
|
||||
release = false;
|
||||
}
|
||||
);
|
||||
# If the user hasn't set any pre/post commands, we don't want to
|
||||
|
@ -5217,6 +5191,16 @@ rec {
|
|||
# recreate a file hierarchy as when running tests with cargo
|
||||
|
||||
# the source for test data
|
||||
# It's necessary to locate the source in $NIX_BUILD_TOP/source/
|
||||
# instead of $NIX_BUILD_TOP/
|
||||
# because we compiled those test binaries in the former and not the latter.
|
||||
# So all paths will expect source tree to be there and not in the build top directly.
|
||||
# For example: $NIX_BUILD_TOP := /build in general, if you ask yourself.
|
||||
# TODO(raitobezarius): I believe there could be more edge cases if `crate.sourceRoot`
|
||||
# do exist but it's very hard to reason about them, so let's wait until the first bug report.
|
||||
mkdir -p source/
|
||||
cd source/
|
||||
|
||||
${pkgs.buildPackages.xorg.lndir}/bin/lndir ${crate.src}
|
||||
|
||||
# build outputs
|
||||
|
|
|
@ -4,7 +4,7 @@ version = "0.1.0"
|
|||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
nix-compat = { path = "../../../tvix/nix-compat/", features = ["async"] }
|
||||
nix-compat = { path = "../../../tvix/nix-compat", features = ["wire"] }
|
||||
tokio-listener = "0.3.1"
|
||||
tokio = { version = "1.36.0", features = ["full"] }
|
||||
tracing-subscriber = "0.3.18"
|
||||
|
|
|
@ -4,7 +4,7 @@ use tokio_listener::{self, SystemOptions, UserOptions};
|
|||
use tracing::{debug, error, info, instrument, Level};
|
||||
|
||||
use nix_compat::wire::{
|
||||
primitive,
|
||||
self,
|
||||
worker_protocol::{self, server_handshake_client, ClientSettings, Trust},
|
||||
};
|
||||
|
||||
|
@ -80,7 +80,7 @@ where
|
|||
// TODO: implement logging. For now, we'll just send
|
||||
// STDERR_LAST, which is good enough to get Nix respond to
|
||||
// us.
|
||||
primitive::write_u64(&mut client_connection.conn, worker_protocol::STDERR_LAST)
|
||||
wire::write_u64(&mut client_connection.conn, worker_protocol::STDERR_LAST)
|
||||
.await
|
||||
.unwrap();
|
||||
loop {
|
||||
|
@ -112,6 +112,6 @@ where
|
|||
worker_protocol::read_client_settings(&mut conn.conn, conn.version_minor).await?;
|
||||
// The client expects us to send some logs when we're processing
|
||||
// the settings. Sending STDERR_LAST signal we're done processing.
|
||||
primitive::write_u64(&mut conn.conn, worker_protocol::STDERR_LAST).await?;
|
||||
wire::write_u64(&mut conn.conn, worker_protocol::STDERR_LAST).await?;
|
||||
Ok(settings)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue