Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
how to parse "Multiple package instances..." messages
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Portage & Programming
View previous topic :: View next topic  
Author Message
piotr5
n00b
n00b


Joined: 14 Dec 2012
Posts: 56

PostPosted: Sun Jun 01, 2014 10:49 am    Post subject: how to parse "Multiple package instances..." messa Reply with quote

today I made a discovery:

usually emerge writes something alike to

Code:
!!! Multiple package instances within a single package slot have been pulled
!!! into the dependency graph, resulting in a slot conflict:

dev-python/docutils:0

  (dev-python/docutils-0.10::gentoo, ebuild scheduled for merge) pulled in by
    >=dev-python/docutils-0.7[python_targets_python2_6(-)?,python_targets_python2_7(-)?,python_targets_python3_2(-)?,python_targets_python3_3(-)?, python_targets_python3_4(-)?,python_targets_pypy(-)?,-python_single_target_python2_6(-),-python_single_target_python2_7(-), -python_single_target_python3_2(-),-python_single_target_python3_3(-),-python_single_target_python3_4(-), -python_single_target_pypy(-)] required by (dev-python/sphinx-1.2.2::gentoo, ebuild scheduled for merge)

  (dev-python/docutils-0.9.1-r1::gentoo, ebuild scheduled for merge) pulled in by
    <dev-python/docutils-0.10[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] required by (sci-mathematics/sage-doc-6.2::sage-on-gentoo, ebuild scheduled for merge)
    =dev-python/docutils-0.9.1-r1


but I solved that by unmasking docutils-0.11
so obviously "<dev-python/docutils-0.10" is a lie. actually masking =dev-python/docutils-0.10 did point me at the existence of a newer version. really strange that first portage tells me I need <0.10 and when I enforce that it tells me that <0.10 isn't good enough either and I must unmask the new version.would be nice if portage would be a bit more informative there and mention such a requirement earlier...
Back to top
View user's profile Send private message
krinn
Advocate
Advocate


Joined: 02 May 2003
Posts: 4651

PostPosted: Sun Jun 01, 2014 1:11 pm    Post subject: Reply with quote

Well, i read two conditions -
- you must use version upper 0.7
- if you use version <0.10 you then must use 0.9.1-r1 = what is unsaid : but you can use version >0.10 if you want
As soon as you ask a docutils version 0.11, first blocker is gone, second is also gone as the condition is not met
Back to top
View user's profile Send private message
steveL
Advocate
Advocate


Joined: 13 Sep 2006
Posts: 3442
Location: The Peanut Gallery

PostPosted: Sun Jun 01, 2014 5:45 pm    Post subject: Reply with quote

krinn wrote:
Well, i read two conditions -
- you must use version upper 0.7
- if you use version <0.10 you then must use 0.9.1-r1 = what is unsaid : but you can use version >0.10 if you want
As soon as you ask a docutils version 0.11, first blocker is gone, second is also gone as the condition is not met

Yeah but that's not apparent from the output, which simply states a version less then 0.10 is required for sage.
Back to top
View user's profile Send private message
cfgauss
Guru
Guru


Joined: 18 May 2005
Posts: 344
Location: USA

PostPosted: Sun Jun 01, 2014 8:20 pm    Post subject: Re: how to parse "Multiple package instances..." m Reply with quote

piotr5 wrote:

usually emerge writes something alike to

Code:
!!! Multiple package instances within a single package slot have been pulled
!!! into the dependency graph, resulting in a slot conflict:

dev-python/docutils:0

  (dev-python/docutils-0.10::gentoo, ebuild scheduled for merge) pulled in by
    >=dev-python/docutils-0.7[python_targets_python2_6(-)?,python_targets_python2_7(-)?,python_targets_python3_2(-)?,python_targets_python3_3(-)?, python_targets_python3_4(-)?,python_targets_pypy(-)?,-python_single_target_python2_6(-),-python_single_target_python2_7(-), -python_single_target_python3_2(-),-python_single_target_python3_3(-),-python_single_target_python3_4(-), -python_single_target_pypy(-)] required by (dev-python/sphinx-1.2.2::gentoo, ebuild scheduled for merge)

  (dev-python/docutils-0.9.1-r1::gentoo, ebuild scheduled for merge) pulled in by
    <dev-python/docutils-0.10[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] required by (sci-mathematics/sage-doc-6.2::sage-on-gentoo, ebuild scheduled for merge)
    =dev-python/docutils-0.9.1-r1


but I solved that by unmasking docutils-0.11.

