From 36b296609b0d4db633f78a6fa3685f61227af94a Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Wed, 10 Apr 2024 14:54:11 +0300 Subject: 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 Reviewed-by: raitobezarius Tested-by: BuildkiteCI Reviewed-by: Brian Olsen --- users/picnoir/tvix-daemon/Cargo.lock | 9 ------ users/picnoir/tvix-daemon/Cargo.nix | 52 ++++++++++++----------------------- users/picnoir/tvix-daemon/Cargo.toml | 2 +- users/picnoir/tvix-daemon/src/main.rs | 6 ++-- 4 files changed, 22 insertions(+), 47 deletions(-) (limited to 'users') diff --git a/users/picnoir/tvix-daemon/Cargo.lock b/users/picnoir/tvix-daemon/Cargo.lock index b3b7e43af5..683203f5ca 100644 --- a/users/picnoir/tvix-daemon/Cargo.lock +++ b/users/picnoir/tvix-daemon/Cargo.lock @@ -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", diff --git a/users/picnoir/tvix-daemon/Cargo.nix b/users/picnoir/tvix-daemon/Cargo.nix index 8dc9b54175..d73a65c821 100644 --- a/users/picnoir/tvix-daemon/Cargo.nix +++ b/users/picnoir/tvix-daemon/Cargo.nix @@ -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 ? @@ -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 diff --git a/users/picnoir/tvix-daemon/Cargo.toml b/users/picnoir/tvix-daemon/Cargo.toml index 091116f5b5..2aca99f201 100644 --- a/users/picnoir/tvix-daemon/Cargo.toml +++ b/users/picnoir/tvix-daemon/Cargo.toml @@ -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" diff --git a/users/picnoir/tvix-daemon/src/main.rs b/users/picnoir/tvix-daemon/src/main.rs index 82220637c6..3350100128 100644 --- a/users/picnoir/tvix-daemon/src/main.rs +++ b/users/picnoir/tvix-daemon/src/main.rs @@ -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) } -- cgit 1.4.1