diff options
author | adisbladis <adisbladis@gmail.com> | 2023-12-12 10:57:44 +1300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-12 10:57:44 +1300 |
commit | 1e66093ccab99aac873d7648cb415cfec6095225 (patch) | |
tree | f2c19f5634f5e3bd10a3aff41cbeba1d3892115d /pkgs/stdenv/generic | |
parent | 6aa414bcfd647445819fb82a2eca1eb9fd2ed900 (diff) | |
parent | 9a0a097a9408733526a236de32b706e7706d0195 (diff) | |
download | nixlib-1e66093ccab99aac873d7648cb415cfec6095225.tar nixlib-1e66093ccab99aac873d7648cb415cfec6095225.tar.gz nixlib-1e66093ccab99aac873d7648cb415cfec6095225.tar.bz2 nixlib-1e66093ccab99aac873d7648cb415cfec6095225.tar.lz nixlib-1e66093ccab99aac873d7648cb415cfec6095225.tar.xz nixlib-1e66093ccab99aac873d7648cb415cfec6095225.tar.zst nixlib-1e66093ccab99aac873d7648cb415cfec6095225.zip |
Merge pull request #269546 from adisbladis/stdenv-meta-no-intermediate-alloc
stdenv: Avoid allocating intermediate attrset when checking meta validity
Diffstat (limited to 'pkgs/stdenv/generic')
-rw-r--r-- | pkgs/stdenv/generic/check-meta.nix | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/pkgs/stdenv/generic/check-meta.nix b/pkgs/stdenv/generic/check-meta.nix index 0bcdf69773f8..62a6cd8ef02e 100644 --- a/pkgs/stdenv/generic/check-meta.nix +++ b/pkgs/stdenv/generic/check-meta.nix @@ -492,16 +492,21 @@ let assertValidity = { meta, attrs }: let validity = checkValidity attrs; - in validity // { + inherit (validity) valid; + in validity // { # Throw an error if trying to evaluate a non-valid derivation # or, alternatively, just output a warning message. handled = - { - no = handleEvalIssue { inherit meta attrs; } { inherit (validity) reason errormsg; }; - warn = handleEvalWarning { inherit meta attrs; } { inherit (validity) reason errormsg; }; - yes = true; - }.${validity.valid}; - + ( + if valid == "yes" then true + else if valid == "no" then ( + handleEvalIssue { inherit meta attrs; } { inherit (validity) reason errormsg; } + ) + else if valid == "warn" then ( + handleEvalWarning { inherit meta attrs; } { inherit (validity) reason errormsg; } + ) + else throw "Unknown validitiy: '${valid}'" + ); }; in { inherit assertValidity commonMeta; } |