When checking ebuild content, use codecs.open() to force utf_8 encoding for
authorZac Medico <zmedico@gentoo.org>
Wed, 11 Mar 2009 06:30:26 +0000 (06:30 -0000)
committerZac Medico <zmedico@gentoo.org>
Wed, 11 Mar 2009 06:30:26 +0000 (06:30 -0000)
py3k compatibility (all ebuilds should have utf_8 encoding). (trunk r12733)

svn path=/main/branches/2.1.6/; revision=12982

bin/repoman

index 4c242c04508bb497c9ad8a20b07f91779464638b..7bb507d98fa853626bc836de42d64adebf23abc8 100755 (executable)
@@ -1444,14 +1444,18 @@ for x in scanlist:
                # Syntax Checks
                relative_path = os.path.join(x, y + ".ebuild")
                full_path = os.path.join(repodir, relative_path)
-               f = open(full_path)
                try:
-                       for check_name, e in run_checks(f, pkg):
-                               stats[check_name] += 1
-                               fails[check_name].append(relative_path + ': %s' % e)
-               finally:
-                       f.close()
-                       del f
+                       # All ebuilds should have utf_8 encoding.
+                       f = codecs.open(full_path, mode='r', encoding='utf_8')
+                       try:
+                               for check_name, e in run_checks(f, pkg):
+                                       stats[check_name] += 1
+                                       fails[check_name].append(relative_path + ': %s' % e)
+                       finally:
+                               f.close()
+               except UnicodeDecodeError:
+                       # A file.UTF8 failure will have already been recorded above.
+                       pass
 
                if options.force:
                        # The dep_check() calls are the most expensive QA test. If --force