GNU bug report logs - #29255
"Profile contains conflicting entries" could be more helpful

Previous Next

Package: guix;

Reported by: Ben Sturmfels <ben <at> sturm.com.au>

Date: Sat, 11 Nov 2017 00:15:01 UTC

Severity: normal

Tags: moreinfo

Done: ludo <at> gnu.org (Ludovic Courtès)

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 29255 in the body.
You can then email your comments to 29255 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-guix <at> gnu.org:
bug#29255; Package guix. (Sat, 11 Nov 2017 00:15:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Ben Sturmfels <ben <at> sturm.com.au>:
New bug report received and forwarded. Copy sent to bug-guix <at> gnu.org. (Sat, 11 Nov 2017 00:15:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Ben Sturmfels <ben <at> sturm.com.au>
To: bug-guix <at> gnu.org
Subject: "Profile contains conflicting entries" could be more helpful
Date: Sat, 11 Nov 2017 11:14:05 +1100
Hi Folks,

When trying to install "python-twine", installation failed with the
following error:

$ guix package --install python-twine
The following package will be installed:
   python-twine	1.9.1	/gnu/store/fh72qswc2gpj1c1xb2gm23hfs1vx4lk2-python-twine-1.9.1

guix package: error: profile contains conflicting entries for python-requests:out
guix package: error:   first entry: python-requests <at> 2.13.0:out /gnu/store/4paqanwmdw2d7ss9hdq7d34b43ycjgsv-python-requests-2.13.0
guix package: error:    ... propagated from python-twine <at> 1.9.1
guix package: error:   second entry: python-requests <at> 2.13.0:out /gnu/store/z4jqf8p2z73dscrjmbpwamdvyfdaqkgx-python-requests-2.13.0


This was quite baffling - it wasn’t clear to me why there was a
conflict, whether it was related to something I'd done and what I could
do to fix it.

If I understand correctly, the cause is that I had manually installed
"python-requests" at some stage and that only one version can be
available in my profile, and that "python-twine" depended on a different
version.

I believe the action I need to take to resolve the conflict is:

  guix package --install python-twine --upgrade python-requests


So I think the bug is that the user interface could be more helpful here.
It should probably either tell you what happened and what you can do to
fix it, or offer to resolve the conflict/perform the upgrade for you.

Regards,
Ben




Information forwarded to bug-guix <at> gnu.org:
bug#29255; Package guix. (Sat, 11 Nov 2017 14:00:01 GMT) Full text and rfc822 format available.

Message #8 received at 29255 <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Ben Sturmfels <ben <at> sturm.com.au>
Cc: 29255 <at> debbugs.gnu.org
Subject: Re: bug#29255: "Profile contains conflicting entries" could be more
 helpful
Date: Sat, 11 Nov 2017 14:59:04 +0100
Hi Ben,

Ben Sturmfels <ben <at> sturm.com.au> skribis:

> So I think the bug is that the user interface could be more helpful here.
> It should probably either tell you what happened and what you can do to
> fix it, or offer to resolve the conflict/perform the upgrade for you.

Would it be desirable or even feasible to resolve the conflict for you?
I wouldn’t want the tool to remove installed packages without asking me,
for instance.

Could you suggest messages you’d like to see in this case?

Thanks,
Ludo’.




Added tag(s) moreinfo. Request was from ludo <at> gnu.org (Ludovic Courtès) to control <at> debbugs.gnu.org. (Fri, 24 Nov 2017 17:25:01 GMT) Full text and rfc822 format available.

Information forwarded to bug-guix <at> gnu.org:
bug#29255; Package guix. (Fri, 24 Nov 2017 18:36:02 GMT) Full text and rfc822 format available.

Message #13 received at 29255 <at> debbugs.gnu.org (full text, mbox):

From: Ricardo Wurmus <rekado <at> elephly.net>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 29255 <at> debbugs.gnu.org, Ben Sturmfels <ben <at> sturm.com.au>
Subject: Re: bug#29255: "Profile contains conflicting entries" could be more
 helpful
Date: Fri, 24 Nov 2017 19:35:06 +0100
Ludovic Courtès <ludo <at> gnu.org> writes:

> Ben Sturmfels <ben <at> sturm.com.au> skribis:
>
>> So I think the bug is that the user interface could be more helpful here.
>> It should probably either tell you what happened and what you can do to
>> fix it, or offer to resolve the conflict/perform the upgrade for you.
>
> Would it be desirable or even feasible to resolve the conflict for you?
> I wouldn’t want the tool to remove installed packages without asking me,
> for instance.

Guix could resolve the conflict by upgrading the existing and
conflicting item in the profile.  In my experience that’s usually what a
user wants.

Guix could also remind the users to use “--manifest” or to upgrade items
in the profile.

> Could you suggest messages you’d like to see in this case?

In this case it is not entirely clear that the existing python-requests
package in the profile is “old”.  The version looks the same and the
hash is opaque.

Would it be possible to record something about the Guix version that was
used to install a package?  Then we could say:

  An older variant of python-requests is installed in this profile
  (propagated from package “foo-bar”) and conflicts with a newer variant
  (propagated from package “python-twine”).

I understand that it is challenging to accurately describe the version
of Guix in the presence of GUIX_PACKAGE_PATH.  With a more formal
definition of channels (e.g. requiring a description file for the
channel that includes a version or date string) this problem could be
side-stepped.

--
Ricardo

GPG: BCA6 89B6 3655 3801 C3C6  2150 197A 5888 235F ACAC
https://elephly.net






Information forwarded to bug-guix <at> gnu.org:
bug#29255; Package guix. (Thu, 30 Nov 2017 12:14:01 GMT) Full text and rfc822 format available.

Message #16 received at 29255 <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Ricardo Wurmus <rekado <at> elephly.net>
Cc: 29255 <at> debbugs.gnu.org, Ben Sturmfels <ben <at> sturm.com.au>
Subject: Re: bug#29255: "Profile contains conflicting entries" could be more
 helpful
Date: Thu, 30 Nov 2017 13:13:14 +0100
[Message part 1 (text/plain, inline)]
Hi,

Ricardo Wurmus <rekado <at> elephly.net> skribis:

> In this case it is not entirely clear that the existing python-requests
> package in the profile is “old”.  The version looks the same and the
> hash is opaque.
>
> Would it be possible to record something about the Guix version that was
> used to install a package?  Then we could say:
>
>   An older variant of python-requests is installed in this profile
>   (propagated from package “foo-bar”) and conflicts with a newer variant
>   (propagated from package “python-twine”).

When the version numbers are the same, we cannot tell whether a variant
is “older”, we can just tell that it’s different.  Also, I find it
useful to see the propagation stack as is currently the case.

With the patch below, I get:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix package -p foo -i python <at> 2 python
The following packages will be installed:
   python	2.7.13	/gnu/store/vysfxizaddh1q8s5qjgbdkzxx0585dzi-python-2.7.13
   python	3.5.3	/gnu/store/m4rdgmvdqcxs2zhv42idnz1s1w391i8j-python-3.5.3

guix package: error: profile contains conflicting entries for python:out
guix package: error:   first entry: python <at> 2.7.13 /gnu/store/vysfxizaddh1q8s5qjgbdkzxx0585dzi-python-2.7.13
guix package: error:   second entry: python <at> 3.5.3 /gnu/store/m4rdgmvdqcxs2zhv42idnz1s1w391i8j-python-3.5.3
hint: You cannot have two different versions or variants of `python' in the same profile.
--8<---------------cut here---------------end--------------->8---

and:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix package -i guile-cairo -p foo --no-grafts
The following package will be installed:
   guile-cairo	1.4.1	/gnu/store/dsdbp9sqla6zz2skljlcr5zfjyzvargf-guile-cairo-1.4.1

guix package: error: profile contains conflicting entries for cairo:out
guix package: error:   first entry: cairo <at> 1.14.10 /gnu/store/c4vl4hw5jccg0b23sfvs0kdnfdbxdlgm-cairo-1.14.10
guix package: error:    ... propagated from guile-cairo <at> 1.4.1
guix package: error:   second entry: cairo <at> 1.14.10 /gnu/store/nwxv9s2q8pi0m6gn6fyidpj8442dwp6f-cairo-1.14.10
guix package: error:    ... propagated from cairomm <at> 1.12.2
hint: Try upgrading both `guile-cairo' and `cairomm', or remove one of them from the profile.
--8<---------------cut here---------------end--------------->8---

How does that sound?

We could further refine the hint to suggest using ‘guix package -m’,
though I’m not sure if it’d be a useful hint (it’s a useful
recommendation, but not necessarily good as a “fix hint.”)

Thoughts?

Thanks,
Ludo’.

[Message part 2 (text/x-patch, inline)]
diff --git a/guix/ui.scm b/guix/ui.scm
index 13cbe3a0f..660f6ea5c 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -502,6 +502,25 @@ interpreted."
           (x
            (leave (G_ "unknown unit: ~a~%") unit)))))))
 
