diff options
author | Zac Medico <zmedico@gentoo.org> | 2013-01-19 18:33:10 -0800 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2013-01-19 18:33:10 -0800 |
commit | 94084ef96909a6f938daa2a90aedc1cc3fc8ce0b (patch) | |
tree | cd898452fff21576895a955370c68bba25b835c1 /pym/portage/package/ebuild/_config/UseManager.py | |
parent | 6cb7a5b6a72cf0601dff513fefad52ff6fb83835 (diff) | |
download | portage-94084ef96909a6f938daa2a90aedc1cc3fc8ce0b.tar.gz portage-94084ef96909a6f938daa2a90aedc1cc3fc8ce0b.tar.bz2 portage-94084ef96909a6f938daa2a90aedc1cc3fc8ce0b.zip |
repoman: fix stable mask to use correct profilev2.2.0_alpha157
We can't rely on the internal config instance from the given package
instance, since it does not refer to the correct profile.
Diffstat (limited to 'pym/portage/package/ebuild/_config/UseManager.py')
-rw-r--r-- | pym/portage/package/ebuild/_config/UseManager.py | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/pym/portage/package/ebuild/_config/UseManager.py b/pym/portage/package/ebuild/_config/UseManager.py index 85380d3af..743160c42 100644 --- a/pym/portage/package/ebuild/_config/UseManager.py +++ b/pym/portage/package/ebuild/_config/UseManager.py @@ -18,7 +18,8 @@ from portage.package.ebuild._config.helper import ordered_by_atom_specificity class UseManager(object): - def __init__(self, repositories, profiles, abs_user_config, user_config=True): + def __init__(self, repositories, profiles, abs_user_config, is_stable, + user_config=True): # file variable #-------------------------------- # repositories @@ -61,6 +62,8 @@ class UseManager(object): #-------------------------------- # puse + self._user_config = user_config + self._is_stable = is_stable self._repo_usemask_dict = self._parse_repository_files_to_dict_of_tuples("use.mask", repositories) self._repo_usestablemask_dict = \ self._parse_repository_files_to_dict_of_tuples("use.stable.mask", @@ -269,6 +272,25 @@ class UseManager(object): ret[repo.name] = file_dict return ret + def _isStable(self, pkg): + if self._user_config: + try: + return pkg.stable + except AttributeError: + # KEYWORDS is unavailable (prior to "depend" phase) + return False + + try: + pkg._metadata + except AttributeError: + # KEYWORDS is unavailable (prior to "depend" phase) + return False + + # Since repoman uses different config instances for + # different profiles, we have to be careful to do the + # stable check against the correct profile here. + return self._is_stable(pkg) + def getUseMask(self, pkg=None): if pkg is None: return frozenset(stack_lists( @@ -282,11 +304,7 @@ class UseManager(object): pkg = _pkg_str(remove_slot(pkg), slot=slot, repo=repo) cp = pkg.cp - try: - stable = pkg.stable - except AttributeError: - # KEYWORDS is unavailable (prior to "depend" phase) - stable = False + stable = self._isStable(pkg) usemask = [] @@ -345,11 +363,7 @@ class UseManager(object): pkg = _pkg_str(remove_slot(pkg), slot=slot, repo=repo) cp = pkg.cp - try: - stable = pkg.stable - except AttributeError: - # KEYWORDS is unavailable (prior to "depend" phase) - stable = False + stable = self._isStable(pkg) useforce = [] |