public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [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