Unverified Commit 1e66093c authored by adisbladis's avatar adisbladis Committed by GitHub
Browse files

Merge pull request #269546 from adisbladis/stdenv-meta-no-intermediate-alloc

stdenv: Avoid allocating intermediate attrset when checking meta validity
parents 6aa414bc 9a0a097a
Loading
Loading
Loading
Loading
+12 −7
Original line number Diff line number Diff line
@@ -492,16 +492,21 @@ let

  assertValidity = { meta, attrs }: let
      validity = checkValidity attrs;
      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; }