From ab258378535e2886250d94a6bf2aaad057906ec3 Mon Sep 17 00:00:00 2001 From: Marius Mauch Date: Mon, 30 Apr 2007 03:16:06 +0000 Subject: Fix -* handling in gvisible to match incremental semantics svn path=/main/trunk/; revision=6459 --- pym/portage/__init__.py | 10 ++++++---- pym/portage/dbapi/porttree.py | 14 ++++++++------ 2 files changed, 14 insertions(+), 10 deletions(-) (limited to 'pym') diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index 04294ce12..5e6e27521 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -4693,12 +4693,14 @@ def getmaskingstatus(mycpv, settings=None, portdb=None): if matches: inc_pgroups = [] for x in pgroups: - if x != "-*" and x.startswith("-"): + if x == "-*": + inc_pgroups = [] + elif x[0] == "-": try: inc_pgroups.remove(x[1:]) except ValueError: pass - if x not in inc_pgroups: + elif x not in inc_pgroups: inc_pgroups.append(x) pgroups = inc_pgroups del inc_pgroups @@ -4715,10 +4717,10 @@ def getmaskingstatus(mycpv, settings=None, portdb=None): if gp=="*": kmask=None break - elif gp=="-"+myarch: + elif gp=="-"+myarch and myarch in pgroups: kmask="-"+myarch break - elif gp=="~"+myarch: + elif gp=="~"+myarch and myarch in pgroups: kmask="~"+myarch break diff --git a/pym/portage/dbapi/porttree.py b/pym/portage/dbapi/porttree.py index ad6ccc45a..16e962a85 100644 --- a/pym/portage/dbapi/porttree.py +++ b/pym/portage/dbapi/porttree.py @@ -668,24 +668,26 @@ class portdbapi(dbapi): for atom in matches: pgroups.extend(pkgdict[cp][atom]) if matches: + # normalize pgroups with incrementals logic so it + # matches ACCEPT_KEYWORDS behavior inc_pgroups = [] for x in pgroups: - # The -* special case should be removed once the tree - # is clean of KEYWORDS=-* crap - if x != "-*" and x.startswith("-"): + if x == "-*": + inc_pgroups = [] + elif x[0] == "-": try: inc_pgroups.remove(x[1:]) except ValueError: pass - if x not in inc_pgroups: + elif x not in inc_pgroups: inc_pgroups.append(x) pgroups = inc_pgroups del inc_pgroups hasstable = False hastesting = False for gp in mygroups: - if gp=="*": - writemsg("--- WARNING: Package '%s' uses '*' keyword.\n" % mycpv, + if gp == "*" or (gp == "-*" and len(mygroups) == 1): + writemsg("--- WARNING: Package '%s' uses '%s' keyword.\n" % (mycpv, gp), noiselevel=-1) match=1 break -- cgit v1.2.3-1-g7c22