* [gentoo-commits] proj/portage:master commit in: pym/portage/package/ebuild/, pym/portage/package/ebuild/_config/, pym/portage/
@ 2011-12-10 21:47 Zac Medico
0 siblings, 0 replies; 2+ messages in thread
From: Zac Medico @ 2011-12-10 21:47 UTC (permalink / raw
To: gentoo-commits
commit: 1a6c6c29d1046f56c7661fb5f970597554349838
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 10 21:46:58 2011 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Sat Dec 10 21:46:58 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=1a6c6c29
Make eprefix=None params map to const.EPREFIX
---
pym/portage/__init__.py | 2 +-
.../package/ebuild/_config/LocationsManager.py | 5 +++--
pym/portage/package/ebuild/config.py | 4 ++--
3 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py
index 1df9566..339c64f 100644
--- a/pym/portage/__init__.py
+++ b/pym/portage/__init__.py
@@ -487,7 +487,7 @@ class _trees_dict(dict):
self._target_eroot = None
def create_trees(config_root=None, target_root=None, trees=None, env=None,
- eprefix=portage.const.EPREFIX):
+ eprefix=None):
if trees is not None:
# clean up any existing portdbapi instances
for myroot in trees:
diff --git a/pym/portage/package/ebuild/_config/LocationsManager.py b/pym/portage/package/ebuild/_config/LocationsManager.py
index f559bb5..8ad41f7 100644
--- a/pym/portage/package/ebuild/_config/LocationsManager.py
+++ b/pym/portage/package/ebuild/_config/LocationsManager.py
@@ -9,6 +9,7 @@ import collections
import io
import warnings
+import portage
from portage import os, eapi_is_supported, _encodings, _unicode_encode
from portage.const import CUSTOM_PROFILE_PATH, GLOBAL_CONFIG_PATH, \
PROFILE_PATH, USER_CONFIG_PATH
@@ -37,9 +38,9 @@ class LocationsManager(object):
self.config_root = config_root
self.target_root = target_root
self._user_config = local_config
-
+
if self.eprefix is None:
- self.eprefix = ""
+ self.eprefix = portage.const.EPREFIX
if self.config_root is None:
self.config_root = self.eprefix + os.sep
diff --git a/pym/portage/package/ebuild/config.py b/pym/portage/package/ebuild/config.py
index 9bb26ca..a8ec3c4 100644
--- a/pym/portage/package/ebuild/config.py
+++ b/pym/portage/package/ebuild/config.py
@@ -143,7 +143,7 @@ class config(object):
def __init__(self, clone=None, mycpv=None, config_profile_path=None,
config_incrementals=None, config_root=None, target_root=None,
- eprefix=portage.const.EPREFIX, local_config=True, env=None,
+ eprefix=None, local_config=True, env=None,
_unmatched_removal=False):
"""
@param clone: If provided, init will use deepcopy to copy by value the instance.
@@ -160,7 +160,7 @@ class config(object):
@type config_root: String
@param target_root: __init__ override of $ROOT env variable.
@type target_root: String
- @param eprefix: set the EPREFIX variable
+ @param eprefix: set the EPREFIX variable (default is portage.const.EPREFIX)
@type eprefix: String
@param local_config: Enables loading of local config (/etc/portage); used most by repoman to
ignore local config (keywording and unmasking)
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [gentoo-commits] proj/portage:master commit in: pym/portage/package/ebuild/, pym/portage/package/ebuild/_config/, pym/portage/
@ 2013-01-20 2:43 Zac Medico
0 siblings, 0 replies; 2+ messages in thread
From: Zac Medico @ 2013-01-20 2:43 UTC (permalink / raw
To: gentoo-commits
commit: 94084ef96909a6f938daa2a90aedc1cc3fc8ce0b
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Sun Jan 20 02:33:10 2013 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Sun Jan 20 02:33:10 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=94084ef9
repoman: fix stable mask to use correct profile
We can't rely on the internal config instance from the given package
instance, since it does not refer to the correct profile.
---
pym/portage/package/ebuild/_config/UseManager.py | 36 +++++++++++++++-------
pym/portage/package/ebuild/config.py | 3 +-
pym/portage/versions.py | 10 ++++--
3 files changed, 33 insertions(+), 16 deletions(-)
diff --git a/pym/portage/package/ebuild/_config/UseManager.py b/pym/portage/package/ebuild/_config/UseManager.py
index 85380d3..743160c 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 = []
diff --git a/pym/portage/package/ebuild/config.py b/pym/portage/package/ebuild/config.py
index 4df3c96..0ea0841 100644
--- a/pym/portage/package/ebuild/config.py
+++ b/pym/portage/package/ebuild/config.py
@@ -644,7 +644,8 @@ class config(object):
self._repo_make_defaults[repo.name] = d
#Read all USE related files from profiles and optionally from user config.
- self._use_manager = UseManager(self.repositories, profiles_complex, abs_user_config, user_config=local_config)
+ self._use_manager = UseManager(self.repositories, profiles_complex,
+ abs_user_config, self._isStable, user_config=local_config)
#Initialize all USE related variables we track ourselves.
self.usemask = self._use_manager.getUseMask()
self.useforce = self._use_manager.getUseForce()
diff --git a/pym/portage/versions.py b/pym/portage/versions.py
index 1dd2ff3..46c5308 100644
--- a/pym/portage/versions.py
+++ b/pym/portage/versions.py
@@ -408,11 +408,13 @@ class _pkg_str(_unicode):
settings = self._settings
except AttributeError:
raise AttributeError('stable')
+ if not settings.local_config:
+ # Since repoman uses different config instances for
+ # different profiles, our local instance does not
+ # refer to the correct profile.
+ raise AssertionError('invalid context')
stable = settings._isStable(self)
- if settings.local_config:
- # For repoman, don't cache this value, since
- # it needs to be re-computed for each profile.
- self.__dict__['_stable'] = stable
+ self.__dict__['_stable'] = stable
return stable
def pkgsplit(mypkg, silent=1, eapi=None):
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2013-01-20 2:43 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-20 2:43 [gentoo-commits] proj/portage:master commit in: pym/portage/package/ebuild/, pym/portage/package/ebuild/_config/, pym/portage/ Zac Medico
-- strict thread matches above, loose matches on Subject: below --
2011-12-10 21:47 Zac Medico
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox