about summary refs log tree commit diff
path: root/pkgs/build-support/rust/build-rust-crate/helpers.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/build-support/rust/build-rust-crate/helpers.nix')
-rw-r--r--pkgs/build-support/rust/build-rust-crate/helpers.nix24
1 files changed, 24 insertions, 0 deletions
diff --git a/pkgs/build-support/rust/build-rust-crate/helpers.nix b/pkgs/build-support/rust/build-rust-crate/helpers.nix
new file mode 100644
index 000000000000..e04324684e50
--- /dev/null
+++ b/pkgs/build-support/rust/build-rust-crate/helpers.nix
@@ -0,0 +1,24 @@
+{stdenv, lib}:
+{
+  kernel = stdenv.hostPlatform.parsed.kernel.name;
+  abi = stdenv.hostPlatform.parsed.abi.name;
+   updateFeatures = f: up: functions: builtins.deepSeq f (lib.lists.foldl' (features: fun: fun features) (lib.attrsets.recursiveUpdate f up) functions);
+   mapFeatures = features: map (fun: fun { features = features; });
+   mkFeatures = feat: lib.lists.foldl (features: featureName:
+     if feat.${featureName} or false then
+       [ featureName ] ++ features
+     else
+       features
+   ) [] (builtins.attrNames feat);
+  include = includedFiles: src: builtins.filterSource (path: type:
+    lib.lists.any (f:
+      let p = toString (src + ("/" + f)); in
+      (path == p) || (type == "directory" && lib.strings.hasPrefix path p)
+    ) includedFiles
+  ) src;
+  exclude = excludedFiles: src: builtins.filterSource (path: type:
+    lib.lists.all (f:
+       !lib.strings.hasPrefix (toString (src + ("/" + f))) path
+    ) excludedFiles
+  ) src;
+}