diff options
Diffstat (limited to 'pkgs/build-support/rust/build-rust-crate/helpers.nix')
-rw-r--r-- | pkgs/build-support/rust/build-rust-crate/helpers.nix | 24 |
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; +} |