diff -ur orig/gentoolkit/__init__.py new/gentoolkit/__init__.py --- orig/gentoolkit/__init__.py 2005-06-07 16:18:08.000000000 -0500 +++ new/gentoolkit/__init__.py 2005-09-20 12:16:05.000000000 -0500 @@ -24,7 +24,9 @@ import re import string import types +from threading import Semaphore +settingslock = Semaphore() settings = portage.config(clone=portage.settings) porttree = portage.db[portage.root]["porttree"] vartree = portage.db[portage.root]["vartree"] diff -ur orig/gentoolkit/package.py new/gentoolkit/package.py --- orig/gentoolkit/package.py 2005-06-07 16:18:08.000000000 -0500 +++ new/gentoolkit/package.py 2005-09-20 12:16:30.000000000 -0500 @@ -23,8 +23,8 @@ if not self._scpv: raise FatalError("invalid cpv: %s" % cpv) self._db = None - settings.setcpv(self._cpv) - self._settings = portage.config(clone=settings) + self._settings = settings + self._settingslock = settingslock def get_name(self): """Returns base name of package, no category nor version""" @@ -44,7 +44,12 @@ def get_settings(self, key): """Returns the value of the given key for this package (useful for package.* files.""" - return self._settings[key] + self._settingslock.acquire() + self._settings.setcpv(self._cpv) + v = self._settings[key] + self._settings.reset() + self._settingslock.release() + return v def get_cpv(self): """Returns full Category/Package-Version string"""