refactor(snix/utils): use filterRustCrateSrc directly

Move this into a let binding and reuse it further down in
defaultCrateOverridesForPkgs, rather than going through the fixpoint.

Change-Id: I9df86189ee788adbecfabf64a09463103e4a626f
Reviewed-on: https://cl.snix.dev/c/snix/+/30103
Autosubmit: Florian Klink <flokli@flokli.de>
Tested-by: besadii
Reviewed-by: Vova Kryachko <v.kryachko@gmail.com>
This commit is contained in:
Florian Klink 2025-03-18 14:57:08 +00:00 committed by clbot
parent aefa1eaa28
commit 0b7d0e7989

View file

@ -1,26 +1,6 @@
{ pkgs, lib, depot, ... }:
{
mkFeaturePowerset = { crateName, features, override ? { } }:
let
powerset = xs:
let
addElement = set: element:
set ++ map (e: [ element ] ++ e) set;
in
lib.foldl' addElement [ [ ] ] xs;
in
lib.listToAttrs (map
(featuresPowerset: {
name = if featuresPowerset != [ ] then "with-features-${lib.concatStringsSep "-" featuresPowerset}" else "no-features";
value = depot.snix.crates.workspaceMembers.${crateName}.build.override (old: {
runTests = true;
features = featuresPowerset;
} // (if lib.isFunction override then override old else override)
);
})
(powerset features));
let
# Filters the given source, only keeping files related to the build, preventing unnecessary rebuilds.
# Includes src in the root, all other .rs files and optionally Cargo specific files.
# Additional files to be included can be specified in extraFileset.
@ -42,31 +22,55 @@
] ++ lib.optional (extraFileset != null) extraFileset));
};
in
{
mkFeaturePowerset = { crateName, features, override ? { } }:
let
powerset = xs:
let
addElement = set: element:
set ++ map (e: [ element ] ++ e) set;
in
lib.foldl' addElement [ [ ] ] xs;
in
lib.listToAttrs (map
(featuresPowerset: {
name = if featuresPowerset != [ ] then "with-features-${lib.concatStringsSep "-" featuresPowerset}" else "no-features";
value = depot.snix.crates.workspaceMembers.${crateName}.build.override (old: {
runTests = true;
features = featuresPowerset;
} // (if lib.isFunction override then override old else override)
);
})
(powerset features));
inherit filterRustCrateSrc;
# A function which takes a pkgs instance and returns an overriden defaultCrateOverrides with support for snix crates.
# This can be used throughout the rest of the repo.
defaultCrateOverridesForPkgs = pkgs:
pkgs.defaultCrateOverrides // {
nar-bridge = prev: {
src = depot.snix.utils.filterRustCrateSrc { root = prev.src.origSrc; };
src = filterRustCrateSrc { root = prev.src.origSrc; };
};
nix-compat = prev: {
src = depot.snix.utils.filterRustCrateSrc rec {
src = filterRustCrateSrc rec {
root = prev.src.origSrc;
extraFileset = root + "/testdata";
};
};
nix-compat-derive = prev: {
src = depot.snix.utils.filterRustCrateSrc { root = prev.src.origSrc; };
src = filterRustCrateSrc { root = prev.src.origSrc; };
};
nix-compat-derive-tests = prev: {
src = depot.snix.utils.filterRustCrateSrc { root = prev.src.origSrc; };
src = filterRustCrateSrc { root = prev.src.origSrc; };
};
snix-build = prev: {
src = depot.snix.utils.filterRustCrateSrc rec {
src = filterRustCrateSrc rec {
root = prev.src.origSrc;
extraFileset = lib.fileset.fileFilter (f: f.hasExt "proto") root;
};
@ -76,7 +80,7 @@
};
snix-castore = prev: {
src = depot.snix.utils.filterRustCrateSrc rec {
src = filterRustCrateSrc rec {
root = prev.src.origSrc;
extraFileset = lib.fileset.fileFilter (f: f.hasExt "proto") root;
};
@ -85,14 +89,14 @@
};
snix-cli = prev: {
src = depot.snix.utils.filterRustCrateSrc rec {
src = filterRustCrateSrc rec {
root = prev.src.origSrc;
extraFileset = root + "/tests";
};
};
snix-store = prev: {
src = depot.snix.utils.filterRustCrateSrc rec {
src = filterRustCrateSrc rec {
root = prev.src.origSrc;
extraFileset = lib.fileset.fileFilter (f: f.hasExt "proto") root;
};
@ -101,28 +105,28 @@
};
snix-eval-builtin-macros = prev: {
src = depot.snix.utils.filterRustCrateSrc { root = prev.src.origSrc; };
src = filterRustCrateSrc { root = prev.src.origSrc; };
};
snix-eval = prev: {
src = depot.snix.utils.filterRustCrateSrc rec {
src = filterRustCrateSrc rec {
root = prev.src.origSrc;
extraFileset = root + "/proptest-regressions";
};
};
snix-glue = prev: {
src = depot.snix.utils.filterRustCrateSrc {
src = filterRustCrateSrc {
root = prev.src.origSrc;
};
};
snix-serde = prev: {
src = depot.snix.utils.filterRustCrateSrc { root = prev.src.origSrc; };
src = filterRustCrateSrc { root = prev.src.origSrc; };
};
snix-tracing = prev: {
src = depot.snix.utils.filterRustCrateSrc { root = prev.src.origSrc; };
src = filterRustCrateSrc { root = prev.src.origSrc; };
};
};