aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthieu Coudron <mattator@gmail.com>2017-09-21 10:25:20 +0900
committerMatthieu Coudron <mattator@gmail.com>2017-09-21 10:25:20 +0900
commit6920c237016e5f33d06f948a6f8485e23c1900f6 (patch)
tree2c27f445bb9aaa92c398e73590ebb24557be0fbb /src
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.
Diffstat (limited to 'src')
-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 885c5e169..f05aa7bf2 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)