From 8adbdf98dac40956ae136ca10d628a81e82be540 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Mon, 12 Jan 2009 08:08:28 +0000 Subject: Bug #253002 - Add a new variable.invalidchar check for metadata variables that contain characters that are not part of the ASCII character set. (trunk r12365) svn path=/main/branches/2.1.6/; revision=12436 --- bin/repoman | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'bin/repoman') diff --git a/bin/repoman b/bin/repoman index 8eff9c077..19f26ec68 100755 --- a/bin/repoman +++ b/bin/repoman @@ -298,6 +298,7 @@ qahelp={ "ebuild.syntax":"Error generating cache entry for ebuild; typically caused by ebuild syntax error or digest verification failure", "ebuild.output":"A simple sourcing of the ebuild produces output; this breaks ebuild policy.", "ebuild.nesteddie":"Placing 'die' inside ( ) prints an error, but doesn't stop the ebuild.", + "variable.invalidchar":"A variable contains an invalid character that is not part of the ASCII character set", "variable.readonly":"Assigning a readonly variable", "LIVEVCS.stable":"This ebuild is a live checkout from a VCS but has stable keywords.", "IUSE.invalid":"This ebuild has a variable in IUSE that is not in the use.desc or use.local.desc file", @@ -358,6 +359,8 @@ qawarnings = set(( "LIVEVCS.stable" )) +non_ascii_re = re.compile(r'[^\x00-\x7f]') + missingvars=["KEYWORDS","LICENSE","DESCRIPTION","HOMEPAGE","SLOT"] allvars = set(x for x in portage.auxdbkeys if not x.startswith("UNUSED_")) allvars.discard("CDEPEND") @@ -1100,6 +1103,17 @@ for x in scanlist: inherited = pkg.inherited live_ebuild = live_eclasses.intersection(inherited) + for k, v in myaux.iteritems(): + if not isinstance(v, basestring): + continue + m = non_ascii_re.search(v) + if m is not None: + stats["variable.invalidchar"] += 1 + fails["variable.invalidchar"].append( + ("%s: %s variable contains non-ASCII " + \ + "character at position %s") % \ + (relative_path, k, m.start() + 1)) + if not src_uri_error: # Check that URIs don't reference a server from thirdpartymirrors. for uri in portage.flatten(portage.dep.use_reduce( -- cgit v1.2.3-1-g7c22