From f33a513d2b1f07da28549ffb7067f913bb3e302a Mon Sep 17 00:00:00 2001 From: Graham Christensen Date: Tue, 12 Dec 2017 18:06:55 -0500 Subject: [PATCH] stdenv: allow specifying a eval issuee handler --- pkgs/stdenv/generic/check-meta.nix | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/pkgs/stdenv/generic/check-meta.nix b/pkgs/stdenv/generic/check-meta.nix index 7c220647368..3fe12d0826d 100644 --- a/pkgs/stdenv/generic/check-meta.nix +++ b/pkgs/stdenv/generic/check-meta.nix @@ -125,11 +125,18 @@ let ''; - throwEvalHelp = { reason , errormsg ? "" }: - (if reason != "unknown-meta" then throw else (x : builtins.trace x true)) ('' - Package ‘${attrs.name or "«name-missing»"}’ in ${pos_str} ${errormsg}, refusing to evaluate. + handleEvalIssue = { reason , errormsg ? "" }: + let + msg = '' + Package ‘${attrs.name or "«name-missing»"}’ in ${pos_str} ${errormsg}, refusing to evaluate. + + '' + (builtins.getAttr reason remediation) attrs; + + handler = if config ? "handleEvalIssue" + then config.handleEvalIssue reason + else throw; + in handler msg; - '' + ((builtins.getAttr reason remediation) attrs)); metaTypes = with lib.types; rec { # These keys are documented @@ -192,7 +199,7 @@ let validityCondition = let v = checkValidity attrs; in if !v.valid - then throwEvalHelp (removeAttrs v ["valid"]) + then handleEvalIssue (removeAttrs v ["valid"]) else true; in