[pkgcore] #194: OverlayRepo doesn't cover the corner case whe the same cpv is present in multiple slave repos

1 view
Skip to first unread message

pkgcore

unread,
May 20, 2008, 10:38:16 PM5/20/08
to pkgco...@googlegroups.com
#194: OverlayRepo doesn't cover the corner case whe the same cpv is present in
multiple slave repos
---------------------+------------------------------------------------------
Reporter: nus | Owner:
Type: defect | Status: new
Priority: normal | Milestone: 0.4.7.3
Component: pkgcore | Version: 0.4.7.2
Keywords: |
---------------------+------------------------------------------------------
{{{
>>> config = pkgcore.config.load_config()
>>> domain = config.get_default('domain')
>>> all_repos=domain.all_repos
>>> restriction = parserestrict.parse_match("x11-libs/libXft::gentoo")
>>> all_repos.trees[1]
<filterTree raw_repo=<pkgcore.ebuild.repository.ConfiguredTree
raw_repo=<pkgcore.ebuild.overlay_repository.OverlayRepo object at
0xaa66cec> wrapped=['provides', 'license', 'fetchables', 'post_rdepends',
'depends', 'rdepends', 'src_uri'] @0xaf4b96c> restriction=<AndRestriction
negate=False type='package' finalized=False restrictions=[<OrRestriction
negate=False type='package' finalized=False
restrictions=[<pkgcore.restrictions.delegated.delegate object at
0xae254ec>, <pkgcore.restrictions.delegated.delegate object at 0xaf434cc>]
@0xa30252c>, <pkgcore.restrictions.delegated.delegate object at
0xaf43c0c>] @0xa30248c> sentinel=True @0xaf4ba8c>
>>> [x for x in r1.raw_repo.itermatch(restriction)]
[]
>>> r1 = all_repos.trees[1].raw_repo
>>> r1
<pkgcore.ebuild.repository.ConfiguredTree
raw_repo=<pkgcore.ebuild.overlay_repository.OverlayRepo object at
0xaa66cec> wrapped=['provides', 'license', 'fetchables', 'post_rdepends',
'depends', 'rdepends', 'src_uri'] @0xaf4b96c>
>>> r1.raw_repo.trees(<ebuild SlavedTree location='/usr/local/layman/pro-
audio' @0xaa66b8c>, <ebuild SlavedTree location='/usr/local/layman
/pkgcore-bzr' @0xabb758c>, <ebuild SlavedTree location='/usr/local/layman
/gentoo-xeffects' @0xacde18c>, <ebuild SlavedTree
location='/usr/local/layman/gentoo-soor' @0xace910c>, <ebuild SlavedTree
location='/usr/local/layman/gentoo-lisp' @0xacf10ec>, <ebuild SlavedTree
location='/usr/local/layman/emacs' @0xacd124c>, <ebuild UnconfiguredTree
location='/usr/portage' @0xacf618c>)
>>> slaved_trees = [ t for t in r1.raw_repo.trees ]
>>> slaved_trees
[<ebuild SlavedTree location='/usr/local/layman/pro-audio' @0xaa66b8c>,
<ebuild SlavedTree location='/usr/local/layman/pkgcore-bzr' @0xabb758c>,
<ebuild SlavedTree location='/usr/local/layman/gentoo-xeffects'
@0xacde18c>, <ebuild SlavedTree location='/usr/local/layman/gentoo-soor'
@0xace910c>, <ebuild SlavedTree location='/usr/local/layman/gentoo-lisp'
@0xacf10ec>, <ebuild SlavedTree location='/usr/local/layman/emacs'
@0xacd124c>, <ebuild UnconfiguredTree location='/usr/portage' @0xacf618c>]
>>> [x for x in slaved_trees[6].itermatch(restriction)]
[<<class 'pkgcore.ebuild.ebuild_src.package'> cpv='x11-libs/libXft-2.1.12'
@0xb46d2d4>]
>>>
}}}

--
Ticket URL: <http://www.pkgcore.org/trac/pkgcore/ticket/194>
pkgcore <http://www.pkgcore.org/trac/pkgcore>
pkgcore package manager

pkgcore

unread,
May 20, 2008, 11:32:56 PM5/20/08
to pkgco...@googlegroups.com
#194: a repo_atom be able to access a shadowed cpv in an overlay stack
----------------------+-----------------------------------------------------
Reporter: nus | Owner:
Type: defect | Status: new
Priority: normal | Milestone: 0.4.7.3
Component: pkgcore | Version: 0.4.7.2
Resolution: | Keywords:
----------------------+-----------------------------------------------------
Changes (by nus):

* summary: OverlayRepo doesn't cover the corner case whe the same cpv is
present in multiple slave repos => a repo_atom
be able to access a shadowed cpv in an overlay
stack

Comment:

ferringb pointed on irc that the patch effectively converts overlay trees
to multiplex, so it's a wrong solution. The problem still stays: given
same cpv for multiple ebuilds in multiple overlay repos, pmerge
<cpv>::<repo_id> fails to access all but one.

--
Ticket URL: <http://www.pkgcore.org/trac/pkgcore/ticket/194#comment:1>

pkgcore

unread,
May 20, 2008, 11:33:43 PM5/20/08
to pkgco...@googlegroups.com
#194: a repo_atom should be able to access a shadowed cpv in an overlay stack
----------------------+-----------------------------------------------------
Reporter: nus | Owner:
Type: defect | Status: new
Priority: normal | Milestone: 0.4.7.3
Component: pkgcore | Version: 0.4.7.2
Resolution: | Keywords:
----------------------+-----------------------------------------------------
Changes (by nus):

