about summary refs log tree commit diff
path: root/pkgs/stdenv/generic
diff options
context:
space:
mode:
authoradisbladis <adisbladis@gmail.com>2023-12-12 10:57:44 +1300
committerGitHub <noreply@github.com>2023-12-12 10:57:44 +1300
commit1e66093ccab99aac873d7648cb415cfec6095225 (patch)
treef2c19f5634f5e3bd10a3aff41cbeba1d3892115d /pkgs/stdenv/generic
parent6aa414bcfd647445819fb82a2eca1eb9fd2ed900 (diff)
parent9a0a097a9408733526a236de32b706e7706d0195 (diff)
downloadnixlib-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.nix19
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; }