about summary refs log tree commit diff
path: root/pkgs/build-support
diff options
context:
space:
mode:
authorJohn Ericson <git@JohnEricson.me>2022-08-25 17:45:52 -0400
committerGitHub <noreply@github.com>2022-08-25 17:45:52 -0400
commit6a0d3815a30b5484e9df7b41990f6d8137808b62 (patch)
treec993e9cd6fe59a24484ef46e33bc480b8453ae28 /pkgs/build-support
parent53f45437c10b2c8e3d0eba150d09b9a7f6e5f624 (diff)
parent3291bda7b6aca51b1e2644e1adc7824c89530dc0 (diff)
Merge pull request #187975 from marius851000/rustRequiredFeatures
buildRustCrate: Do not compile binaries if all the requiredFeatures aren't enabled.
Diffstat (limited to 'pkgs/build-support')
-rw-r--r--pkgs/build-support/rust/build-rust-crate/build-crate.nix12
1 files changed, 11 insertions, 1 deletions
diff --git a/pkgs/build-support/rust/build-rust-crate/build-crate.nix b/pkgs/build-support/rust/build-rust-crate/build-crate.nix
index b24398665a10b..37bf3ec26f770 100644
--- a/pkgs/build-support/rust/build-rust-crate/build-crate.nix
+++ b/pkgs/build-support/rust/build-rust-crate/build-crate.nix
@@ -69,7 +69,15 @@
 
 
 
-    ${lib.optionalString (lib.length crateBin > 0) (lib.concatMapStringsSep "\n" (bin: ''
+    ${lib.optionalString (lib.length crateBin > 0) (lib.concatMapStringsSep "\n" (bin:
+    let
+      haveRequiredFeature = if bin ? requiredFeatures then
+        # Check that all element in requiredFeatures are also present in crateFeatures
+        lib.intersectLists bin.requiredFeatures crateFeatures == bin.requiredFeatures
+      else
+        true;
+    in
+    if haveRequiredFeature then ''
       mkdir -p target/bin
       BIN_NAME='${bin.name or crateName}'
       ${if !bin ? path then ''
@@ -79,6 +87,8 @@
         BIN_PATH='${bin.path}'
       ''}
         ${build_bin} "$BIN_NAME" "$BIN_PATH"
+    '' else ''
+      echo Binary ${bin.name or crateName} not compiled due to not having all of the required features -- ${lib.escapeShellArg (builtins.toJSON bin.requiredFeatures)} -- enabled.
     '') crateBin)}
 
     ${lib.optionalString buildTests ''