From 10717605a2ceb736d1c1ad215f8a92ef30dd85c3 Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Tue, 26 Sep 2023 09:50:23 +0300 Subject: chore(third_party/crate2nix): bump crate2nix to current HEAD This will bring conditional features support. Also invoke crate2nixgenerate with the --all-features argument, so all dependencies, including the ones for optional features are included in the Cargo.nix file. Change-Id: I3bbcb200c9b481f660db89efba650ea4f7418a63 Reviewed-on: https://cl.tvl.fyi/c/depot/+/9470 Reviewed-by: raitobezarius Autosubmit: flokli Tested-by: BuildkiteCI --- third_party/overlays/tvl.nix | 14 +++++++------- tvix/Cargo.nix | 38 ++++++++++++++++++++++++-------------- tvix/default.nix | 2 +- 3 files changed, 32 insertions(+), 22 deletions(-) diff --git a/third_party/overlays/tvl.nix b/third_party/overlays/tvl.nix index 69b119a48959..ec7506ee4107 100644 --- a/third_party/overlays/tvl.nix +++ b/third_party/overlays/tvl.nix @@ -1,6 +1,6 @@ # This overlay is used to make TVL-specific modifications in the # nixpkgs tree, where required. -{ depot, localSystem, ... }: +{ lib, depot, localSystem, ... }: self: super: let @@ -109,20 +109,20 @@ depot.nix.readTree.drvTargets { })); # Pin a newer version of crate2nix from git, which is not officially - # released but supports `dep:` + # released but supports `dep:` and conditional features crate2nix = super.crate2nix.overrideAttrs (old: rec { - version = "0.11.0-rc.1"; + version = "unstable-2023-09-26"; src = self.fetchFromGitHub { - owner = "kolloch"; + owner = "nix-community"; repo = "crate2nix"; - rev = "v0.11.0-rc.1"; - hash = "sha256:02yvn61w16sgkdxa019l5y9i2ybyk8h4516718gmarqxx5ws2kz8"; + rev = "8a33aec8795dcc98afbb0cd1030bb1c939ede211"; + hash = "sha256-eFT2SUxTopxEvW0rcxSjQU6nbrQLI2FbyaVgtV8oiTk="; }; cargoDeps = old.cargoDeps.overrideAttrs (_: { inherit src; - outputHash = "sha256:03yny9ikqzfpi2mr27r82g54an2s8k9lqi2i4fqalg7g0s2cr2yd"; + outputHash = "sha256-elEIWHxyY3iccprIcbQA6GWFiq/n5kozpGfw/OmoSIg="; }); }); } diff --git a/tvix/Cargo.nix b/tvix/Cargo.nix index 297825787ae1..f88f64291ae4 100644 --- a/tvix/Cargo.nix +++ b/tvix/Cargo.nix @@ -1,5 +1,5 @@ -# This file was @generated by crate2nix 0.10.0 with the command: -# "generate" +# This file was @generated by crate2nix 0.11.0-rc.4 with the command: +# "generate" "--all-features" # See https://github.com/kolloch/crate2nix for more info. { nixpkgs ? @@ -4102,7 +4102,7 @@ rec { # We can't filter paths with references in Nix 2.4 # See https://github.com/NixOS/nix/issues/5410 src = - if (lib.versionOlder builtins.nixVersion "2.4pre20211007") + if ((lib.versionOlder builtins.nixVersion "2.4pre20211007") || (lib.versionOlder "2.5" builtins.nixVersion)) then lib.cleanSourceWith { filter = sourceFilter; src = ./nix_cli; } else ./nix_cli; dependencies = [ @@ -4125,7 +4125,7 @@ rec { # We can't filter paths with references in Nix 2.4 # See https://github.com/NixOS/nix/issues/5410 src = - if (lib.versionOlder builtins.nixVersion "2.4pre20211007") + if ((lib.versionOlder builtins.nixVersion "2.4pre20211007") || (lib.versionOlder "2.5" builtins.nixVersion)) then lib.cleanSourceWith { filter = sourceFilter; src = ./nix-compat; } else ./nix-compat; dependencies = [ @@ -8293,7 +8293,7 @@ rec { # We can't filter paths with references in Nix 2.4 # See https://github.com/NixOS/nix/issues/5410 src = - if (lib.versionOlder builtins.nixVersion "2.4pre20211007") + if ((lib.versionOlder builtins.nixVersion "2.4pre20211007") || (lib.versionOlder "2.5" builtins.nixVersion)) then lib.cleanSourceWith { filter = sourceFilter; src = ./castore; } else ./castore; dependencies = [ @@ -8425,7 +8425,7 @@ rec { # We can't filter paths with references in Nix 2.4 # See https://github.com/NixOS/nix/issues/5410 src = - if (lib.versionOlder builtins.nixVersion "2.4pre20211007") + if ((lib.versionOlder builtins.nixVersion "2.4pre20211007") || (lib.versionOlder "2.5" builtins.nixVersion)) then lib.cleanSourceWith { filter = sourceFilter; src = ./cli; } else ./cli; dependencies = [ @@ -8488,7 +8488,7 @@ rec { # We can't filter paths with references in Nix 2.4 # See https://github.com/NixOS/nix/issues/5410 src = - if (lib.versionOlder builtins.nixVersion "2.4pre20211007") + if ((lib.versionOlder builtins.nixVersion "2.4pre20211007") || (lib.versionOlder "2.5" builtins.nixVersion)) then lib.cleanSourceWith { filter = sourceFilter; src = ./eval; } else ./eval; libName = "tvix_eval"; @@ -8624,7 +8624,7 @@ rec { # We can't filter paths with references in Nix 2.4 # See https://github.com/NixOS/nix/issues/5410 src = - if (lib.versionOlder builtins.nixVersion "2.4pre20211007") + if ((lib.versionOlder builtins.nixVersion "2.4pre20211007") || (lib.versionOlder "2.5" builtins.nixVersion)) then lib.cleanSourceWith { filter = sourceFilter; src = ./eval/builtin-macros; } else ./eval/builtin-macros; procMacro = true; @@ -8661,7 +8661,7 @@ rec { # We can't filter paths with references in Nix 2.4 # See https://github.com/NixOS/nix/issues/5410 src = - if (lib.versionOlder builtins.nixVersion "2.4pre20211007") + if ((lib.versionOlder builtins.nixVersion "2.4pre20211007") || (lib.versionOlder "2.5" builtins.nixVersion)) then lib.cleanSourceWith { filter = sourceFilter; src = ./serde; } else ./serde; dependencies = [ @@ -8691,7 +8691,7 @@ rec { # We can't filter paths with references in Nix 2.4 # See https://github.com/NixOS/nix/issues/5410 src = - if (lib.versionOlder builtins.nixVersion "2.4pre20211007") + if ((lib.versionOlder builtins.nixVersion "2.4pre20211007") || (lib.versionOlder "2.5" builtins.nixVersion)) then lib.cleanSourceWith { filter = sourceFilter; src = ./store; } else ./store; dependencies = [ @@ -11624,11 +11624,21 @@ rec { explicitFeatures = dependency.features or [ ]; additionalDependencyFeatures = let - dependencyPrefix = (dependency.rename or dependency.name) + "/"; - dependencyFeatures = - builtins.filter (f: lib.hasPrefix dependencyPrefix f) features; + name = dependency.rename or dependency.name; + stripPrefixMatch = prefix: s: + if lib.hasPrefix prefix s + then lib.removePrefix prefix s + else null; + extractFeature = feature: lib.findFirst + (f: f != null) + null + (map (prefix: stripPrefixMatch prefix feature) [ + (name + "/") + (name + "?/") + ]); + dependencyFeatures = lib.filter (f: f != null) (map extractFeature features); in - builtins.map (lib.removePrefix dependencyPrefix) dependencyFeatures; + dependencyFeatures; in defaultOrNil ++ explicitFeatures ++ additionalDependencyFeatures; diff --git a/tvix/default.nix b/tvix/default.nix index 57ff82bf2e9a..d8027213f68e 100644 --- a/tvix/default.nix +++ b/tvix/default.nix @@ -72,7 +72,7 @@ in # Run crate2nix generate in the current working directory, then # format the generated file with depotfmt. crate2nixGenerate = pkgs.writeShellScriptBin "crate2nix-generate" '' - ${pkgs.crate2nix}/bin/crate2nix generate + ${pkgs.crate2nix}/bin/crate2nix generate --all-features ${depot.tools.depotfmt}/bin/depotfmt Cargo.nix ''; -- cgit 1.4.1