summaryrefslogtreecommitdiffstats
path: root/pym/portage/package/ebuild/_config/KeywordsManager.py
diff options
context:
space:
mode:
authorBrian Dolbec <brian.dolbec@gmail.com>2011-01-30 20:36:45 -0800
committerZac Medico <zmedico@gentoo.org>2011-01-30 21:38:21 -0800
commit60ffb9adc463f62663095a5d7588f9ae7edd097f (patch)
tree825d9a7e5acd39d4a6b222a7455de6356d1ea138 /pym/portage/package/ebuild/_config/KeywordsManager.py
parent53a0fa1b88bbf529bb8875cb63db74dca628e648 (diff)
downloadportage-60ffb9adc463f62663095a5d7588f9ae7edd097f.tar.gz
portage-60ffb9adc463f62663095a5d7588f9ae7edd097f.tar.bz2
portage-60ffb9adc463f62663095a5d7588f9ae7edd097f.zip
Properly fix my earlier breakage
Diffstat (limited to 'pym/portage/package/ebuild/_config/KeywordsManager.py')
-rw-r--r--pym/portage/package/ebuild/_config/KeywordsManager.py59
1 files changed, 21 insertions, 38 deletions
diff --git a/pym/portage/package/ebuild/_config/KeywordsManager.py b/pym/portage/package/ebuild/_config/KeywordsManager.py
index b01604e66..d153e956d 100644
--- a/pym/portage/package/ebuild/_config/KeywordsManager.py
+++ b/pym/portage/package/ebuild/_config/KeywordsManager.py
@@ -118,31 +118,19 @@ class KeywordsManager(object):
mygroups = self.getKeywords(cpv, slot, keywords, repo)
# Repoman may modify this attribute as necessary.
- pgroups = global_accept_keywords.split()
+ pgroups = set(global_accept_keywords.split())
unmaskgroups = self.getPKeywords(cpv, slot, repo,
global_accept_keywords)
- pgroups.extend(unmaskgroups)
+ pgroups.update(unmaskgroups)
# Hack: Need to check the env directly here as otherwise stacking
# doesn't work properly as negative values are lost in the config
# object (bug #139600)
- egroups = self._getEgroups(backuped_accept_keywords)
- pgroups.extend(egroups)
+ egroups = backuped_accept_keywords.split()
if unmaskgroups or egroups:
- inc_pgroups = set()
- for x in pgroups:
- if x[:1] == "-":
- if x == "-*":
- inc_pgroups.clear()
- else:
- inc_pgroups.discard(x[1:])
- else:
- inc_pgroups.add(x)
- pgroups = inc_pgroups
- else:
- pgroups = set(pgroups)
+ pgroups = self._getEgroups(egroups, pgroups.copy())
return self._getMissingKeywords(cpv, pgroups, mygroups)
@@ -178,7 +166,7 @@ class KeywordsManager(object):
mygroups = self.getKeywords(cpv, slot, keywords, repo)
# Repoman may modify this attribute as necessary.
- pgroups = global_accept_keywords.split()
+ pgroups = set(global_accept_keywords.split())
# Hack: Need to check the env directly here as otherwise stacking
# doesn't work properly as negative values are lost in the config
@@ -186,18 +174,18 @@ class KeywordsManager(object):
# we want to use the environment keywords here,
# but stripped to it's base arch
# we want the raw keywords needed to be accepted from the ebuild
- egroups = self._getEgroups(backuped_accept_keywords)
- egroups = [x.lstrip('~') for x in egroups]
-
- pgroups.extend(egroups)
+ if backuped_accept_keywords:
+ egroups = self._getEgroups(backuped_accept_keywords.split(),
+ pgroups.copy())
+ pgroups = set([x.lstrip('~') for x in egroups])
missing = self._getMissingKeywords(cpv, pgroups, mygroups)
- return missing, pgroups
+ return missing, list(pgroups)
@staticmethod
- def _getEgroups(backuped_accept_keywords):
+ def _getEgroups(egroups, mygroups):
"""gets any keywords defined in the environment
@param backuped_accept_keywords: ACCEPT_KEYWORDS from the backup env
@@ -205,22 +193,17 @@ class KeywordsManager(object):
@rtype: List
@return: list of KEYWORDS that have been accepted
"""
- egroups = backuped_accept_keywords.split()
- pgroups = []
- if egroups:
- pgroups.extend(egroups)
- inc_pgroups = set()
- for x in pgroups:
- if x.startswith("-"):
- if x == "-*":
- inc_pgroups.clear()
- else:
- inc_pgroups.discard(x[1:])
+ mygroups.update(egroups)
+ inc_pgroups = set()
+ for x in mygroups:
+ if x.startswith("-"):
+ if x == "-*":
+ inc_pgroups.clear()
else:
- inc_pgroups.add(x)
- pgroups = inc_pgroups
- del inc_pgroups
- return pgroups
+ inc_pgroups.discard(x[1:])
+ else:
+ inc_pgroups.add(x)
+ return inc_pgroups
@staticmethod