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

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

bin/repoman

index 7552bc58ff4d5a93088cf94b7c9b1a875452779d..db1dbd90c886974a19209bc121547906f68195f0 100755 (executable)
@@ -814,15 +814,24 @@ elif repolevel==3:
 scanlist.sort()
 
 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