diff options
author | marius david <marius@mariusdavid.fr> | 2022-08-23 13:09:33 +0200 |
---|---|---|
committer | marius david <marius@mariusdavid.fr> | 2022-08-23 13:09:33 +0200 |
commit | 3291bda7b6aca51b1e2644e1adc7824c89530dc0 (patch) | |
tree | 8c3064bcc006b9b1d29f25133a5d780995ce3c0f /pkgs/build-support | |
parent | c83b87fecd1a86d6a1861667664e6f45eb76d763 (diff) |
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.nix | 12 |
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 '' |