summary refs log tree commit diff
path: root/pkgs/stdenv/generic/check-meta.nix
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2018-01-14 21:35:50 +0100
committerVladimír Čunát <vcunat@gmail.com>2018-01-14 21:41:31 +0100
commit67e8392383d29c8dd4a7392bef33e0c16ac2297f (patch)
treef039586d277183e3aeb3784efb24549056c43ee8 /pkgs/stdenv/generic/check-meta.nix
parent1a054480d312a40feba4f579eec3cd2d0db21280 (diff)
parent799b941a2bb61970d6b99366bcf2062f1ce14328 (diff)
downloadnixlib-67e8392383d29c8dd4a7392bef33e0c16ac2297f.tar
nixlib-67e8392383d29c8dd4a7392bef33e0c16ac2297f.tar.gz
nixlib-67e8392383d29c8dd4a7392bef33e0c16ac2297f.tar.bz2
nixlib-67e8392383d29c8dd4a7392bef33e0c16ac2297f.tar.lz
nixlib-67e8392383d29c8dd4a7392bef33e0c16ac2297f.tar.xz
nixlib-67e8392383d29c8dd4a7392bef33e0c16ac2297f.tar.zst
nixlib-67e8392383d29c8dd4a7392bef33e0c16ac2297f.zip
Merge #33057: stdenv meta checks: make them lazy
Closes #22277 - it's superseded;  I have some WIP on evaluation
performance, but best do that in a separate PR/thread.
Diffstat (limited to 'pkgs/stdenv/generic/check-meta.nix')
-rw-r--r--pkgs/stdenv/generic/check-meta.nix23
1 files changed, 11 insertions, 12 deletions
diff --git a/pkgs/stdenv/generic/check-meta.nix b/pkgs/stdenv/generic/check-meta.nix
index 6ae6e646e989..745ad14bc08b 100644
--- a/pkgs/stdenv/generic/check-meta.nix
+++ b/pkgs/stdenv/generic/check-meta.nix
@@ -1,6 +1,5 @@
-# Extend a derivation with checks for brokenness, license, etc.  Throw a
-# descriptive error when the check fails; return `derivationArg` otherwise.
-# Note: no dependencies are checked in this step.
+# Checks derivation meta and attrs for problems (like brokenness,
+# licenses, etc).
 
 { lib, config, system, meta, derivationArg, mkDerivationArg }:
 
@@ -154,12 +153,14 @@ let
 
     # Weirder stuff that doesn't appear in the documentation?
     knownVulnerabilities = listOf str;
+    name = str;
     version = str;
     tag = str;
     updateWalker = bool;
     executables = listOf str;
     outputsToInstall = listOf str;
     position = str;
+    evaluates = bool;
     repositories = attrsOf str;
     isBuildPythonPackage = platforms;
     schedulingPriority = int;
@@ -196,13 +197,11 @@ let
       { valid = false; reason = "unknown-meta"; errormsg = "has an invalid meta attrset:${lib.concatMapStrings (x: "\n\t - " + x) res}"; }
     else { valid = true; };
 
+   validity = checkValidity attrs;
+
+in validity // {
   # Throw an error if trying to evaluate an non-valid derivation
-  validityCondition =
-         let v = checkValidity attrs;
-         in if !v.valid
-           then handleEvalIssue (removeAttrs v ["valid"])
-           else true;
-
-in
-  assert validityCondition;
-  derivationArg
+  handled = if !validity.valid
+    then handleEvalIssue (removeAttrs validity ["valid"])
+    else true;
+}