diff options
author | Arfrever Frehtes Taifersar Arahesis <Arfrever@Gentoo.Org> | 2010-11-06 22:03:55 +0100 |
---|---|---|
committer | Arfrever Frehtes Taifersar Arahesis <Arfrever@Gentoo.Org> | 2010-11-06 22:03:55 +0100 |
commit | 93ee6a847be949e7752c3c052d3eb0619e408b43 (patch) | |
tree | 5ab9874628627ad12115b9a6204a35351565903d /pym/portage/package/ebuild/_config/UseManager.py | |
parent | 0dc5abdf7bf7ed412b4f27801562f168eddbe1b5 (diff) | |
download | portage-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.py | 27 |
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: |