Bug #195375 - Make dblink.treewalk() read inforoot/SLOT since
authorZac Medico <zmedico@gentoo.org>
Thu, 18 Oct 2007 19:30:53 +0000 (19:30 -0000)
committerZac Medico <zmedico@gentoo.org>
Thu, 18 Oct 2007 19:30:53 +0000 (19:30 -0000)
it differs from the expected SLOT value when when USE=multislot
is enabled. A warning message will be shown if the slot differs
and --quiet mode is not enabled.

svn path=/main/trunk/; revision=8172

pym/portage/dbapi/vartree.py

index 466a06dccf33fb0e9baa27c0623ebbf841a4e4d0..cca5ca9a3816cfb4cfc4aa1be9b65f9c3cb7f55d 100644 (file)
@@ -1671,6 +1671,22 @@ class dblink(object):
                                noiselevel=-1)
                        return 1
 
+               inforoot_slot_file = os.path.join(inforoot, "SLOT")
+               try:
+                       f = open(inforoot_slot_file)
+                       try:
+                               slot = f.read().strip()
+                       finally:
+                               f.close()
+               except OSError, e:
+                       writemsg("!!! Error reading '%s': %s\n" % (inforoot_slot_file, e),
+                               noiselevel=-1)
+                       return 1
+
+               if slot != self.settings["SLOT"]:
+                       writemsg("!!! WARNING: Expected SLOT='%s', got '%s'\n" % \
+                               (self.settings["SLOT"], slot))
+
                if not os.path.exists(self.dbcatdir):
                        os.makedirs(self.dbcatdir)
 
@@ -1679,7 +1695,7 @@ class dblink(object):
                        otherversions.append(v.split("/")[1])
 
                slot_matches = self.vartree.dbapi.match(
-                       "%s:%s" % (self.mysplit[0], self.settings["SLOT"]))
+                       "%s:%s" % (self.mysplit[0], slot))
                if self.mycpv not in slot_matches and \
                        self.vartree.dbapi.cpv_exists(self.mycpv):
                        # handle multislot or unapplied slotmove