I had this block, too, and inserting dev-python/docutils into /etc/portage/package.keywords removed the block and emerged dev-python/docutils-0.11. Many thanks for this work-around.
Back to top
View user's profile Send private message
krinn
Advocate
Advocate


Joined: 02 May 2003
Posts: 4651

PostPosted: Mon Jun 02, 2014 6:50 am    Post subject: Reply with quote

steveL wrote:
Yeah but that's not apparent from the output, which simply states a version less then 0.10 is required for sage.

It's no more different than other output steveL. When portage state something like :
!<0.7 it doesn't explicitly tells user it could use >=0.7, only what is not ok to do, and what is unsaid is suppose to be allow.

I don't think there's any lie if portage doesn't tells you >=0.7 is ok.
Back to top
View user's profile Send private message
steveL
Advocate
Advocate


Joined: 13 Sep 2006
Posts: 3442
Location: The Peanut Gallery

PostPosted: Mon Jun 02, 2014 5:52 pm    Post subject: Reply with quote

krinn:
Code:
<dev-python/docutils-0.10 required by sci-mathematics/sage-doc-6.2::sage-on-gentoo
seems like a pretty clear requirement for a version less than 0.10. What am I missing wrt versioning here?

Though it does come from an overlay, which is always suspicious, and usually what I ditch first.
Back to top
View user's profile Send private message
krinn
Advocate
Advocate


Joined: 02 May 2003
Posts: 4651

PostPosted: Tue Jun 03, 2014 11:57 am    Post subject: Reply with quote

<dev-python/docutils-0.10[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] required by (sci-mathematics/sage-doc-6.2::sage-on-gentoo, ebuild scheduled for merge)
=dev-python/docutils-0.9.1-r1

I think you miss this part, when it add a rule to it with "it must then be 0.9.1-r1"
So this remove the "must use lower than 0.1" state to change it to a "if you want use <0.1"

That's how i read it myself.
Kinda like :
"Give me a number < 10" is diff than "Give me a number but if it is < 10 you must tell me 9"
First one only allow you a number < 10, second one allow you to gave any number but only 9 if you wish gave me a number < 10
Back to top
View user's profile Send private message
mv
Advocate
Advocate


Joined: 20 Apr 2005
Posts: 4606

PostPosted: Tue Jun 03, 2014 2:15 pm    Post subject: Reply with quote

Independent of the output: Portage should have reported that the conflict can be resolved by accepting keywords for a higher version. Perhaps increasing the backtracking value would have solved the problem; it seems that the default backtracking value is too low for the complexity of the tree, meanwhile...
Back to top
View user's profile Send private message
mv
Advocate
Advocate


Joined: 20 Apr 2005
Posts: 4606

PostPosted: Tue Jun 03, 2014 2:19 pm    Post subject: Reply with quote

krinn wrote:
First one only allow you a number < 10, second one allow you to gave any number but only 9 if you wish gave me a number < 10

...and the first one is already not required, despite the output says so. It is not a blocker but an || ( ... ) requirement which is the cause of the error, but portage just ignores the second alternative in the || because with the current keywords this is not an option. However, portage should mention this option (and actually should have considered changing the keywords, internally, before reporting a blocker).
Back to top
View user's profile Send private message
steveL
Advocate
Advocate


Joined: 13 Sep 2006
Posts: 3442
Location: The Peanut Gallery

PostPosted: Wed Jun 04, 2014 5:20 am    Post subject: Reply with quote

krinn wrote:
<dev-python/docutils-0.10[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] required by (sci-mathematics/sage-doc-6.2::sage-on-gentoo, ebuild scheduled for merge)
=dev-python/docutils-0.9.1-r1

I think you miss this part, when it add a rule to it with "it must then be 0.9.1-r1"
So this remove the "must use lower than 0.1" state to change it to a "if you want use <0.1"

That's how i read it myself.
Kinda like :
"Give me a number < 10" is diff than "Give me a number but if it is < 10 you must tell me 9"
First one only allow you a number < 10, second one allow you to gave any number but only 9 if you wish gave me a number < 10

Er no, I think it's: "I had to choose something less than 10, so I chose 0.9.1-r1".
"But that conflicts with the other requirement, so you decide."

At least, that's how I read it: the requirement is from ebuild, the selection is by the mangler. I'm pretty sure that's the correct interpretation, as I've been working on blockers quite a lot recently, though we only look at the reason line. If I'm wrong, I'll smile and take in the info :-)

