diff options
-rw-r--r-- | pkgs/stdenv/generic/check-meta.nix | 12 | ||||
-rw-r--r-- | pkgs/stdenv/generic/make-derivation.nix | 16 |
2 files changed, 15 insertions, 13 deletions
diff --git a/pkgs/stdenv/generic/check-meta.nix b/pkgs/stdenv/generic/check-meta.nix index fe0c8cfad91..76e1c351ff4 100644 --- a/pkgs/stdenv/generic/check-meta.nix +++ b/pkgs/stdenv/generic/check-meta.nix @@ -1,7 +1,7 @@ # Checks derivation meta and attrs for problems (like brokenness, # licenses, etc). -{ lib, config, hostPlatform, meta }: +{ lib, config, hostPlatform }: let # If we're in hydra, we can dispense with the more verbose error @@ -76,7 +76,7 @@ let showLicense = license: license.shortName or "unknown"; - pos_str = meta.position or "«unknown-file»"; + pos_str = meta: meta.position or "«unknown-file»"; remediation = { unfree = remediate_whitelist "Unfree"; @@ -143,12 +143,12 @@ let ${lib.concatStrings (builtins.map (output: " - ${output}\n") missingOutputs)} ''; - handleEvalIssue = attrs: { reason , errormsg ? "" }: + handleEvalIssue = { meta, attrs }: { reason , errormsg ? "" }: let msg = if inHydra then "Failed to evaluate ${attrs.name or "«name-missing»"}: «${reason}»: ${errormsg}" else '' - Package ‘${attrs.name or "«name-missing»"}’ in ${pos_str} ${errormsg}, refusing to evaluate. + Package ‘${attrs.name or "«name-missing»"}’ in ${pos_str meta} ${errormsg}, refusing to evaluate. '' + (builtins.getAttr reason remediation) attrs; @@ -245,12 +245,12 @@ let { valid = false; reason = "unknown-meta"; errormsg = "has an invalid meta attrset:${lib.concatMapStrings (x: "\n\t - " + x) res}"; } else { valid = true; }; - assertValidity = attrs: let + assertValidity = { meta, 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"]) + then handleEvalIssue { inherit meta attrs; } (removeAttrs validity ["valid"]) else true; }; diff --git a/pkgs/stdenv/generic/make-derivation.nix b/pkgs/stdenv/generic/make-derivation.nix index dfb7e95113b..417c10363b5 100644 --- a/pkgs/stdenv/generic/make-derivation.nix +++ b/pkgs/stdenv/generic/make-derivation.nix @@ -1,6 +1,13 @@ { lib, config, stdenv }: -rec { +let + checkMeta = import ./check-meta.nix { + inherit lib config; + # 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) hostPlatform; + }; +in rec { # `mkDerivation` wraps the builtin `derivation` function to # produce derivations that use this stdenv and its shell. # @@ -263,12 +270,7 @@ rec { __propagatedImpureHostDeps = computedPropagatedImpureHostDeps ++ __propagatedImpureHostDeps; }; - validity = import ./check-meta.nix { - 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) hostPlatform; - } attrs; + validity = checkMeta { inherit meta 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 |