config: _eapi_cache.clear() after setcpv
authorZac Medico <zmedico@gentoo.org>
Thu, 23 Aug 2012 17:10:38 +0000 (10:10 -0700)
committerZac Medico <zmedico@gentoo.org>
Thu, 23 Aug 2012 17:10:38 +0000 (10:10 -0700)
pym/portage/package/ebuild/config.py

index 81e05012e2c1d11de43d35268da1617f2a0c9499..4d871f428d06669e303e7b2c2bad16b840d6c519 100644 (file)
@@ -811,7 +811,6 @@ class config(object):
                        # and subsequent calls to the _init() functions have no effect.
                        portage.output._init(config_root=self['PORTAGE_CONFIGROOT'])
                        portage.data._init(self)
-                       _eapi_cache.clear()
 
                if mycpv:
                        self.setcpv(mycpv)
@@ -1508,6 +1507,10 @@ class config(object):
                self.configdict["env"]["PORTAGE_USE"] = \
                        " ".join(sorted(x for x in use if x[-2:] != '_*'))
 
+               # Clear the eapi cache here rather than in the constructor, since
+               # setcpv triggers lazy instantiation of things like _use_manager.
+               _eapi_cache.clear()
+
        def _grab_pkg_env(self, penv, container, protected_keys=None):
                if protected_keys is None:
                        protected_keys = ()