chiark / gitweb /
Improve verification output with stats, etc
authorCiaran Gultnieks <ciaran@ciarang.com>
Fri, 30 Aug 2013 10:06:36 +0000 (11:06 +0100)
committerCiaran Gultnieks <ciaran@ciarang.com>
Fri, 30 Aug 2013 10:06:36 +0000 (11:06 +0100)
fdroidserver/verify.py

index 41b90c2e8e2c4be5ef9c8ca18d9f7b280ea27d41..c10f882e7fb19f3bb55338d2b5c6681fb65491e8 100644 (file)
@@ -49,6 +49,9 @@ def main():
         print "No unsigned directory - nothing to do"
         sys.exit(0)
 
+    verified = 0
+    notverified = 0
+
     for apkfile in sorted(glob.glob(os.path.join(unsigned_dir, '*.apk'))):
 
         apkfilename = os.path.basename(apkfile)
@@ -56,50 +59,57 @@ def main():
         if i == -1:
             raise BuildException("Invalid apk name")
         appid = apkfilename[:i]
-        print "Processing " + apkfilename
 
         if not options.package or options.package == appid:
 
-            remoteapk = os.path.join(tmp_dir, apkfilename)
-            if os.path.exists(remoteapk):
-                os.remove(remoteapk)
-            url = 'https://f-droid.org/repo/' + apkfilename
-            print "...retrieving " + url
-            p = subprocess.Popen(['wget', url],
-                cwd=tmp_dir,
-                stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
-            out = p.communicate()[0]
-            if p.returncode != 0:
-                print "Failed to get " + apkfilename
-                sys.exit(1)
-
-            thisdir = os.path.join(tmp_dir, 'this_apk')
-            thatdir = os.path.join(tmp_dir, 'that_apk')
-            for d in [thisdir, thatdir]:
-                if os.path.exists(d):
-                    shutil.rmtree(d)
-                os.mkdir(d)
-
-            if subprocess.call(['jar', 'xf',
-                os.path.join("..", "..", unsigned_dir, apkfilename)],
-                cwd=thisdir) != 0:
-                print "Failed to unpack local build of " + apkfilename
-                sys.exit(1)
-            if subprocess.call(['jar', 'xf', os.path.join("..", "..", remoteapk)],
-                cwd=thatdir) != 0:
-                print "Failed to unpack remote build of " + apkfilename
-                sys.exit(1)
-
-            p = subprocess.Popen(['diff', '-r', 'this_apk', 'that_apk'],
-                cwd=tmp_dir, stdout=subprocess.PIPE)
-            out = p.communicate()[0]
-            lines = out.splitlines()
-            if len(lines) != 1 or lines[0].find('META-INF') == -1:
-                print "Unexpected diff output"
-                print out
-                sys.exit(1)
-
-            print "...successfully verified"
+            try:
+
+                print "Processing " + apkfilename
+
+                remoteapk = os.path.join(tmp_dir, apkfilename)
+                if os.path.exists(remoteapk):
+                    os.remove(remoteapk)
+                url = 'https://f-droid.org/repo/' + apkfilename
+                print "...retrieving " + url
+                p = subprocess.Popen(['wget', url],
+                    cwd=tmp_dir,
+                    stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+                out = p.communicate()[0]
+                if p.returncode != 0:
+                    raise Exception("Failed to get " + apkfilename)
+
+                thisdir = os.path.join(tmp_dir, 'this_apk')
+                thatdir = os.path.join(tmp_dir, 'that_apk')
+                for d in [thisdir, thatdir]:
+                    if os.path.exists(d):
+                        shutil.rmtree(d)
+                    os.mkdir(d)
+
+                if subprocess.call(['jar', 'xf',
+                    os.path.join("..", "..", unsigned_dir, apkfilename)],
+                    cwd=thisdir) != 0:
+                    raise Exception("Failed to unpack local build of " + apkfilename)
+                if subprocess.call(['jar', 'xf', os.path.join("..", "..", remoteapk)],
+                    cwd=thatdir) != 0:
+                    raise Exception("Failed to unpack remote build of " + apkfilename)
+
+                p = subprocess.Popen(['diff', '-r', 'this_apk', 'that_apk'],
+                    cwd=tmp_dir, stdout=subprocess.PIPE)
+                out = p.communicate()[0]
+                lines = out.splitlines()
+                if len(lines) != 1 or lines[0].find('META-INF') == -1:
+                    raise Exception("Unexpected diff output - " + out)
+
+                print "...successfully verified"
+                verified += 1
+
+            except Exception, e:
+                print "...NOT verified - {0}".format(e)
+                notverified += 1
+
+    print "\nFinished"
+    print "{0} successfully verified".format(verified)
+    print "{0} NOT verified".format(notverified)
 
 if __name__ == "__main__":
     main()