When binarytree.populate() finds missing metadata, specify which keys
authorZac Medico <zmedico@gentoo.org>
Sat, 24 Nov 2007 04:47:12 +0000 (04:47 -0000)
committerZac Medico <zmedico@gentoo.org>
Sat, 24 Nov 2007 04:47:12 +0000 (04:47 -0000)
are missing so that the user has a clue about what is wrong.

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

pym/portage/dbapi/bintree.py

index 45cd804639b0a0a1fca9c1815fbec874292fcd95..b354f9aeea8a1bdbaa086d35428a9b818071206d 100644 (file)
@@ -465,11 +465,25 @@ class binarytree(object):
                                        mypkg = myfile[:-5]
                                        if not mycat or not mypf or not slot:
                                                #old-style or corrupt package
-                                               writemsg("!!! Invalid binary package: '%s'\n" % full_path,
-                                                       noiselevel=-1)
-                                               writemsg("!!! This binary package is not " + \
-                                                       "recoverable and should be deleted.\n",
+                                               writemsg("\n!!! Invalid binary package: '%s'\n" % full_path,
                                                        noiselevel=-1)
+                                               missing_keys = []
+                                               if not mycat:
+                                                       missing_keys.append("CATEGORY")
+                                               if not mypf:
+                                                       missing_keys.append("PF")
+                                               if not slot:
+                                                       missing_keys.append("SLOT")
+                                               msg = []
+                                               if missing_keys:
+                                                       missing_keys.sort()
+                                                       msg.append("Missing metadata key(s): %s." % \
+                                                               ", ".join(missing_keys))
+                                               msg.append(" This binary package is not " + \
+                                                       "recoverable and should be deleted.")
+                                               from textwrap import wrap
+                                               for line in wrap("".join(msg), 72):
+                                                       writemsg("!!! %s\n" % line, noiselevel=-1)
                                                self.invalids.append(mypkg)
                                                continue
                                        mycat = mycat.strip()