From 9019d8568e845afe9f2621bf3d5e1918a8ff5cf9 Mon Sep 17 00:00:00 2001 From: Connor Brewster Date: Fri, 6 Oct 2023 21:17:35 -0500 Subject: [PATCH] fix(tvix/store): Remove virtiofs from default features vhost-user-backend doesn't support macOS yet, so the virtiofs features will not work on macOS. This removes it as a default feature which makes `cargo build` work out of the box on macOS. The `virtiofs` feature is enabled for Linux when building via Nix, but if being built by cargo directly, the feature must be enabled via a cargo flag. Change-Id: I2aaca9582f8e3dbcf9ee5f1b9831d614909f3799 Reviewed-on: https://cl.tvl.fyi/c/depot/+/9555 Reviewed-by: flokli Tested-by: BuildkiteCI Autosubmit: Connor Brewster --- tvix/Cargo.nix | 2 +- tvix/default.nix | 3 +++ tvix/store/Cargo.toml | 2 +- tvix/store/default.nix | 3 ++- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/tvix/Cargo.nix b/tvix/Cargo.nix index f0eb27a6e..e5ca16793 100644 --- a/tvix/Cargo.nix +++ b/tvix/Cargo.nix @@ -8880,7 +8880,7 @@ rec { } ]; features = { - "default" = [ "fuse" "virtiofs" "tonic-reflection" ]; + "default" = [ "fuse" "tonic-reflection" ]; "fs" = [ "dep:libc" "dep:fuse-backend-rs" ]; "fuse" = [ "fs" ]; "tonic-reflection" = [ "dep:tonic-reflection" "tvix-castore/tonic-reflection" ]; diff --git a/tvix/default.nix b/tvix/default.nix index 94f50b29b..34acde434 100644 --- a/tvix/default.nix +++ b/tvix/default.nix @@ -5,6 +5,8 @@ let # crate override for crates that need protobuf protobufDep = prev: (prev.nativeBuildInputs or [ ]) ++ [ pkgs.protobuf ]; iconvDarwinDep = lib.optionals pkgs.stdenv.isDarwin [ pkgs.libiconv ]; + # fuse-backend-rs uses DiskArbitration framework to handle mount/unmount on Darwin + diskArbitrationDep = lib.optionals pkgs.stdenv.isDarwin [ pkgs.buildPackages.darwin.apple_sdk.frameworks.DiskArbitration ]; # Load the crate2nix crate tree. crates = import ./Cargo.nix { @@ -44,6 +46,7 @@ let tvix-store = prev: { PROTO_ROOT = depot.tvix.proto; nativeBuildInputs = protobufDep prev; + buildInputs = prev.buildInputs or [ ] ++ diskArbitrationDep; }; }; }; diff --git a/tvix/store/Cargo.toml b/tvix/store/Cargo.toml index d566ebed7..41a19d7ed 100644 --- a/tvix/store/Cargo.toml +++ b/tvix/store/Cargo.toml @@ -80,7 +80,7 @@ tempfile = "3.3.0" tonic-mock = { git = "https://github.com/brainrake/tonic-mock", branch = "bump-dependencies" } [features] -default = ["fuse", "virtiofs", "tonic-reflection"] +default = ["fuse", "tonic-reflection"] fs = ["dep:libc", "dep:fuse-backend-rs"] virtiofs = [ "fs", diff --git a/tvix/store/default.nix b/tvix/store/default.nix index 0372047e9..35d2a22bb 100644 --- a/tvix/store/default.nix +++ b/tvix/store/default.nix @@ -25,7 +25,8 @@ in (depot.tvix.crates.workspaceMembers.tvix-store.build.override { runTests = true; # virtiofs feature currently fails to build on Darwin. - features = if pkgs.stdenv.isDarwin then [ "fuse" "tonic-reflection" ] else [ "default" ]; + # we however can ship it for non-darwin. + features = if pkgs.stdenv.isDarwin then [ "default" ] else [ "default" "virtiofs" ]; }).overrideAttrs (_: { meta.ci.extraSteps = { import-docs = (mkImportCheck "tvix/store/docs" ./docs);