summaryrefslogtreecommitdiffstats
path: root/pym/portage/package/ebuild/_config/UseManager.py
diff options
context:
space:
mode:
authorArfrever Frehtes Taifersar Arahesis <Arfrever@Gentoo.Org>2010-11-06 22:03:55 +0100
committerArfrever Frehtes Taifersar Arahesis <Arfrever@Gentoo.Org>2010-11-06 22:03:55 +0100
commit93ee6a847be949e7752c3c052d3eb0619e408b43 (patch)
tree5ab9874628627ad12115b9a6204a35351565903d /pym/portage/package/ebuild/_config/UseManager.py
parent0dc5abdf7bf7ed412b4f27801562f168eddbe1b5 (diff)
downloadportage-93ee6a847be949e7752c3c052d3eb0619e408b43.tar.gz
portage-93ee6a847be949e7752c3c052d3eb0619e408b43.tar.bz2
portage-93ee6a847be949e7752c3c052d3eb0619e408b43.zip
Support use.unsatisfiable and package.use.unsatisfiable files.
Diffstat (limited to 'pym/portage/package/ebuild/_config/UseManager.py')
-rw-r--r--pym/portage/package/ebuild/_config/UseManager.py27
1 files changed, 25 insertions, 2 deletions
diff --git a/pym/portage/package/ebuild/_config/UseManager.py b/pym/portage/package/ebuild/_config/UseManager.py
index 13f65736f..dbb9b1a8b 100644
--- a/pym/portage/package/ebuild/_config/UseManager.py
+++ b/pym/portage/package/ebuild/_config/UseManager.py
@@ -21,9 +21,11 @@ class UseManager(object):
#--------------------------------
# use.mask _usemask_list
# use.force _useforce_list
- # package.use.mask _pusemask_list
+ # use.unsatisfiable _useunsatisfiable_list
+ # package.use.mask _pusemask_list
# package.use _pkgprofileuse
- # package.use.force _puseforce_list
+ # package.use.force _puseforce_list
+ # package.use.unsatisfiable _puseunsatisfiable_list
#--------------------------------
# user config
#--------------------------------
@@ -42,9 +44,11 @@ class UseManager(object):
self._usemask_list = self._parse_profile_files_to_list("use.mask", profiles)
self._useforce_list = self._parse_profile_files_to_list("use.force", profiles)
+ self._useunsatisfiable_list = self._parse_profile_files_to_list("use.unsatisfiable", profiles)
self._pusemask_list = self._parse_profile_files_to_dict("package.use.mask", profiles)
self._pkgprofileuse = self._parse_profile_files_to_dict("package.use", profiles, juststrings=True)
self._puseforce_list = self._parse_profile_files_to_dict("package.use.force", profiles)
+ self._puseunsatisfiable_list = self._parse_profile_files_to_dict("package.use.unsatisfiable", profiles)
self._pusedict = self._parse_user_files_to_extatomdict("package.use", abs_user_config, user_config)
@@ -112,6 +116,25 @@ class UseManager(object):
useforce.extend(pkg_useforce)
return frozenset(stack_lists(useforce, incremental=True))
+ def getUseUnsatisfiable(self, pkg=None):
+ if pkg is None:
+ return frozenset(stack_lists(
+ self._useunsatisfiable_list, incremental=True))
+
+ cp = getattr(pkg, "cp", None)
+ if cp is None:
+ cp = cpv_getkey(remove_slot(pkg))
+ useunsatisfiable = []
+ for i, punsatisfiable_dict in enumerate(self._puseunsatisfiable_list):
+ if self._useunsatisfiable_list[i]:
+ useunsatisfiable.append(self._useunsatisfiable_list[i])
+ cpdict = punsatisfiable_dict.get(cp)
+ if cpdict:
+ pkg_useunsatisfiable = ordered_by_atom_specificity(cpdict, pkg)
+ if pkg_useunsatisfiable:
+ useunsatisfiable.extend(pkg_useunsatisfiable)
+ return frozenset(stack_lists(useunsatisfiable, incremental=True))
+
def getPUSE(self, pkg):
cp = getattr(pkg, "cp", None)
if cp is None: