]> git.pld-linux.org Git - projects/pld-ftp-admin.git/commitdiff
- check for signed packages when moving them between trees and tree configured as...
authorElan Ruusamäe <glen@pld-linux.org>
Wed, 27 May 2009 19:24:57 +0000 (19:24 +0000)
committerElan Ruusamäe <glen@pld-linux.org>
Wed, 27 May 2009 19:24:57 +0000 (19:24 +0000)
Changed files:
    modules/config.py -> 1.14
    modules/ftptree.py -> 1.39

modules/config.py
modules/ftptree.py

index cec4ee15b206dec6d333a609279ddef8a5d83d9e..c43aa6814b4ea5360734aa868235b2d030006cb7 100644 (file)
@@ -35,6 +35,11 @@ if 'sign_key' in value:
 else:
     sign_key = None
 
+if 'signed_trees' in value:
+    signed_trees = value['signed_trees'].split(' ')
+else:
+    signed_trees = None
+
 if 'old_poldek' in value and value['old_poldek'] == 'yes':
     old_poldek = True
 else:
index 51d77313448daee6e57d21efe89b9d2ec0f8b1e2..ed8477cae11e3f4c8583d2b7503d65cc30f2b594 100644 (file)
@@ -3,9 +3,10 @@
 import os, config, string, urllib, re, rpm
 from common import fileexists, noarchcachedir
 from baseftptree import BasePkg, BaseFtpTree
-errnum=0
+from sign import is_signed
 
-quietmode=False
+errnum = 0
+quietmode = False
 
 class SomeError(Exception):
     def __init__(self):
@@ -242,6 +243,8 @@ class FtpTree(BaseFtpTree):
     def testmove(self, dsttree):
         self.__checkbuild(self.marked4moving)
         self.__checkarchs(dsttree, self.marked4moving)
+
+        self.__checksigns(dsttree, self.marked4moving, test = True)
         
         self.__rmolderfromsrc(test = True)
         self.__rmotherfromdst(dsttree, test = True)
@@ -253,8 +256,13 @@ class FtpTree(BaseFtpTree):
         if self.do_checkbuild:
             self.__checkbuild(self.marked4moving)
         bailoutonerror()
+
         self.__checkarchs(dsttree, self.marked4moving)
         bailoutonerror()
+
+        self.__checksigns(dsttree, self.marked4moving)
+        bailoutonerror()
+
         self.__rmolderfromsrc()
         self.__rmotherfromdst(dsttree)
 
@@ -264,7 +272,6 @@ class FtpTree(BaseFtpTree):
     def rpmfiles(self):
         if self.do_checkbuild:
             self.__checkbuild(self.marked4moving)
-        bailoutonerror()
 
         files = []
         for pkg in self.marked4moving:
@@ -402,3 +409,24 @@ class FtpTree(BaseFtpTree):
                 return False
         return filter(filter_older_pkgs, self.__find_other_pkgs(pkg, self))
 
+    def __checksigns(self, tree, pkgs, test = False):
+        """
+        Checks if pkgs in tree are all signed.
+
+        in case of test = true, error flag is set for unsigned packages
+        """
+        if not tree.treename in config.signed_trees:
+            return
+
+        for pkg in pkgs:
+            unsigned = 0
+            for file in pkg.rpmfiles():
+                if not is_signed(file):
+                    unsigned += 1;
+
+            if unsigned != 0:
+                if test == True:
+                    if not quietmode:
+                        pkg.warning('%d files not signed' % unsigned)
+                else:
+                    pkg.error('%d files not signed' % unsigned)
This page took 0.059429 seconds and 4 git commands to generate.