Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 148251 - net-p2p/bittorrent-4.4.0 blocks a virtual it provides
Summary: net-p2p/bittorrent-4.4.0 blocks a virtual it provides
Status: RESOLVED INVALID
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Gentoo net-p2p team
URL:
Whiteboard:
Keywords: QAbaddep
Depends on:
Blocks:
 
Reported: 2006-09-19 14:38 UTC by Alexander Færøy
Modified: 2006-09-24 05:11 UTC (History)
5 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alexander Færøy 2006-09-19 14:38:04 UTC
Heya,

net-p2p/bittorrent-4.4.0 has a blocker which is virtual/bittorrent, but it also provides it. Guess that is bad :(

Regards,
Alexander
Comment 1 Jakub Moc (RETIRED) gentoo-dev 2006-09-19 14:49:35 UTC
Nope, there's nothing wrong with that. Same is done for packages providing virtual/mta, e.g.
Comment 2 Danny van Dyk (RETIRED) gentoo-dev 2006-09-20 03:40:46 UTC
Jakub, you're wrong here. IMHO this is a bug and it was me who told
eroyf to file a bug.
Comment 3 Danny van Dyk (RETIRED) gentoo-dev 2006-09-20 03:43:21 UTC
Assigning to net-p2p@g.o, CC'ing qa@gentoo.org.
Comment 4 Jakub Moc (RETIRED) gentoo-dev 2006-09-20 04:11:25 UTC
No, it's not a bug. Again, see all the ebuilds that provide virtual/mta.
Comment 5 Brian Harring (RETIRED) gentoo-dev 2006-09-20 04:26:45 UTC
@kugelfang, key thing is "imho"; majority of the tree disagrees with you on this one, and the reasoning for support blocking the virtual a pkg provides (as annnoying as it may be to implement in a resolver) is to enable blocking a common point, rather then having to try to block every potential provider of the virtual.

It's long term correct behaviour; stating it's not doesn't invalidate years of reliance on this feature; non bug.
Comment 6 Brian Harring (RETIRED) gentoo-dev 2006-09-20 04:35:44 UTC
one exemption here is if the comment is specifically that bittorrent is blocking virtual (blocking all others), and isn't required; that's seperate from "old style providers can't block the virtuals they provide".
Comment 7 Danny van Dyk (RETIRED) gentoo-dev 2006-09-20 04:54:51 UTC
@Ferringb: You are no dev anymore. You _should_ know how to operate in here.
Please don't remove foreign aliases anymore, especially as the CC'ed party
could not respond yet, or I will take appropriate means to keep you from doing
so.

@Portage-devs,qa,net-p2p: There are ways to circumvent blocking the virtual,
specifically to move it to a new-style virtual. What I would like to elaborate:
Is it worth to do this move to circumvent a nuisance like "Package indirectly
blocks itself".
Comment 8 Brian Harring (RETIRED) gentoo-dev 2006-09-20 05:04:07 UTC
(In reply to comment #7)
> @Ferringb: You are no dev anymore. You _should_ know how to operate in here.
> Please don't remove foreign aliases anymore, especially as the CC'ed party
> could not respond yet, or I will take appropriate means to keep you from doing
> so.
Portage devs are the folks who control depset behaviour, not QA, hence the reassign.

Either way will let them comment.
Comment 9 Jakub Moc (RETIRED) gentoo-dev 2006-09-20 05:16:52 UTC
There's no need to circumvent anything here. New style virtual won't solve the issue we are talking about here. 

To re-iterate: You have X packages providing the same functionality and same binaries, so you still need the blocker to be valid, new-style virtual will only complicate the situation needlessly. It will be plain redundant and you'll have to stick individual blockers into every single ebuild "providing" the virtual, since you can't block the new-style virtual as a whole anymore. Where's the advantage in this I fail to see. I also don't see what's the QA issue here.
Comment 10 Danny van Dyk (RETIRED) gentoo-dev 2006-09-20 05:34:28 UTC
Jakub: You're right, new-style virtual can not fix it. Still, an ebuild
blocking the virtual it provides, blocks itself (indirectly).
What is the reason not to block all other providers?
Comment 11 Kurt Lieber 2006-09-20 05:36:55 UTC
test
Comment 12 Brian Harring (RETIRED) gentoo-dev 2006-09-20 05:38:29 UTC
(In reply to comment #10)
> Jakub: You're right, new-style virtual can not fix it. Still, an ebuild
> blocking the virtual it provides, blocks itself (indirectly).

new style can 'fix it'; basically need disjunctive form of an XOR for it however (which to quote jstubbs, is "horrid horrid horrid" ;)

> What is the reason not to block all other providers?
!virtual/bittorrent in a pkg that provides virtual/bittorrent *is* blocking all other providers; assume miscommunication here, or you're missing how it's interpreted...
Comment 13 Simon Stelling (RETIRED) gentoo-dev 2006-09-20 05:39:53 UTC
(In reply to comment #10)
> What is the reason not to block all other providers?

Assume all n packages that provide the virtual block the virtual. Every time you add a new package that provides the same virtual, you have to edit 1 ebuild (the new one).

Assume all n packages that provide the virtual block the other packages providing the virtual. Every time you add a new package that provides the same virtual, you have to edit n+1 packages' ebuilds.

I leave it up to you which one is better in regard to maintainability ;)
Comment 14 Jason Stubbs (RETIRED) gentoo-dev 2006-09-20 05:48:27 UTC
I'll keep this short...

"New style" virtuals don't cover the common case of a package blocking against the virtual that depends on itself. A current workaround is to use the "old style" virtuals' PROVIDE metadata in the related packages. "New style" virtuals should RDEPEND on the virtual package to indicate that they "provide" the virtual.

This can be solved with two key additions. XOR deps in addition to the existing OR and (implicit) AND deps; and (minimally) enforcing blockers from installed packages. Theoretically, only the latter is required.

With the latter, a "one package only" virtual would look something like:
RDEPEND="|| ( ( a !b !c ) ( !a b !c ) ( !a !b c ) )"

With XOR deps, this would be reduced to:
RDEPEND="^^ ( a b c )"

That about covers it.. There may be other more elegant solutions, but this needs to be discussed on -dev@ anyway. Will do so sometime this week when I'm not working.

As for bittorrent, it already has a PROVIDE of virtual/bittorrent so it is adhering to the "old style" virtuals "specification" as implemented in all portage versions supporting virtuals.
Comment 15 Danny van Dyk (RETIRED) gentoo-dev 2006-09-20 05:52:41 UTC
Thank you Jason, i'm looking forward to your mail.
Comment 16 Jason Stubbs (RETIRED) gentoo-dev 2006-09-24 05:11:37 UTC
After discussing this with others, I realized that adding XOR support will likely require an EAPI change. That's going to result in a whole heap of discussion/arguing that I really don't want to bother with. I'm happy to implement what's left to support the complete dropping of old-style virtuals. Opening it for discussion on -dev and getting it approved? I'll cowardly leave that to somebody else.