about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthieu Coudron <mattator@gmail.com>2017-09-21T01·25+0900
committerMatthieu Coudron <mattator@gmail.com>2017-09-21T01·25+0900
commit6920c237016e5f33d06f948a6f8485e23c1900f6 (patch)
tree2c27f445bb9aaa92c398e73590ebb24557be0fbb
parent84f112b1c8d3c5181b7a9b11d309f14f1709480d (diff)
Improve error message for conflicting priorities
I find the error message 'nix-env --set-flag priority NUMBER PKGNAME'
not as helpful as it could be :
- doesn't share the current priorities
- doesn't say that the command must be run on the already installed
PKGNAME (which is confusing the first time)
- the doc needs careful reading:
"If there are multiple derivations matching a name in args that have the same name (e.g., gcc-3.3.6 and gcc-4.1.1), then the derivation with the highest priority is used."
if one stops reading there, he is screwed. Salvation comes with reading "A derivation can define a priority by declaring the meta.priority attribute. This attribute should be a number, with a higher value denoting a lower priority. The default priority is 0."
To sum it up, lower number wins. I tried to convey this idea in the
message too.
-rw-r--r--src/buildenv/buildenv.cc7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/buildenv/buildenv.cc b/src/buildenv/buildenv.cc
index 885c5e169039..f05aa7bf2fbb 100644
--- a/src/buildenv/buildenv.cc
+++ b/src/buildenv/buildenv.cc
@@ -74,10 +74,11 @@ static void createLinks(const Path & srcDir, const Path & dstDir, int priority)
                     auto prevPriority = priorities[dstFile];
                     if (prevPriority == priority)
                         throw Error(format(
-                                "collision between '%1%' and '%2%'; "
-                                "use 'nix-env --set-flag priority NUMBER PKGNAME' "
+                                "Packages '%1%' and '%2%' have the same priority '%3%'"
+                                "use 'nix-env --set-flag priority NUMBER INSTALLED_PKGNAME' "
                                 "to change the priority of one of the conflicting packages"
-                                ) % srcFile % target);
+                                " ('0' being the highest priority)"
+                                ) % srcFile % target % priority);
                     if (prevPriority < priority)
                         continue;
                     if (unlink(dstFile.c_str()) == -1)