Index: portage.py =================================================================== RCS file: /var/cvsroot/gentoo-src/portage/pym/portage.py,v retrieving revision 1.524.2.76 diff -u -r1.524.2.76 portage.py --- portage.py 29 May 2005 12:40:08 -0000 1.524.2.76 +++ portage.py 11 Jun 2005 13:51:49 -0000 @@ -3913,7 +3913,6 @@ # keywords checking mygroups = portdb.aux_get(mycpv, ["KEYWORDS"])[0].split() pgroups=groups[:] - myarch = settings["ARCH"] pkgdict = settings.pkeywordsdict cp = dep_getkey(mycpv) @@ -3922,31 +3921,36 @@ for match in matches: pgroups.extend(pkgdict[cp][match]) - kmask = "missing" - + matched = False for keyword in pgroups: if keyword in mygroups: - kmask=None + matched = True + break + + if not matched: + if "*" in mygroups: + pass + else: + mypgroups = [] + oldlen = len(rValue) - if kmask: - fallback = None - for gp in mygroups: - if gp=="*": - kmask=None - break - elif gp=="-*": - fallback="-*" - elif gp=="-"+myarch: - kmask="-"+myarch - break - elif gp=="~"+myarch: - kmask="~"+myarch - break - if kmask == "missing" and fallback: - kmask = fallback + for group in pgroups: + if group[0] == "~": + group = group[1:] + if group in mypgroups: + continue + mypgroups.append(group) + if "~" + group in mygroups: + rValue.append("~"+group+" keyword") + elif "-" + group in mygroups: + rValue.append("-"+group+" keyword") + + if oldlen == len(rValue): + if "-*" in mygroups: + rValue.append("-* keyword") + else: + rValue.append("missing keyword") - if kmask: - rValue.append(kmask+" keyword") return rValue def fixdbentries(old_value, new_value, dbdir):