From efca8b4b97cab7653cc369973fb6267d160c494a Mon Sep 17 00:00:00 2001 From: Patrick Hilhorst Date: Wed, 6 Jun 2018 22:04:35 +0200 Subject: [PATCH 1/6] make-derivation: use pname-version as default name if both are present --- pkgs/stdenv/generic/make-derivation.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/stdenv/generic/make-derivation.nix b/pkgs/stdenv/generic/make-derivation.nix index e06faed30a1..8fd58c3cbe9 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 builtins.hasAttr "pname" attrs && builtins.hasAttr "version" attrs + then "${attrs.pname}-${attrs.version}" + else "" # These types of dependencies are all exhaustively documented in # the "Specifying Dependencies" section of the "Standard From 149a55eca77279c683a48d274a2f295d8027977c Mon Sep 17 00:00:00 2001 From: Patrick Hilhorst Date: Thu, 7 Jun 2018 16:16:14 +0200 Subject: [PATCH 2/6] make-derivation: get position info from version --- pkgs/stdenv/generic/make-derivation.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/stdenv/generic/make-derivation.nix b/pkgs/stdenv/generic/make-derivation.nix index 8fd58c3cbe9..dcf73a38a1d 100644 --- a/pkgs/stdenv/generic/make-derivation.nix +++ b/pkgs/stdenv/generic/make-derivation.nix @@ -67,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" ] From 2962f94fec198cd378471e2b6acc89d0af6ae226 Mon Sep 17 00:00:00 2001 From: Patrick Hilhorst Date: Mon, 29 Oct 2018 14:58:12 +0100 Subject: [PATCH 3/6] make-derivation: add check that the name is consistent with pname and version --- pkgs/stdenv/generic/make-derivation.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/stdenv/generic/make-derivation.nix b/pkgs/stdenv/generic/make-derivation.nix index dcf73a38a1d..6f31e09b125 100644 --- a/pkgs/stdenv/generic/make-derivation.nix +++ b/pkgs/stdenv/generic/make-derivation.nix @@ -82,6 +82,10 @@ rec { , ... } @ attrs: + # Check that the name is consistent with pname and version: + assert lib.lists.all (name: builtins.hasAttr name attrs) ["name" "pname" "version"] + -> lib.strings.hasSuffix "${attrs.pname}-${attrs.version}" attrs.name; + let # TODO(@oxij, @Ericson2314): This is here to keep the old semantics, remove when # no package has `doCheck = true`. From 5be927db142448207c6a1d0c6e58ac5eb2af1fc5 Mon Sep 17 00:00:00 2001 From: Patrick Hilhorst Date: Mon, 29 Oct 2018 15:17:13 +0100 Subject: [PATCH 4/6] make-derivation: use `?` instead of `builtins.hasAttr` As suggested by @edolstra --- pkgs/stdenv/generic/make-derivation.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/stdenv/generic/make-derivation.nix b/pkgs/stdenv/generic/make-derivation.nix index 6f31e09b125..9f6fee93710 100644 --- a/pkgs/stdenv/generic/make-derivation.nix +++ b/pkgs/stdenv/generic/make-derivation.nix @@ -12,7 +12,7 @@ rec { # * https://nixos.org/nix/manual/#ssec-derivation # Explanation about derivations in general mkDerivation = - { name ? if builtins.hasAttr "pname" attrs && builtins.hasAttr "version" attrs + { name ? if attrs ? pname && attrs ? version then "${attrs.pname}-${attrs.version}" else "" From c7e026bec483582bf2b8ac624519555f9476751c Mon Sep 17 00:00:00 2001 From: Patrick Hilhorst Date: Mon, 29 Oct 2018 18:25:59 +0100 Subject: [PATCH 5/6] make-derivation: use `lib.assertMsg` As suggested by @Profpatsch --- pkgs/stdenv/generic/make-derivation.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/stdenv/generic/make-derivation.nix b/pkgs/stdenv/generic/make-derivation.nix index 9f6fee93710..2ff7db947fe 100644 --- a/pkgs/stdenv/generic/make-derivation.nix +++ b/pkgs/stdenv/generic/make-derivation.nix @@ -83,8 +83,10 @@ rec { , ... } @ attrs: # Check that the name is consistent with pname and version: - assert lib.lists.all (name: builtins.hasAttr name attrs) ["name" "pname" "version"] - -> lib.strings.hasSuffix "${attrs.pname}-${attrs.version}" attrs.name; + 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` must be consistent with `pname-version`"; let # TODO(@oxij, @Ericson2314): This is here to keep the old semantics, remove when From 1f7fc09176dc9b0260b8e2778f1e6c3139eae6a9 Mon Sep 17 00:00:00 2001 From: Patrick Hilhorst Date: Tue, 30 Oct 2018 14:27:28 +0100 Subject: [PATCH 6/6] make-derivation: use a more descriptive assert message As suggested by @Profpatsch --- pkgs/stdenv/generic/make-derivation.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/stdenv/generic/make-derivation.nix b/pkgs/stdenv/generic/make-derivation.nix index 2ff7db947fe..cb3731da193 100644 --- a/pkgs/stdenv/generic/make-derivation.nix +++ b/pkgs/stdenv/generic/make-derivation.nix @@ -86,7 +86,8 @@ rec { 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` must be consistent with `pname-version`"; + ("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