diff options
author | Florian Klink <flokli@flokli.de> | 2023-12-16T22·16+0200 |
---|---|---|
committer | flokli <flokli@flokli.de> | 2023-12-22T16·55+0000 |
commit | a5167c508cf2ed92f8a39696a6b4376cf25ee872 (patch) | |
tree | 5ffb2f8d0d331b6fea1aeb4f6391e0408df6d234 /tvix/Cargo.nix | |
parent | 52cad8619511b97c4bcd5768ce9b3579ff665505 (diff) |
chore(tvix): move store/fs to castore/fs r/7256
With the recent introduction of the RootNodes trait, there's nothing in the fs module pulling in tvix-store dependencies, so it can live in tvix-castore. This allows other crates to make use of TvixStoreFS, without having to pull in tvix-store. For example, a tvix-build using a fuse mountpoint at /nix/store doesn't need a PathInfoService to hold the root nodes that should be present, but just a list. tvix-store now has a pathinfoservice/fs module, which contains the necessary glue logic to implement the RootNodes trait for a PathInfoService. To satisfy Rust orphan rules for trait implementations, we had to add a small wrapper struct. It's mostly hidden away by the make_fs helper function returning a TvixStoreFs. It can't be entirely private, as its still leaking into the concrete type of TvixStoreFS. tvix-store still has `fuse` and `virtiofs` features, but they now simply enable these features in the `tvix-castore` crate they depend on. The tests for the fuse functionality stay in tvix-store for now, as they populate the root nodes through a PathInfoService. Once above mentioned "list of root nodes" implementation exists, we might want to shuffle this around one more time. Fixes b/341. Change-Id: I989f664827a5a361b23b34368d242d10c157c756 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10378 Autosubmit: flokli <flokli@flokli.de> Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
Diffstat (limited to 'tvix/Cargo.nix')
-rw-r--r-- | tvix/Cargo.nix | 104 |
1 files changed, 55 insertions, 49 deletions
diff --git a/tvix/Cargo.nix b/tvix/Cargo.nix index 2c9120376871..5bae02070bcb 100644 --- a/tvix/Cargo.nix +++ b/tvix/Cargo.nix @@ -9609,6 +9609,11 @@ rec { packageId = "data-encoding"; } { + name = "fuse-backend-rs"; + packageId = "fuse-backend-rs"; + optional = true; + } + { name = "futures"; packageId = "futures"; } @@ -9617,6 +9622,15 @@ rec { packageId = "lazy_static"; } { + name = "libc"; + packageId = "libc"; + optional = true; + } + { + name = "parking_lot"; + packageId = "parking_lot 0.12.1"; + } + { name = "pin-project-lite"; packageId = "pin-project-lite"; } @@ -9669,6 +9683,36 @@ rec { packageId = "url"; } { + name = "vhost"; + packageId = "vhost"; + optional = true; + } + { + name = "vhost-user-backend"; + packageId = "vhost-user-backend"; + optional = true; + } + { + name = "virtio-bindings"; + packageId = "virtio-bindings 0.2.1"; + optional = true; + } + { + name = "virtio-queue"; + packageId = "virtio-queue"; + optional = true; + } + { + name = "vm-memory"; + packageId = "vm-memory"; + optional = true; + } + { + name = "vmm-sys-util"; + packageId = "vmm-sys-util"; + optional = true; + } + { name = "walkdir"; packageId = "walkdir"; } @@ -9702,9 +9746,12 @@ rec { } ]; features = { + "fs" = [ "dep:libc" "dep:fuse-backend-rs" ]; + "fuse" = [ "fs" ]; "tonic-reflection" = [ "dep:tonic-reflection" ]; + "virtiofs" = [ "fs" "dep:vhost" "dep:vhost-user-backend" "dep:virtio-queue" "dep:vm-memory" "dep:vmm-sys-util" "dep:virtio-bindings" "fuse-backend-rs?/vhost-user-fs" "fuse-backend-rs?/virtiofs" ]; }; - resolvedDefaultFeatures = [ "default" "tonic-reflection" ]; + resolvedDefaultFeatures = [ "default" "fs" "fuse" "tonic-reflection" "virtiofs" ]; }; "tvix-cli" = rec { crateName = "tvix-cli"; @@ -10111,11 +10158,6 @@ rec { packageId = "data-encoding"; } { - name = "fuse-backend-rs"; - packageId = "fuse-backend-rs"; - optional = true; - } - { name = "futures"; packageId = "futures"; } @@ -10124,20 +10166,11 @@ rec { packageId = "lazy_static"; } { - name = "libc"; - packageId = "libc"; - optional = true; - } - { name = "nix-compat"; packageId = "nix-compat"; features = [ "async" ]; } { - name = "parking_lot"; - packageId = "parking_lot 0.12.1"; - } - { name = "pin-project-lite"; packageId = "pin-project-lite"; } @@ -10215,36 +10248,6 @@ rec { packageId = "url"; } { - name = "vhost"; - packageId = "vhost"; - optional = true; - } - { - name = "vhost-user-backend"; - packageId = "vhost-user-backend"; - optional = true; - } - { - name = "virtio-bindings"; - packageId = "virtio-bindings 0.2.1"; - optional = true; - } - { - name = "virtio-queue"; - packageId = "virtio-queue"; - optional = true; - } - { - name = "vm-memory"; - packageId = "vm-memory"; - optional = true; - } - { - name = "vmm-sys-util"; - packageId = "vmm-sys-util"; - optional = true; - } - { name = "walkdir"; packageId = "walkdir"; } @@ -10265,6 +10268,10 @@ rec { ]; devDependencies = [ { + name = "libc"; + packageId = "libc"; + } + { name = "tempfile"; packageId = "tempfile"; } @@ -10279,12 +10286,11 @@ rec { ]; features = { "default" = [ "fuse" "tonic-reflection" ]; - "fs" = [ "dep:libc" "dep:fuse-backend-rs" ]; - "fuse" = [ "fs" ]; + "fuse" = [ "tvix-castore/fuse" ]; "tonic-reflection" = [ "dep:tonic-reflection" "tvix-castore/tonic-reflection" ]; - "virtiofs" = [ "fs" "dep:vhost" "dep:vhost-user-backend" "dep:virtio-queue" "dep:vm-memory" "dep:vmm-sys-util" "dep:virtio-bindings" "fuse-backend-rs?/vhost-user-fs" "fuse-backend-rs?/virtiofs" ]; + "virtiofs" = [ "tvix-castore/virtiofs" ]; }; - resolvedDefaultFeatures = [ "default" "fs" "fuse" "tonic-reflection" "virtiofs" ]; + resolvedDefaultFeatures = [ "default" "fuse" "tonic-reflection" "virtiofs" ]; }; "typenum" = rec { crateName = "typenum"; |