Bug #211294 - Make repoman bail out if arch.list contains unrecognized
authorZac Medico <zmedico@gentoo.org>
Tue, 25 Mar 2008 03:18:28 +0000 (03:18 -0000)
committerZac Medico <zmedico@gentoo.org>
Tue, 25 Mar 2008 03:18:28 +0000 (03:18 -0000)
lines since we don't want people to commit with old versions of portage
that don't support the current arch.list format.

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

bin/repoman

index 8d31e666128d57f6cec452967ff2742ec42cc707..165c66c00d6267d2f88d4dd780c5e537689afa08 100755 (executable)
@@ -569,15 +569,24 @@ scanlist.sort()
 logging.debug("Found the following packages to scan:\n%s" % '\n'.join(scanlist))
 
 profiles={}
+valid_profile_types = frozenset(["dev", "exp", "stable"])
 descfile=portdir+"/profiles/profiles.desc"
 if os.path.exists(descfile):
-       for x in portage.grabfile(descfile):
+       for i, x in enumerate(open(descfile, 'rb')):
                if x[0]=="#":
                        continue
                arch=x.split()
-               if len(arch)!=3:
-                       print "wrong format: \""+red(x)+"\" in "+descfile
+               if len(arch) == 0:
                        continue
+               if len(arch)!=3:
+                       err("wrong format: \"" + bad(x.strip()) + "\" in " + \
+                               descfile + " line %d" % (i+1, ))
+               elif arch[0] not in kwlist:
+                       err("invalid arch: \"" + bad(arch[0]) + "\" in " + \
+                               descfile + " line %d" % (i+1, ))
+               elif arch[2] not in valid_profile_types:
+                       err("invalid profile type: \"" + bad(arch[2]) + "\" in " + \
+                               descfile + " line %d" % (i+1, ))
                if not os.path.isdir(portdir+"/profiles/"+arch[1]):
                        print "Invalid "+arch[2]+" profile ("+arch[1]+") for arch "+arch[0]
                        continue