aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Varner <fuzzyray@gentoo.org>2011-07-15 22:16:56 -0500
committerPaul Varner <fuzzyray@gentoo.org>2011-07-15 22:16:56 -0500
commite93234d3f899e2e5577b8085bbfd90c7447576cd (patch)
tree794dde7680986078e80ef4bf24bca51bebcabd93 /pym/gentoolkit/package.py
parentDo not index ChangeLog entries with an invalid CPV. (Bug 375293) (diff)
downloadgentoolkit-e93234d3f899e2e5577b8085bbfd90c7447576cd.tar.gz
gentoolkit-e93234d3f899e2e5577b8085bbfd90c7447576cd.tar.bz2
gentoolkit-e93234d3f899e2e5577b8085bbfd90c7447576cd.zip
Update Package Class to allow passing of local_config.
The local_config variable determines if the portage.config settings object takes the /etc/portage/package.* files into account.
Diffstat (limited to 'pym/gentoolkit/package.py')
-rw-r--r--pym/gentoolkit/package.py42
1 files changed, 27 insertions, 15 deletions
diff --git a/pym/gentoolkit/package.py b/pym/gentoolkit/package.py
index e405412..45e59bd 100644
--- a/pym/gentoolkit/package.py
+++ b/pym/gentoolkit/package.py
@@ -47,7 +47,6 @@ import os
from string import Template
import portage
-from portage import settings
from portage.util import LazyItemsDict
import gentoolkit.pprinter as pp
@@ -58,13 +57,22 @@ from gentoolkit.keyword import determine_keyword
from gentoolkit.flag import get_flags
# =======
+# Settings
+# =======
+
+default_settings = portage.config(local_config=True)
+default_settings.lock()
+nolocal_settings = portage.config(local_config=False)
+nolocal_settings.lock()
+
+# =======
# Classes
# =======
class Package(CPV):
"""Exposes the state of a given CPV."""
- def __init__(self, cpv, validate=False):
+ def __init__(self, cpv, validate=False, local_config=True):
if isinstance(cpv, CPV):
self.__dict__.update(cpv.__dict__)
else:
@@ -76,6 +84,11 @@ class Package(CPV):
# CPV allows some things that Package must not
raise errors.GentoolkitInvalidPackage(self.cpv)
+ if local_config:
+ self._settings = default_settings
+ else:
+ self._settings = nolocal_settings
+
# Set dynamically
self._package_path = None
self._dblink = None
@@ -123,8 +136,8 @@ class Package(CPV):
self._dblink = portage.dblink(
self.category,
"%s-%s" % (self.name, self.fullversion),
- settings["ROOT"],
- settings
+ self._settings["ROOT"],
+ self._settings
)
return self._dblink
@@ -209,17 +222,16 @@ class Package(CPV):
return bool(PORTDB.cpv_exists(self.cpv))
- @staticmethod
- def settings(key):
+ def settings(self, key):
"""Returns the value of the given key for this package (useful
for package.* files."""
- if settings.locked:
- settings.unlock()
+ if self._settings.locked:
+ self._settings.unlock()
try:
- result = settings[key]
+ result = self._settings[key]
finally:
- settings.lock()
+ self._settings.lock()
return result
def mask_status(self):
@@ -234,11 +246,11 @@ class Package(CPV):
'missing keyword'
"""
- if settings.locked:
- settings.unlock()
+ if self._settings.locked:
+ self._settings.unlock()
try:
result = portage.getmaskingstatus(self.cpv,
- settings=settings,
+ settings=self._settings,
portdb=PORTDB)
except KeyError:
# getmaskingstatus doesn't support packages without ebuilds in the
@@ -257,7 +269,7 @@ class Package(CPV):
try:
result = portage.getmaskingreason(self.cpv,
- settings=settings,
+ settings=self._settings,
portdb=PORTDB,
return_location=True)
if result is None:
@@ -372,7 +384,7 @@ class Package(CPV):
if not ebuild:
return None
if self._portdir_path is None:
- self._portdir_path = os.path.realpath(settings["PORTDIR"])
+ self._portdir_path = os.path.realpath(self._settings["PORTDIR"])
return (tree and tree != self._portdir_path)
def is_masked(self):