diff options
Diffstat (limited to 'pkgs/stdenv/generic/make-derivation.nix')
-rw-r--r-- | pkgs/stdenv/generic/make-derivation.nix | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/pkgs/stdenv/generic/make-derivation.nix b/pkgs/stdenv/generic/make-derivation.nix index 08a914787c35..9926a13190f6 100644 --- a/pkgs/stdenv/generic/make-derivation.nix +++ b/pkgs/stdenv/generic/make-derivation.nix @@ -12,7 +12,9 @@ rec { # * https://nixos.org/nix/manual/#ssec-derivation # Explanation about derivations in general mkDerivation = - { name ? "" + { name ? if attrs ? pname && attrs ? version + then "${attrs.pname}-${attrs.version}" + else "" # These types of dependencies are all exhaustively documented in # the "Specifying Dependencies" section of the "Standard @@ -65,6 +67,8 @@ rec { , pos ? # position used in error messages and for meta.position (if attrs.meta.description or null != null then builtins.unsafeGetAttrPos "description" attrs.meta + else if attrs.version or null != null + then builtins.unsafeGetAttrPos "version" attrs else builtins.unsafeGetAttrPos "name" attrs) , separateDebugInfo ? false , outputs ? [ "out" ] @@ -78,6 +82,13 @@ rec { , ... } @ attrs: + # Check that the name is consistent with pname and version: + assert lib.assertMsg + (lib.lists.all (name: builtins.hasAttr name attrs) ["name" "pname" "version"] + -> lib.strings.hasSuffix "${attrs.pname}-${attrs.version}" attrs.name) + ("mkDerivation: `name` (\"${attrs.name}\") must be consistent " + + "with `pname-version` \"${attrs.pname}-${attrs.version}\""); + let # TODO(@oxij, @Ericson2314): This is here to keep the old semantics, remove when # no package has `doCheck = true`. |