Admittedly I don't have the ebuild, but your reading sounds like a very specific dependency by sage-on-gentoo; is it a binary package? (and if so how come it can use a later version?)

I think it's as mv said: the default backtrack (30 iirc) doesn't always cover everything when a large dep-web has conflicts, so it likely didn't get to consider the keywording option. Certainly I've seen people recommend increasing it, eg try 100, in #-portage, before investigating a tree-conflict.
Back to top
View user's profile Send private message
mv
Advocate
Advocate


Joined: 20 Apr 2005
Posts: 4606

PostPosted: Wed Jun 04, 2014 9:44 am    Post subject: Reply with quote

steveL wrote:
Er no, I think it's: "I had to choose something less than 10, so I chose 0.9.1-r1".

Yes, that's the proper interpretation. It might also be that this choice is influenced by required USE-deps (for this reason, it need not necessarily by the largest number).
Quote:
sounds like a very specific dependency by sage-on-gentoo

The dependency reads
Code:
|| ( <dev-python/docutil-10[$FLAGS] >dev-python/docutil-10[$FLAGS )
so it is "normal".
Back to top
View user's profile Send private message
steveL
Advocate
Advocate


Joined: 13 Sep 2006
Posts: 3442
Location: The Peanut Gallery

PostPosted: Wed Jun 04, 2014 4:34 pm    Post subject: Reply with quote

Ah thanks for confirmation and verification, mv.

The || looks odd to me: is it simply trying to exclude 0.10?

I'd have expected a blocker against the specific version.
Back to top
View user's profile Send private message
mv
Advocate
Advocate


Joined: 20 Apr 2005
Posts: 4606

PostPosted: Wed Jun 04, 2014 8:38 pm    Post subject: Reply with quote

steveL wrote:
The || looks odd to me: is it simply trying to exclude 0.10?
I'd have expected a blocker against the specific version.

Why should it block if it works with all versions except 0.10? There is no reason to forbid 0.10 to be on the system (e.g. in a slotted variant).
OK, you can argue that docutils currently (and in the main tree) is not slotted. In this case, the || should be semantically exactly equivalent to the "and [blocker]" version - at least, it is so logically. If portage treats it differently, there is someting wrong with portage...
Back to top
View user's profile Send private message
steveL
Advocate
Advocate


Joined: 13 Sep 2006
Posts: 3442
Location: The Peanut Gallery

PostPosted: Thu Jun 05, 2014 4:11 am    Post subject: Reply with quote

mv wrote:
steveL wrote:
The || looks odd to me: is it simply trying to exclude 0.10?
I'd have expected a blocker against the specific version.

Why should it block if it works with all versions except 0.10? There is no reason to forbid 0.10 to be on the system (e.g. in a slotted variant).
OK, you can argue that docutils currently (and in the main tree) is not slotted. In this case, the || should be semantically exactly equivalent to the "and [blocker]" version - at least, it is so logically. If portage treats it differently, there is someting wrong with portage...

If it were slotted, and it only worked with a specific slot (or perhaps at least a specific slot) then I'd expect a slot-based dependency.

In this case, you're saying the || is semantically equivalent to a block, or should be. If that's so, then the block is a clearer expression of what's happening, that's all.

Though I agree there's no need to forbid it being on the system, if that's what you're doing anyway (since you're requiring any version but that, and they're all in the same slot) then you might as well express it clearly, and let the mangler deal with a simpler deptree, imo.
IOW I don't see what it adds to make it more complex, and afaict you've said "it adds nothing", so to me it seems pointless complexity.

Nothing major that I care a great deal about, ofc; it was just an idle comment.
Back to top
View user's profile Send private message
steveL
Advocate
Advocate


Joined: 13 Sep 2006
Posts: 3442
Location: The Peanut Gallery

PostPosted: Thu Jun 05, 2014 4:17 am    Post subject: Reply with quote

mv wrote:
The dependency reads
Code:
|| ( <dev-python/docutil-10[$FLAGS] >dev-python/docutil-10[$FLAGS )
so it is "normal".

There's a missing right square bracket there, btw; if you pasted it, that might explain the issue, though that wouldn't get past repoman, I'd have thought, nor cache building.
Back to top
View user's profile Send private message
mv
Advocate
Advocate


Joined: 20 Apr 2005
Posts: 4606

PostPosted: Thu Jun 05, 2014 6:59 am    Post subject: Reply with quote

steveL wrote:
if you pasted it

No; I had looked it up with some git browser and written from memory, not caring about typos...
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Portage & Programming All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum