From: Zac Medico Date: Tue, 1 Jun 2010 18:48:54 +0000 (-0700) Subject: Add special handling for updates of Package.metadata['USE'], so that X-Git-Tag: v2.2_rc68~558 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=ff845dd28b3a9b7bc29b28d168fb4f2e3fa392b6;p=portage.git Add special handling for updates of Package.metadata['USE'], so that internal state is consistent. --- diff --git a/pym/_emerge/Package.py b/pym/_emerge/Package.py index 9df7b644c..bba55ca8e 100644 --- a/pym/_emerge/Package.py +++ b/pym/_emerge/Package.py @@ -292,7 +292,7 @@ class _PackageMetadataWrapper(_PackageMetadataWrapperBase): __slots__ = ("_pkg",) _wrapped_keys = frozenset( - ["COUNTER", "INHERITED", "IUSE", "SLOT", "_mtime_"]) + ["COUNTER", "INHERITED", "IUSE", "SLOT", "USE", "_mtime_"]) _use_conditional_keys = frozenset( ['LICENSE', 'PROPERTIES', 'PROVIDE', 'RESTRICT',]) @@ -301,7 +301,7 @@ class _PackageMetadataWrapper(_PackageMetadataWrapperBase): self._pkg = pkg if not pkg.built: # USE is lazy, but we want it to show up in self.keys(). - self['USE'] = '' + _PackageMetadataWrapperBase.__setitem__(self, 'USE', '') self.update(metadata) @@ -326,7 +326,7 @@ class _PackageMetadataWrapper(_PackageMetadataWrapperBase): 'porttree'].dbapi.doebuild_settings pkgsettings.setcpv(self._pkg) v = pkgsettings["PORTAGE_USE"] - self['USE'] = v + _PackageMetadataWrapperBase.__setitem__(self, 'USE', v) return v @@ -366,6 +366,18 @@ class _PackageMetadataWrapper(_PackageMetadataWrapperBase): v = 0 self._pkg.counter = v + def _set_use(self, k, v): + # Force regeneration of _use attribute + self._pkg._use = None + # Use raw metadata to restore USE conditional values + # to unevaluated state + raw_metadata = self._pkg._raw_metadata + for x in self._use_conditional_keys: + try: + self[x] = raw_metadata[x] + except KeyError: + pass + def _set__mtime_(self, k, v): if isinstance(v, basestring): try: