[oe-commits] Michael Smith : source-checker: usability tweaks

git version control git at git.openembedded.org
Wed Aug 19 13:13:33 UTC 2009


Module: openembedded.git
Branch: org.openembedded.dev
Commit: 3555703d298735f509973b30e5aa40c19c1f6a2e
URL:    http://gitweb.openembedded.net/?p=openembedded.git&a=commit;h=3555703d298735f509973b30e5aa40c19c1f6a2e

Author: Michael Smith <msmith at cbnco.com>
Date:   Sat Jun 27 17:12:01 2009 -0400

source-checker: usability tweaks

checksum sorter, source checker:
* exit(1) on failure;
* send errors to stderr;
* make executable

checksum sorter:
* read from stdin if no arg;
* accept --inplace option to read and write from the same file;
* check that input file exists as ConfigParser.read() doesn't treat
  missing files as an error.

Signed-off-by: Michael Smith <msmith at cbnco.com>

---

 contrib/source-checker/oe-checksums-sorter.py |   66 +++++++++++++++++++++---
 contrib/source-checker/oe-source-checker.py   |    3 +-
 2 files changed, 59 insertions(+), 10 deletions(-)

diff --git a/contrib/source-checker/oe-checksums-sorter.py b/contrib/source-checker/oe-checksums-sorter.py
old mode 100644
new mode 100755
index 2bab58c..cde6ddc
--- a/contrib/source-checker/oe-checksums-sorter.py
+++ b/contrib/source-checker/oe-checksums-sorter.py
@@ -29,20 +29,64 @@
 #
 
 
+import ConfigParser
+import getopt
+import os
 import sys
+import tempfile
 
-if len(sys.argv) < 2:
-    print """
-    OpenEmbedded source checksums script require argument:
+def usage(rc):
+    print """usage: %s [--inplace|-i] conf/checksums.ini
 
-    1. location of conf/checksums.ini
-    """
-    sys.exit(0)
+    --inplace, -i: update file in place (default is to write to stdout)
 
-import ConfigParser, os
+    If no input file is given, will read from standard input.
+    """ % sys.argv[0]
+    sys.exit(rc)
+
+try:
+    optlist, args = getopt.getopt(sys.argv[1:], "ih", ["inplace", "help"])
+except getopt.GetoptError, e:
+    print >> sys.stderr, "%s: %s" % (sys.argv[0], e)
+    usage(1)
+
+inplace = False
+infp = sys.stdin
+filename = None
+for opt, val in optlist:
+    if opt == '-i' or opt == '--inplace':
+        inplace = True
+    elif opt == 'h' or opt == '--help':
+        usage(0)
+    else:
+        print >> sys.stderr, "%s: %s: invalid argument" % (sys.argv[0], opt)
+        usage(1)
+
+if len(args) == 0:
+    if inplace:
+        print >> sys.stderr, "%s: --inplace requires a filename" % sys.argv[0]
+        usage(1)
+elif len(args) == 1:
+    filename = args[0]
+    try:
+        infp = open(filename, "r")
+    except Exception, e:
+        print >> sys.stderr, "%s: %s" % (sys.argv[0], e)
+        sys.exit(1)
+else:
+    print >> sys.stderr, "%s: extra arguments" % sys.argv[0]
+    usage(1)
+
+out = sys.stdout
+tmpfn = None
+if inplace:
+    outfd, tmpfn = tempfile.mkstemp(prefix='cksums',
+                                    dir=os.path.dirname(filename) or '.')
+    os.chmod(tmpfn, os.stat(filename).st_mode)
+    out = os.fdopen(outfd, 'w')
 
 checksums_parser = ConfigParser.ConfigParser()
-checksums_parser.read(sys.argv[1])
+checksums_parser.readfp(infp)
 
 item = 1;
 files_total   = len(checksums_parser.sections())
@@ -60,4 +104,8 @@ for source in checksums_parser.sections():
 new_list.sort()
 
 for entry in new_list:
-    print "[%s]\nmd5=%s\nsha256=%s\n" % (entry[1], entry[2], entry[3])
+    print >> out, "[%s]\nmd5=%s\nsha256=%s\n" % (entry[1], entry[2], entry[3])
+
+if inplace:
+    out.close()
+    os.rename(tmpfn, filename)
diff --git a/contrib/source-checker/oe-source-checker.py b/contrib/source-checker/oe-source-checker.py
old mode 100644
new mode 100755
index 0ae3563..bb14c87
--- a/contrib/source-checker/oe-source-checker.py
+++ b/contrib/source-checker/oe-source-checker.py
@@ -39,13 +39,14 @@
 import sys
 
 if len(sys.argv) < 3:
+    print >> sys.stderr, "%s: missing argument" % sys.argv[0]
     print """
     OpenEmbedded source checker script require two arguments:
 
     1. location of conf/checksums.ini
     2. path to DL_DIR (without "/" at the end)
     """
-    sys.exit(0)
+    sys.exit(1)
 
 import ConfigParser, os, itertools
 





More information about the Openembedded-commits mailing list