unofficial mirror of help-guix@gnu.org 
 help / color / mirror / Atom feed
* guix package conflict
@ 2019-08-10  5:24 Andy Tai
  2019-08-10  7:34 ` Ricardo Wurmus
  0 siblings, 1 reply; 7+ messages in thread
From: Andy Tai @ 2019-08-10  5:24 UTC (permalink / raw)
  To: help-guix

Hi, on my Fedora system running guix as guix on a foreign distribution, I
run into this:

guix package: error: profile contains conflicting entries for cairo
guix package: error:   first entry: cairo@1.16.0
/gnu/store/4d8rc6vjkhsk1b20rigz0nzl7zffn4b5-cairo-1.16.0
guix package: error:    ... propagated from python-pycairo@1.17.1
guix package: error:   second entry: cairo@1.16.0
/gnu/store/cwqv36m84ipbpwn52wyy560xbxrzknsz-cairo-1.16.0
guix package: error:    ... propagated from pango@1.42.4
guix package: error:    ... propagated from gtk+@3.24.9
hint: Try upgrading both `python-pycairo' and `gtk+', or remove one of them
from
the profile.


I regularly do

guix pull && guix package -u

so I cannot recall how I got into this situation.   I have packages
depending on both gtk+ and
python-pycairo' so it seems I cannot just remove either one of them.  What
would be the best approach to fix this?
-- 
Andy Tai, atai@atai.org, Skype: licheng.tai, Line: andy_tai, WeChat:
andytai1010
Year 2019 民國108年
自動的精神力是信仰與覺悟
自動的行為力是勞動與技能

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: guix package conflict
  2019-08-10  5:24 guix package conflict Andy Tai
@ 2019-08-10  7:34 ` Ricardo Wurmus
  2019-08-10  9:58   ` Carlo Zancanaro
  0 siblings, 1 reply; 7+ messages in thread
From: Ricardo Wurmus @ 2019-08-10  7:34 UTC (permalink / raw)
  To: Andy Tai; +Cc: help-guix


Hi Andy,

> guix package: error: profile contains conflicting entries for cairo
> guix package: error:   first entry: cairo@1.16.0
> /gnu/store/4d8rc6vjkhsk1b20rigz0nzl7zffn4b5-cairo-1.16.0
> guix package: error:    ... propagated from python-pycairo@1.17.1
> guix package: error:   second entry: cairo@1.16.0
> /gnu/store/cwqv36m84ipbpwn52wyy560xbxrzknsz-cairo-1.16.0
> guix package: error:    ... propagated from pango@1.42.4
> guix package: error:    ... propagated from gtk+@3.24.9
> hint: Try upgrading both `python-pycairo' and `gtk+', or remove one of them
> from
> the profile.

Have you tried that?

> I regularly do
>
> guix pull && guix package -u
>
> so I cannot recall how I got into this situation.   I have packages
> depending on both gtk+ and
> python-pycairo' so it seems I cannot just remove either one of them.  What
> would be the best approach to fix this?

Does “guix package -u” not fix this problem for you?  Or is this the
output of “guix package -u”?

-- 
Ricardo

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: guix package conflict
  2019-08-10  7:34 ` Ricardo Wurmus
@ 2019-08-10  9:58   ` Carlo Zancanaro
  2019-08-11  7:18     ` Andy Tai
  2019-08-11 17:26     ` Pierre Neidhardt
  0 siblings, 2 replies; 7+ messages in thread
From: Carlo Zancanaro @ 2019-08-10  9:58 UTC (permalink / raw)
  To: help-guix; +Cc: Andy Tai


On Sat, Aug 10 2019, Ricardo Wurmus wrote:
>> hint: Try upgrading both `python-pycairo' and `gtk+', or remove 
>> one of them from the profile.
>
> Have you tried that?

In particular, I think `guix package -i python-pycairo gtk+` might 
do the trick.

