diff options
author | Vladimír Čunát <vcunat@gmail.com> | 2018-01-14 21:35:50 +0100 |
---|---|---|
committer | Vladimír Čunát <vcunat@gmail.com> | 2018-01-14 21:41:31 +0100 |
commit | 67e8392383d29c8dd4a7392bef33e0c16ac2297f (patch) | |
tree | f039586d277183e3aeb3784efb24549056c43ee8 /pkgs/stdenv/generic/check-meta.nix | |
parent | 1a054480d312a40feba4f579eec3cd2d0db21280 (diff) | |
parent | 799b941a2bb61970d6b99366bcf2062f1ce14328 (diff) | |
download | nixlib-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.nix | 23 |
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; +} |