summary refs log tree commit diff
path: root/pkgs/build-support/rust
diff options
context:
space:
mode:
authorfigsoda <figsoda@pm.me>2021-10-26 22:41:37 -0400
committerfigsoda <figsoda@pm.me>2021-10-27 08:08:03 -0400
commit5a08a28803d56b241e8f8d693ba6d8f9dbafe847 (patch)
tree77f3cc13e3657315ca75ac8980ca2a464e94096f /pkgs/build-support/rust
parentb6a580b9b381bf8e614f73d781a85cf16ddd5109 (diff)
downloadnixpkgs-5a08a28803d56b241e8f8d693ba6d8f9dbafe847.tar
nixpkgs-5a08a28803d56b241e8f8d693ba6d8f9dbafe847.tar.gz
nixpkgs-5a08a28803d56b241e8f8d693ba6d8f9dbafe847.tar.bz2
nixpkgs-5a08a28803d56b241e8f8d693ba6d8f9dbafe847.tar.lz
nixpkgs-5a08a28803d56b241e8f8d693ba6d8f9dbafe847.tar.xz
nixpkgs-5a08a28803d56b241e8f8d693ba6d8f9dbafe847.tar.zst
nixpkgs-5a08a28803d56b241e8f8d693ba6d8f9dbafe847.zip
rustPlatform: add support for features
Diffstat (limited to 'pkgs/build-support/rust')
-rw-r--r--pkgs/build-support/rust/default.nix12
-rw-r--r--pkgs/build-support/rust/hooks/cargo-build-hook.sh10
-rw-r--r--pkgs/build-support/rust/hooks/cargo-check-hook.sh11
3 files changed, 32 insertions, 1 deletions
diff --git a/pkgs/build-support/rust/default.nix b/pkgs/build-support/rust/default.nix
index 3d7057dd7d9..2cfd8d17286 100644
--- a/pkgs/build-support/rust/default.nix
+++ b/pkgs/build-support/rust/default.nix
@@ -36,6 +36,10 @@
 , cargoLock ? null
 , cargoVendorDir ? null
 , checkType ? buildType
+, buildNoDefaultFeatures ? false
+, checkNoDefaultFeatures ? buildNoDefaultFeatures
+, buildFeatures ? [ ]
+, checkFeatures ? buildFeatures
 , depsExtraArgs ? {}
 
 # Toggles whether a custom sysroot is created when the target is a .json file.
@@ -103,6 +107,14 @@ stdenv.mkDerivation ((removeAttrs args [ "depsExtraArgs" "cargoLock" ]) // lib.o
 
   cargoCheckType = checkType;
 
+  cargoBuildNoDefaultFeatures = buildNoDefaultFeatures;
+
+  cargoCheckNoDefaultFeatures = checkNoDefaultFeatures;
+
+  cargoBuildFeatures = buildFeatures;
+
+  cargoCheckFeatures = checkFeatures;
+
   patchRegistryDeps = ./patch-registry-deps;
 
   nativeBuildInputs = nativeBuildInputs ++ [
diff --git a/pkgs/build-support/rust/hooks/cargo-build-hook.sh b/pkgs/build-support/rust/hooks/cargo-build-hook.sh
index c10120c5aa1..54ed765012b 100644
--- a/pkgs/build-support/rust/hooks/cargo-build-hook.sh
+++ b/pkgs/build-support/rust/hooks/cargo-build-hook.sh
@@ -13,6 +13,14 @@ cargoBuildHook() {
         cargoBuildProfileFlag="--${cargoBuildType}"
     fi
 
+    if [ -n "${cargoBuildNoDefaultFeatures-}" ]; then
+        cargoBuildNoDefaultFeaturesFlag=--no-default-features
+    fi
+
+    if [ -n "${cargoBuildFeatures-}" ]; then
+        cargoBuildFeaturesFlag="--features=${cargoBuildFeatures// /,}"
+    fi
+
     (
     set -x
     env \
@@ -24,6 +32,8 @@ cargoBuildHook() {
         --target @rustTargetPlatformSpec@ \
         --frozen \
         ${cargoBuildProfileFlag} \
+        ${cargoBuildNoDefaultFeaturesFlag} \
+        ${cargoBuildFeaturesFlag} \
         ${cargoBuildFlags}
     )
 
diff --git a/pkgs/build-support/rust/hooks/cargo-check-hook.sh b/pkgs/build-support/rust/hooks/cargo-check-hook.sh
index 8a8e434f0ff..57fc2779cfe 100644
--- a/pkgs/build-support/rust/hooks/cargo-check-hook.sh
+++ b/pkgs/build-support/rust/hooks/cargo-check-hook.sh
@@ -20,7 +20,16 @@ cargoCheckHook() {
         cargoCheckProfileFlag="--${cargoCheckType}"
     fi
 
-    argstr="${cargoCheckProfileFlag} --target @rustTargetPlatformSpec@ --frozen ${cargoTestFlags}";
+    if [ -n "${cargoCheckNoDefaultFeatures-}" ]; then
+        cargoCheckNoDefaultFeaturesFlag=--no-default-features
+    fi
+
+    if [ -n "${cargoCheckFeatures-}" ]; then
+        cargoCheckFeaturesFlag="--features=${cargoCheckFeatures// /,}"
+    fi
+
+    argstr="${cargoCheckProfileFlag} ${cargoCheckNoDefaultFeaturesFlag} ${cargoCheckFeaturesFlag}
+        --target @rustTargetPlatformSpec@ --frozen ${cargoTestFlags}"
 
     (
         set -x