From bc5e8ae506d1d25cd62560e6bc626cf334f7336f Mon Sep 17 00:00:00 2001 From: Faye Duxovni Date: Fri, 15 Apr 2022 20:13:47 -0400 Subject: [PATCH] buildRustCrate: don't try to set CARGO_FEATURE_ variables for dep: features These features are internal-only, have special characters that bash doesn't support in variable names, and aren't normally given environment variables by cargo as far as I can tell. --- pkgs/build-support/rust/build-rust-crate/default.nix | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pkgs/build-support/rust/build-rust-crate/default.nix b/pkgs/build-support/rust/build-rust-crate/default.nix index afb938e51182..20b93b1921f8 100644 --- a/pkgs/build-support/rust/build-rust-crate/default.nix +++ b/pkgs/build-support/rust/build-rust-crate/default.nix @@ -277,9 +277,14 @@ crate_: lib.makeOverridable # Create a list of features that are enabled by the crate itself and # through the features argument of buildRustCrate. Exclude features - # with a forward slash, since they are passed through to dependencies. + # with a forward slash, since they are passed through to dependencies, + # and dep: features, since they're internal-only and do nothing except + # enable optional dependencies. crateFeatures = lib.optionals (crate ? features) - (builtins.filter (f: !lib.hasInfix "/" f) (crate.features ++ features)); + (builtins.filter + (f: !(lib.hasInfix "/" f || lib.hasPrefix "dep:" f)) + (crate.features ++ features) + ); libName = if crate ? libName then crate.libName else crate.crateName; libPath = if crate ? libPath then crate.libPath else "";