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

svn path=/main/branches/2.1.2/; revision=8639

pym/portage.py

index 1dce3a1d0dbea2b7abf64c02a27a5577f3a2db3d..3d55151480b88eed6dad01123a5668eda80773d6 100644 (file)
@@ -7211,11 +7211,23 @@ class binarytree(object):
                                        mypkg = myfile[:-5]
                                        if not mycat or not mypf:
                                                #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")
+                                               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()