diff options
author | Zac Medico <zmedico@gentoo.org> | 2009-01-12 08:08:28 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2009-01-12 08:08:28 +0000 |
commit | 8adbdf98dac40956ae136ca10d628a81e82be540 (patch) | |
tree | 92f575d7d02963f5f3a5fa61d1266e879307f027 /bin/repoman | |
parent | 3c4f4e5b8856087f040c961fcee64e474ecab9ec (diff) | |
download | portage-8adbdf98dac40956ae136ca10d628a81e82be540.tar.gz portage-8adbdf98dac40956ae136ca10d628a81e82be540.tar.bz2 portage-8adbdf98dac40956ae136ca10d628a81e82be540.zip |
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
Diffstat (limited to 'bin/repoman')
-rwxr-xr-x | bin/repoman | 14 |
1 files changed, 14 insertions, 0 deletions
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( |