From 4c52e34ca60c58fe50e73875550068099dcdebdb Mon Sep 17 00:00:00 2001 From: John Ericson Date: Tue, 30 Jan 2018 22:10:34 -0500 Subject: [PATCH] stdenv: Clean up check meta args --- pkgs/stdenv/generic/check-meta.nix | 22 +++++++++++----------- pkgs/stdenv/generic/make-derivation.nix | 5 ++--- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/pkgs/stdenv/generic/check-meta.nix b/pkgs/stdenv/generic/check-meta.nix index 93d0f4cc9805..ee1e657bdab3 100644 --- a/pkgs/stdenv/generic/check-meta.nix +++ b/pkgs/stdenv/generic/check-meta.nix @@ -1,11 +1,9 @@ # Checks derivation meta and attrs for problems (like brokenness, # licenses, etc). -{ lib, config, system, meta, derivationArg, mkDerivationArg }: +{ lib, config, system, meta }: let - attrs = mkDerivationArg; # TODO: probably get rid of passing this one - # See discussion at https://github.com/NixOS/nixpkgs/pull/25304#issuecomment-298385426 # for why this defaults to false, but I (@copumpkin) want to default it to true soon. shouldCheckMeta = config.checkMeta or false; @@ -123,7 +121,7 @@ let ''; - handleEvalIssue = { reason , errormsg ? "" }: + handleEvalIssue = attrs: { reason , errormsg ? "" }: let msg = '' Package ‘${attrs.name or "«name-missing»"}’ in ${pos_str} ${errormsg}, refusing to evaluate. @@ -196,11 +194,13 @@ 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; + assertValidity = attrs: let + validity = checkValidity attrs; + in validity // { + # Throw an error if trying to evaluate an non-valid derivation + handled = if !validity.valid + then handleEvalIssue attrs (removeAttrs validity ["valid"]) + else true; + }; -in validity // { - # Throw an error if trying to evaluate an non-valid derivation - handled = if !validity.valid - then handleEvalIssue (removeAttrs validity ["valid"]) - else true; -} +in assertValidity diff --git a/pkgs/stdenv/generic/make-derivation.nix b/pkgs/stdenv/generic/make-derivation.nix index e8f78d7401f1..18c4beb965b5 100644 --- a/pkgs/stdenv/generic/make-derivation.nix +++ b/pkgs/stdenv/generic/make-derivation.nix @@ -204,12 +204,11 @@ rec { }); validity = import ./check-meta.nix { - inherit lib config meta derivationArg; - mkDerivationArg = attrs; + inherit lib config meta; # Nix itself uses the `system` field of a derivation to decide where # to build it. This is a bit confusing for cross compilation. inherit (stdenv) system; - }; + } attrs; # The meta attribute is passed in the resulting attribute set, # but it's not part of the actual derivation, i.e., it's not