> Does “guix package -u” not fix this problem for you?  Or is this 
> the output of “guix package -u”?

It looks like `guix package -u` compares the version of the 
package, and only updates if the package's version has changed 
(and even then, only if it has increased). This means that if a 
package's inputs (and thus its store hash) have changed, but its 
version has not, the version left in the profile will have 
outdated inputs, which can conflict if they are propagated. So 
`guix package -u` doesn't fix this problem.

`guix package -i`, on the other hand, just installs whatever it's 
told to, so it will install the same package at the same version, 
but with updated inputs. Then all the propagated inputs end up 
being the same, so there is no conflict.

Carlo

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: guix package conflict
  2019-08-10  9:58   ` Carlo Zancanaro
@ 2019-08-11  7:18     ` Andy Tai
  2019-08-11 17:26     ` Pierre Neidhardt
  1 sibling, 0 replies; 7+ messages in thread
From: Andy Tai @ 2019-08-11  7:18 UTC (permalink / raw)
  To: Carlo Zancanaro, help-guix

This command solved the problem.

guix package -i gtk+ python-pycairo python2-pycairo  pango cairo fontconfig

Thanks

On Sat, Aug 10, 2019 at 2:58 AM Carlo Zancanaro <carlo@zancanaro.id.au>
wrote:

>
> On Sat, Aug 10 2019, Ricardo Wurmus wrote:
> >> hint: Try upgrading both `python-pycairo' and `gtk+', or remove
> >> one of them from the profile.
> >
> > Have you tried that?
>
> In particular, I think `guix package -i python-pycairo gtk+` might
> do the trick.
>
> > Does “guix package -u” not fix this problem for you?  Or is this
> > the output of “guix package -u”?
>
> It looks like `guix package -u` compares the version of the
> package, and only updates if the package's version has changed
> (and even then, only if it has increased). This means that if a
> package's inputs (and thus its store hash) have changed, but its
> version has not, the version left in the profile will have
> outdated inputs, which can conflict if they are propagated. So
> `guix package -u` doesn't fix this problem.
>
> `guix package -i`, on the other hand, just installs whatever it's
> told to, so it will install the same package at the same version,
> but with updated inputs. Then all the propagated inputs end up
> being the same, so there is no conflict.
>
> Carlo
>


-- 
Andy Tai, atai@atai.org, Skype: licheng.tai, Line: andy_tai, WeChat:
andytai1010
Year 2019 民國108年
自動的精神力是信仰與覺悟
自動的行為力是勞動與技能

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: guix package conflict
  2019-08-10  9:58   ` Carlo Zancanaro
  2019-08-11  7:18     ` Andy Tai
@ 2019-08-11 17:26     ` Pierre Neidhardt
  2019-08-11 19:00       ` Mark H Weaver
  1 sibling, 1 reply; 7+ messages in thread
From: Pierre Neidhardt @ 2019-08-11 17:26 UTC (permalink / raw)
  To: Carlo Zancanaro, help-guix; +Cc: Andy Tai

