In config.setcpv(), make sure the current args are really identical to the
authorZac Medico <zmedico@gentoo.org>
Fri, 27 Mar 2009 07:03:13 +0000 (07:03 -0000)
committerZac Medico <zmedico@gentoo.org>
Fri, 27 Mar 2009 07:03:13 +0000 (07:03 -0000)
previous args before returning early. (trunk r13227)

svn path=/main/branches/2.1.6/; revision=13229

pym/portage/__init__.py

index 673ad29030a1b3c4bef776c71dc99aa99cca194e..3ff952b7e6d7e9a887545f69ffcdc1823dfcaf37 100644 (file)
@@ -1151,6 +1151,7 @@ class config(object):
 
                self.locked   = 0
                self.mycpv    = None
+               self._setcpv_args_hash = None
                self.puse     = []
                self.modifiedkeys = []
                self.uvlist = []
@@ -1204,6 +1205,7 @@ class config(object):
                        self.make_defaults_use = copy.deepcopy(clone.make_defaults_use)
                        self.pkgprofileuse = copy.deepcopy(clone.pkgprofileuse)
                        self.mycpv    = copy.deepcopy(clone.mycpv)
+                       self._setcpv_args_hash = copy.deepcopy(clone._setcpv_args_hash)
 
                        self.configlist = copy.deepcopy(clone.configlist)
                        self.lookuplist = self.configlist[:]
@@ -2074,14 +2076,17 @@ class config(object):
 
                self.modifying()
 
+               args_hash = (id(mycpv), id(mydb))
+               if args_hash == self._setcpv_args_hash:
+                       return
+               self._setcpv_args_hash = args_hash
+
                pkg = None
                if not isinstance(mycpv, basestring):
                        pkg = mycpv
                        mycpv = pkg.cpv
                        mydb = pkg.metadata
 
-               if self.mycpv == mycpv:
-                       return
                has_changed = False
                self.mycpv = mycpv
                cat, pf = catsplit(mycpv)