summaryrefslogtreecommitdiffstats
path: root/pkgs/stdenv/generic/check-meta.nix
diff options
context:
space:
mode:
authorJan Malakhovski <oxij@oxij.org>2017-12-25 17:38:45 +0000
committerJan Malakhovski <oxij@oxij.org>2018-01-03 12:20:25 +0000
commitd1d5ecb3bf730984fcc7d8ef8ec322f1f67d0574 (patch)
tree324f9c8518371180e2ca241d40ac9e137a18b495 /pkgs/stdenv/generic/check-meta.nix
parentb1ca8517ee54b89c24c77af3b9408066cee57d74 (diff)
stdenv: perform checks only when evaluating .drv and .out
This pushes check-meta evaluation to derivation evaluation step, leaving all other attributes accessible. Before this commit: > $ HOME=/homeless-shelter NIX_PATH=nixpkgs=$(pwd) nix-instantiate --eval --strict ./default.nix -A xen --argstr system aarch64-linux > Package ‘xen-4.5.5’ in pkgs/applications/virtualization/xen/generic.nix:226 is not supported on ‘aarch64-linux’, refusing to evaluate. as expected > $ HOME=/homeless-shelter NIX_PATH=nixpkgs=$(pwd) nix-instantiate --eval --strict ./default.nix -A xen.name --argstr system aarch64-linux > Package ‘xen-4.5.5’ in pkgs/applications/virtualization/xen/generic.nix:226 is not supported on ‘aarch64-linux’, refusing to evaluate. > $ HOME=/homeless-shelter NIX_PATH=nixpkgs=$(pwd) nix-instantiate --eval --strict ./default.nix -A xen.meta.description --argstr system aarch64-linux > Package ‘xen-4.5.5’ in pkgs/applications/virtualization/xen/generic.nix:226 is not supported on ‘aarch64-linux’, refusing to evaluate. which is unfortunate since its impossible to use packages in autogenerated documentation on all platforms. After this commit: > $ HOME=/homeless-shelter NIX_PATH=nixpkgs=$(pwd) nix-instantiate --eval --strict ./default.nix -A xen --argstr system aarch64-linux still fails > $ HOME=/homeless-shelter NIX_PATH=nixpkgs=$(pwd) nix-instantiate --eval --strict ./default.nix -A xen.name --argstr system aarch64-linux > "xen-4.5.5" > $ HOME=/homeless-shelter NIX_PATH=nixpkgs=$(pwd) nix-instantiate --eval --strict ./default.nix -A xen.meta.description --argstr system aarch64-linux > "Xen hypervisor and related components (vanilla)"
Diffstat (limited to 'pkgs/stdenv/generic/check-meta.nix')
-rw-r--r--pkgs/stdenv/generic/check-meta.nix21
1 files changed, 9 insertions, 12 deletions
diff --git a/pkgs/stdenv/generic/check-meta.nix b/pkgs/stdenv/generic/check-meta.nix
index cd20c4a3cefc..0a8dc006dc5d 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 }:
@@ -196,13 +195,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;
+}