[-- Attachment #1: Type: text/plain, Size: 860 bytes --]

Carlo Zancanaro <carlo@zancanaro.id.au> writes:

> It looks like `guix package -u` compares the version of the 
> package, and only updates if the package's version has changed 
> (and even then, only if it has increased). This means that if a 
> package's inputs (and thus its store hash) have changed, but its 
> version has not, the version left in the profile will have 
> outdated inputs, which can conflict if they are propagated. So 
> `guix package -u` doesn't fix this problem.
>
> `guix package -i`, on the other hand, just installs whatever it's 
> told to, so it will install the same package at the same version, 
> but with updated inputs. Then all the propagated inputs end up 
> being the same, so there is no conflict.

I didn't know that! O.o
Is this documented in the manual?

-- 
Pierre Neidhardt
https://ambrevar.xyz/

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: guix package conflict
  2019-08-11 17:26     ` Pierre Neidhardt
@ 2019-08-11 19:00       ` Mark H Weaver
  2019-08-11 21:01         ` Carlo Zancanaro
  0 siblings, 1 reply; 7+ messages in thread
From: Mark H Weaver @ 2019-08-11 19:00 UTC (permalink / raw)
  To: Pierre Neidhardt; +Cc: help-guix, Andy Tai

Pierre Neidhardt <mail@ambrevar.xyz> writes:

> Carlo Zancanaro <carlo@zancanaro.id.au> writes:
>
>> It looks like `guix package -u` compares the version of the 
>> package, and only updates if the package's version has changed 
>> (and even then, only if it has increased).

What leads you to believe this?

I think you're mistaken, based both on past experience and also from
examining the current code.  The relevant procedure is
'transaction-upgrade-entry' in (guix scripts package), here:

  https://git.savannah.gnu.org/cgit/guix.git/tree/guix/scripts/package.scm?id=c383c36edeb7eb358f142c52276d6e5d32bda044#n225

You can see there where 'version-compare' is used to compare the
candidate version and the existing version.  If the version numbers are
equal, then the derivation output paths are compared.  If the output
paths differ, the new version will be reinstalled.

This is certainly the behavior I remember from using --upgrade myself
during the early years of Guix, although in recent years I've been
using the declarative approach to maintain my profile, using
"guix package --manifest".

>> This means that if a 
>> package's inputs (and thus its store hash) have changed, but its 
>> version has not, the version left in the profile will have 
>> outdated inputs, which can conflict if they are propagated. So 
>> `guix package -u` doesn't fix this problem.
>>
>> `guix package -i`, on the other hand, just installs whatever it's 
>> told to, so it will install the same package at the same version, 
>> but with updated inputs. Then all the propagated inputs end up 
>> being the same, so there is no conflict.
>
> I didn't know that! O.o
> Is this documented in the manual?

I hope not.  If it truly behaves the way Carlo described, it's a bug.

     Thanks,
       Mark

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: guix package conflict
  2019-08-11 19:00       ` Mark H Weaver
@ 2019-08-11 21:01         ` Carlo Zancanaro
  0 siblings, 0 replies; 7+ messages in thread
From: Carlo Zancanaro @ 2019-08-11 21:01 UTC (permalink / raw)
  To: Mark H Weaver; +Cc: help-guix

Hey Mark,

On Mon, Aug 12 2019, Mark H Weaver wrote:
> What leads you to believe this?
>
> I think you're mistaken, based both on past experience and also 
> from examining the current code.

After taking another look at the code, I agree with you.

> The relevant procedure is 'transaction-upgrade-entry' in (guix 
> scripts package), here:
>
>   https://git.savannah.gnu.org/cgit/guix.git/tree/guix/scripts/package.scm?id=c383c36edeb7eb358f142c52276d6e5d32bda044#n225

This is the code I was looking at, but I think I was just too 
hasty when I looked at it. In the past I've seen conflicts similar 
to what Andy saw, and was always able to resolve them easily by 
using "guix package -i" rather than "guix package -u", from which 
I formed my hypothesis about how --upgrade deals with versions.

> This is certainly the behavior I remember from using --upgrade 
> myself during the early years of Guix, although in recent years 
> I've been using the declarative approach to maintain my profile, 
> using "guix package --manifest".

I have also switched to using --manifest, so my memories of 
--upgrade aren't very strong.

Carlo

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2019-08-11 21:01 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-10  5:24 guix package conflict Andy Tai
2019-08-10  7:34 ` Ricardo Wurmus
2019-08-10  9:58   ` Carlo Zancanaro
2019-08-11  7:18     ` Andy Tai
2019-08-11 17:26     ` Pierre Neidhardt
2019-08-11 19:00       ` Mark H Weaver
2019-08-11 21:01         ` Carlo Zancanaro

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).