diff options
author | John Ericson <git@JohnEricson.me> | 2022-08-25 17:45:52 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-25 17:45:52 -0400 |
commit | 6a0d3815a30b5484e9df7b41990f6d8137808b62 (patch) | |
tree | c993e9cd6fe59a24484ef46e33bc480b8453ae28 /pkgs/build-support | |
parent | 53f45437c10b2c8e3d0eba150d09b9a7f6e5f624 (diff) | |
parent | 3291bda7b6aca51b1e2644e1adc7824c89530dc0 (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.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 '' |