Subject: bug#44452: Clash between guile-3.0 and guile-3.0-latest

From: zimoun <[email-masked]>
Date: Wed, 02 Dec 2020 12:11:12 +0100

Hi,

On Wed, 02 Dec 2020 at 10:10, divoplade <[email-masked]> wrote:
> Le mardi 01 décembre 2020 à 23:19 +0100, zimoun a écrit :
>> Moreover, %base-packages already contains Guile (’guile-3.0-latest’),
>> therefore I am not sure to understand what the bug is about
>> specifically.
>
> That's the problem. I need to remove it from %base-packages, otherwise
> the packages that propagate guile 3.0.2 can't be installed.

Sorry if I am slow, but I do not see why this use-case should be a bug.
For example,

--8<---------------cut here---------------start------------->8---
$ cat /tmp/manif.scm
(use-modules (gnu packages guile))
(packages->manifest
 (list
  guile-3.0-latest
  guile-3.0))

$ guix package -m /tmp/manif.scm -p /tmp/bug
The following packages will be installed:
   guile 3.0.2
   guile 3.0.4

guix package: error: profile contains conflicting entries for guile
guix package: error:   first entry: [email-masked] /gnu/store/ah16zr8mmfkqy23rr7jy5a842ca1q9h1-guile-3.0.4
guix package: error:   second entry: [email-masked] /gnu/store/18hp7flyb3yid3yp49i6qcdq0sbi5l1n-guile-3.0.2
hint: You cannot have two different versions or variants of `guile' in the same profile.
--8<---------------cut here---------------end--------------->8---

And this appends for any package providing multiversions (gcc, clang,
guile, etc.).  From my understanding, it is a feature. :-)

Using the option ’--allow-collisions’ avoids the error but then the
version you get is the first in the list, which could be prone error.
That’s why I am not convinced it makes sense here.

Said explicitly, if you do not want in your profile the package X
belonging to %base-packages , do not add the %base-packages list. :-) Or
create your custom list (remove the ones you do not want). I do not see
what could done on this side.  The list %base-packages is 40 packages
considered as “kind of minimal” to be able to do minimal stuff.

In one of your message, you were speaking about propagated inputs.
Which is the use-case for the option ’--allow-collisions’, IIUC.  Do you
have examples of such use-cases?  Something where:

--8<---------------cut here---------------start------------->8---
    (packages (append (list
                      pkg-1
                      pkg-2
                      …
                      %base-packages))
--8<---------------cut here---------------end--------------->8---

leads to an error or an unexpected result?

All the best,
simon