pld-ftp-admin: scripts/sign.py - sign pkgs using external rpm binary

glen glen at pld-linux.org
Wed May 27 19:16:01 CEST 2009


Author: glen                         Date: Wed May 27 17:16:01 2009 GMT
Module: pld-ftp-admin                 Tag: HEAD
---- Log message:
- sign pkgs using external rpm binary

---- Files affected:
pld-ftp-admin/scripts:
   sign.py (1.2 -> 1.3) 

---- Diffs:

================================================================
Index: pld-ftp-admin/scripts/sign.py
diff -u pld-ftp-admin/scripts/sign.py:1.2 pld-ftp-admin/scripts/sign.py:1.3
--- pld-ftp-admin/scripts/sign.py:1.2	Wed May 27 18:52:02 2009
+++ pld-ftp-admin/scripts/sign.py	Wed May 27 19:15:56 2009
@@ -8,6 +8,7 @@
 import ftpio
 from config import sign_key
 import rpm
+import subprocess
 
 if len(sys.argv) < 3:
     print >>sys.stderr, "ERR: not enough parameters given"
@@ -54,13 +55,24 @@
 
     return key == sigid[-len(key):]
 
+def signpkgs(files):
+    if not os.path.isfile('/usr/bin/gpg'):
+        raise OSError, 'Missing gnupg binary'
+    if not os.path.isfile('/bin/rpm'):
+        raise OSError, 'Missing rpm binary'
+
+    cmd = ['/bin/rpm', '--resign']
+    cmd += files
+    rc = subprocess.call(cmd, stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE, close_fds = True)
+    if rc != 0:
+        print >>sys.stderr, "package signing failed"
+        sys.exit(rc)
+
 try:
     tree = ftptree.FtpTree(sys.argv[1]) #, loadall=True)
     tree.mark4moving(sys.argv[2:])
     files = tree.rpmfiles()
 
-    from pprint import pprint
-
     print "Checking signatures of %d files from %d packages" % (len(files), len(tree.loadedpkgs))
     sign = []
     for file in files:
@@ -69,6 +81,7 @@
 
     if len(sign) > 0:
         print "Signing %d packages" % len(sign)
+        signpkgs(sign)
     else:
         print "No packages to sign"
 
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/pld-ftp-admin/scripts/sign.py?r1=1.2&r2=1.3&f=u



More information about the pld-cvs-commit mailing list