* summary: a repo_atom be able to access a shadowed cpv in an overlay
stack => a repo_atom should be able to access a
shadowed cpv in an overlay stack

--
Ticket URL: <http://www.pkgcore.org/trac/pkgcore/ticket/194#comment:2>

pkgcore

unread,
May 20, 2008, 11:52:01 PM5/20/08
to pkgco...@googlegroups.com
#194: a repo_atom should be able to access a shadowed cpv in an overlay stack
----------------------+-----------------------------------------------------
Reporter: nus | Owner:
Type: defect | Status: new
Priority: normal | Milestone: 0.4.7.3
Component: pkgcore | Version: 0.4.7.2
Resolution: | Keywords:
----------------------+-----------------------------------------------------
Comment (by nus):

'''A more appropriate example:'''
{{{
>>> import pkgcore.config
>>> from pkgcore.util import parserestrict
>>> config = pkgcore.config.load_config()
>>> domain = config.get_default('domain')
>>> all_repos = domain.all_repos
>>> overlay_tree = all_repos.trees[1]
>>> restr = parserestrict.parse_match('x11-libs/libXft')
>>> restr_gentoo = parserestrict.parse_match('x11-libs/libXft::gentoo')
>>> restr_xeffects =
parserestrict.parse_match('x11-libs/libXft::xeffects')
>>> restr_soor = parserestrict.parse_match('x11-libs/libXft::soor')
>>> key_matches = set(x.key for x in all_repos.itermatch(restr))
>>> key_matches_gentoo = set(x.key for x in
all_repos.itermatch(restr_gentoo))
>>> key_matches_xeffects = set(x.key for x in
all_repos.itermatch(restr_xeffects))
>>> key_matches_soor = set(x.key for x in all_repos.itermatch(restr_soor))
>>> key_matches
set(['x11-libs/libXft'])
>>> key_matches_gentoo
set([])
>>> key_matches_xeffects
set(['x11-libs/libXft'])
>>> key_matches_soor
set([])
>>> [x for x in overlay_tree.itermatch(restr)]
[<PackageWrapper pkg=<<class 'pkgcore.ebuild.ebuild_src.package'>
cpv='x11-libs/libXft-2.1.12' @0x922124c> wrapped='use' @0x91fef7c>]
>>> [x for x in overlay_tree.itermatch(restr_gentoo)]
[]
>>> [x for x in overlay_tree.itermatch(restr_soor)]
[]
>>> all_repos
<pkgcore.repository.multiplex.tree
trees=(<pkgcore.ebuild.profiles.AliasedVirtuals object at 0x92177ac>,
<filterTree raw_repo=<pkgcore.ebuild.repository.ConfiguredTree
raw_repo=<pkgcore.ebuild.overlay_repository.OverlayRepo object at
0x908e50c> wrapped=['provides', 'license', 'fetchables', 'post_rdepends',
'depends', 'rdepends', 'src_uri'] @0x920f20c> restriction=<AndRestriction
negate=False type='package' finalized=False restrictions=[<OrRestriction
negate=False type='package' finalized=False
restrictions=[<pkgcore.restrictions.delegated.delegate object at
0x91fa4ec>, <pkgcore.restrictions.delegated.delegate object at 0x920488c>]
@0x91f7f04>, <pkgcore.restrictions.delegated.delegate object at
0x9204b4c>] @0x91f7edc> sentinel=True @0x920f74c>, <filterTree
raw_repo=<pkgcore.binpkg.repository.ConfiguredBinpkgTree object at
0x920f7ac> restriction=<AndRestriction negate=False type='package'
finalized=False restrictions=[<OrRestriction negate=False type='package'
finalized=False restrictions=[<pkgcore.restrictions.delegated.delegate
object at 0x91fa4ec>, <pkgcore.restrictions.delegated.delegate object at
0x920488c>] @0x91f7f04>, <pkgcore.restrictions.delegated.delegate object
at 0x9204b4c>] @0x91f7edc> sentinel=True @0x920f82c>) @0xa7b5d4cc>
}}}

--
Ticket URL: <http://www.pkgcore.org/trac/pkgcore/ticket/194#comment:3>

pkgcore

unread,
Jul 25, 2010, 7:59:31 AM7/25/10
to pkgco...@googlegroups.com
#194: a repo_atom should be able to access a shadowed cpv in an overlay stack
----------------------+-----------------------------------------------------
Reporter: nus | Owner:
Type: defect | Status: closed
Priority: normal | Milestone:
Component: pkgcore | Version: 0.4.7.2
Resolution: wontfix | Keywords:
----------------------+-----------------------------------------------------
Changes (by ferringb):

* status: new => closed
* resolution: => wontfix
* milestone: 0.4.7.3 =>


Comment:

The more I loop back to this ticket, the more I'm thinking "no".
Overlay's have explicit semantics about shadowing versions- this is both a
pro, and a con of overlays in comparison to multiplex trees.

In light of that, I'm pretty strongly inclined to not have overlays
special case repository atoms- the configuration states shadowing is how
cpvs will be stacked, configuration should be honored (even if it's
annoying at times).

--
Ticket URL: <http://www.pkgcore.org/trac/pkgcore/ticket/194#comment:4>

Reply all
Reply to author
Forward
0 new messages