+(define (display-collision-resolution-hint collision)
+  (define (top-most-entry entry)
+    (let loop ((entry entry))
+      (match (force (manifest-entry-parent entry))
+        (#f entry)
+        (parent (loop parent)))))
+
+  (let* ((first  (profile-collision-error-entry collision))
+         (second (profile-collision-error-conflict collision))
+         (name1  (manifest-entry-name (top-most-entry first)))
+         (name2  (manifest-entry-name (top-most-entry second))))
+    (if (string=? name1 name2)
+        (display-hint (format #f (G_ "You cannot have two different versions
+or variants of @code{~a} in the same profile.")
+                              name1))
+        (display-hint (format #f (G_ "Try upgrading both @code{~a} and @code{~a},
+or remove one of them from the profile.")
+                              name1 name2)))))
+
 (define (call-with-error-handling thunk)
   "Call THUNK within a user-friendly error handler."
   (define (port-filename* port)
@@ -570,6 +589,7 @@ interpreted."
                              (manifest-entry-output* conflict)
                              (manifest-entry-item conflict))
                (report-parent-entries conflict)
+               (display-collision-resolution-hint c)
                (exit 1)))
             ((nar-error? c)
              (let ((file (nar-error-file c))

Reply sent to ludo <at> gnu.org (Ludovic Courtès):
You have taken responsibility. (Sun, 10 Dec 2017 22:48:01 GMT) Full text and rfc822 format available.

Notification sent to Ben Sturmfels <ben <at> sturm.com.au>:
bug acknowledged by developer. (Sun, 10 Dec 2017 22:48:01 GMT) Full text and rfc822 format available.

Message #21 received at 29255-done <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Ricardo Wurmus <rekado <at> elephly.net>
Cc: 29255-done <at> debbugs.gnu.org, Ben Sturmfels <ben <at> sturm.com.au>
Subject: Re: bug#29255: "Profile contains conflicting entries" could be more
 helpful
Date: Sun, 10 Dec 2017 23:47:09 +0100
Hello!

ludo <at> gnu.org (Ludovic Courtès) skribis:

> Ricardo Wurmus <rekado <at> elephly.net> skribis:
>
>> In this case it is not entirely clear that the existing python-requests
>> package in the profile is “old”.  The version looks the same and the
>> hash is opaque.
>>
>> Would it be possible to record something about the Guix version that was
>> used to install a package?  Then we could say:
>>
>>   An older variant of python-requests is installed in this profile
>>   (propagated from package “foo-bar”) and conflicts with a newer variant
>>   (propagated from package “python-twine”).
>
> When the version numbers are the same, we cannot tell whether a variant
> is “older”, we can just tell that it’s different.  Also, I find it
> useful to see the propagation stack as is currently the case.
>
> With the patch below, I get:
>
> $ ./pre-inst-env guix package -p foo -i python <at> 2 python
> The following packages will be installed:
>    python	2.7.13	/gnu/store/vysfxizaddh1q8s5qjgbdkzxx0585dzi-python-2.7.13
>    python	3.5.3	/gnu/store/m4rdgmvdqcxs2zhv42idnz1s1w391i8j-python-3.5.3
>
> guix package: error: profile contains conflicting entries for python:out
> guix package: error:   first entry: python <at> 2.7.13 /gnu/store/vysfxizaddh1q8s5qjgbdkzxx0585dzi-python-2.7.13
> guix package: error:   second entry: python <at> 3.5.3 /gnu/store/m4rdgmvdqcxs2zhv42idnz1s1w391i8j-python-3.5.3
> hint: You cannot have two different versions or variants of `python' in the same profile.
>
>
> and:
>
> $ ./pre-inst-env guix package -i guile-cairo -p foo --no-grafts
> The following package will be installed:
>    guile-cairo	1.4.1	/gnu/store/dsdbp9sqla6zz2skljlcr5zfjyzvargf-guile-cairo-1.4.1
>
> guix package: error: profile contains conflicting entries for cairo:out
> guix package: error:   first entry: cairo <at> 1.14.10 /gnu/store/c4vl4hw5jccg0b23sfvs0kdnfdbxdlgm-cairo-1.14.10
> guix package: error:    ... propagated from guile-cairo <at> 1.4.1
> guix package: error:   second entry: cairo <at> 1.14.10 /gnu/store/nwxv9s2q8pi0m6gn6fyidpj8442dwp6f-cairo-1.14.10
> guix package: error:    ... propagated from cairomm <at> 1.12.2
> hint: Try upgrading both `guile-cairo' and `cairomm', or remove one of them from the profile.

I’ve pushed the patch as commit
3b80b81358b3861ca3794105c8eb4395df97846b.  Hopefully these hints help
users get on the right track, and we can always adjust them.

Thanks,
Ludo’.




Information forwarded to bug-guix <at> gnu.org:
bug#29255; Package guix. (Sun, 10 Dec 2017 22:54:01 GMT) Full text and rfc822 format available.

Message #24 received at 29255-done <at> debbugs.gnu.org (full text, mbox):

From: Ben Sturmfels <ben <at> sturm.com.au>
To: Ludovic Courtès <ludo <at> gnu.org>,
 Ricardo Wurmus <rekado <at> elephly.net>
Cc: 29255-done <at> debbugs.gnu.org
Subject: Re: bug#29255: "Profile contains conflicting entries" could be more
 helpful
Date: Mon, 11 Dec 2017 09:53:15 +1100
[Message part 1 (text/plain, inline)]
On 11/12/17 09:47, Ludovic Courtès wrote:

>> When the version numbers are the same, we cannot tell whether a variant
>> is “older”, we can just tell that it’s different.  Also, I find it
>> useful to see the propagation stack as is currently the case.
>>
>> With the patch below, I get:
>>
>> $ ./pre-inst-env guix package -p foo -i python <at> 2 python
>> The following packages will be installed:
>>    python	2.7.13	/gnu/store/vysfxizaddh1q8s5qjgbdkzxx0585dzi-python-2.7.13
>>    python	3.5.3	/gnu/store/m4rdgmvdqcxs2zhv42idnz1s1w391i8j-python-3.5.3
>>
>> guix package: error: profile contains conflicting entries for python:out
>> guix package: error:   first entry: python <at> 2.7.13 /gnu/store/vysfxizaddh1q8s5qjgbdkzxx0585dzi-python-2.7.13
>> guix package: error:   second entry: python <at> 3.5.3 /gnu/store/m4rdgmvdqcxs2zhv42idnz1s1w391i8j-python-3.5.3
>> hint: You cannot have two different versions or variants of `python' in the same profile.
>>
>>
>> and:
>>
>> $ ./pre-inst-env guix package -i guile-cairo -p foo --no-grafts
>> The following package will be installed:
>>    guile-cairo	1.4.1	/gnu/store/dsdbp9sqla6zz2skljlcr5zfjyzvargf-guile-cairo-1.4.1
>>
>> guix package: error: profile contains conflicting entries for cairo:out
>> guix package: error:   first entry: cairo <at> 1.14.10 /gnu/store/c4vl4hw5jccg0b23sfvs0kdnfdbxdlgm-cairo-1.14.10
>> guix package: error:    ... propagated from guile-cairo <at> 1.4.1
>> guix package: error:   second entry: cairo <at> 1.14.10 /gnu/store/nwxv9s2q8pi0m6gn6fyidpj8442dwp6f-cairo-1.14.10
>> guix package: error:    ... propagated from cairomm <at> 1.12.2
>> hint: Try upgrading both `guile-cairo' and `cairomm', or remove one of them from the profile.
> 
> I’ve pushed the patch as commit
> 3b80b81358b3861ca3794105c8eb4395df97846b.  Hopefully these hints help
> users get on the right track, and we can always adjust them.

That's Ludo, that's great!

[signature.asc (application/pgp-signature, attachment)]

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Mon, 08 Jan 2018 12:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 6 years and 108 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.