source-checker: added progressbar (from BitBake) and status info at end
authorMarcin Juszkiewicz <hrw@openembedded.org>
Thu, 18 Oct 2007 13:04:40 +0000 (13:04 +0000)
committerMarcin Juszkiewicz <hrw@openembedded.org>
Thu, 18 Oct 2007 13:04:40 +0000 (13:04 +0000)
contrib/source-checker/oe-source-checker.py

index 991139d..45ddad9 100644 (file)
@@ -47,35 +47,60 @@ if len(sys.argv) < 3:
     """
     sys.exit(0)
 
-import ConfigParser, os
+import ConfigParser, os, itertools
 
 checksums_parser = ConfigParser.ConfigParser()
 checksums_parser.read(sys.argv[1])
 
+parsespin = itertools.cycle( r'|/-\\' )
+
+item = 1;
+files_total   = len(checksums_parser.sections())
+files_checked = 0
+files_good    = 0
+files_wrong   = 0
+
 for source in checksums_parser.sections():
     archive = source.split("/")[-1]
     localpath = os.path.join(sys.argv[2], archive)
     md5 = checksums_parser.get(source, "md5")
     sha = checksums_parser.get(source, "sha256")
 
+    if os.isatty(sys.stdout.fileno()):
+        sys.stdout.write("\rChecking files: %s (%04d/%04d) [%2d %%]" % ( parsespin.next(), item, files_total, item*100/files_total ) )
+        sys.stdout.flush()
+        item += 1
+
     try:
         os.stat(localpath)
     except:
         continue
 
+    files_checked += 1
+    file_ok = True
+
     try:
         md5pipe = os.popen('md5sum ' + localpath)
         md5data = (md5pipe.readline().split() or [ "" ])[0]
         md5pipe.close()
 
         if md5 != md5data:
-            print "%s has wrong md5: %s instead of %s url: %s" % (archive, md5data, md5, source) 
+            file_ok = False
+            print "\n%s has wrong md5: %s instead of %s url: %s" % (archive, md5data, md5, source) 
 
         shapipe = os.popen("oe_sha256sum " + localpath)
         shadata = (shapipe.readline().split() or [ "" ])[0]
         shapipe.close()
 
         if shadata != "" and sha != shadata:
-            print "%s has wrong sha: %s instead of %s url: %s" % (archive, shadata, sha, source) 
+            file_ok = False
+            print "\n%s has wrong sha: %s instead of %s url: %s" % (archive, shadata, sha, source) 
+
+        if file_ok:
+            files_good += 1
+        else:
+            files_wrong += 1
     except:
         pass
+
+print "\nChecked %d files. %d was OK and %d had wrong checksums." % (files_checked, files_good, files_wrong)