Some python tweaks to speed glsa-check
authorfuzzyray <fuzzyray@gentoo.org>
Wed, 20 May 2009 21:44:13 +0000 (21:44 -0000)
committerfuzzyray <fuzzyray@gentoo.org>
Wed, 20 May 2009 21:44:13 +0000 (21:44 -0000)
svn path=/trunk/gentoolkit/; revision=646

bin/glsa-check
pym/gentoolkit/glsa/__init__.py

index 9b994513674427e3f5ce5eb0934e26bf5f3b63e5..3c41fffd25071f9732602da096b032c8d301619e 100644 (file)
@@ -131,7 +131,7 @@ if mode == "help" or mode == "HELP":
                sys.stderr.write("\n" + msg)
                sys.exit(1)
 
-# we need root priviledges for write access
+# we need root privileges for write access
 if mode in ["fix", "inject"] and os.geteuid() != 0:
        sys.stderr.write(__program__ + ": root access is needed for \""+mode+"\" mode\n")
        sys.exit(2)
index b325bd56680378fedc483273810b971787bd01fc..cc8051710e4df352ce5f6948b352588dcb495aed 100644 (file)
@@ -18,6 +18,7 @@ import sys
 import urllib
 import codecs
 import re
+import operator
 import xml.dom.minidom
 from StringIO import StringIO
 
@@ -153,7 +154,7 @@ def get_glsa_list(repository, myconfig):
        
        for f in dirlist:
                try:
-                       if f[:len(prefix)] == prefix:
+                       if f[:len(prefix)] == prefix and f[-1*len(suffix):] == suffix:
                                rValue.append(f[len(prefix):-1*len(suffix)])
                except IndexError:
                        pass
@@ -168,13 +169,11 @@ def getListElements(listnode):
        @rtype:         List of Strings
        @return:        a list that contains the value of the <li> elements
        """
-       rValue = []
        if not listnode.nodeName in ["ul", "ol"]:
                raise GlsaFormatException("Invalid function call: listnode is not <ul> or <ol>")
-       for li in listnode.childNodes:
-               if li.nodeType != xml.dom.Node.ELEMENT_NODE:
-                       continue
-               rValue.append(getText(li, format="strip"))
+       rValue = [getText(li, format="strip") \
+               for li in listnode.childNodes \
+               if li.nodeType == xml.dom.Node.ELEMENT_NODE]
        return rValue
 
 def getText(node, format, textfd = None):
@@ -262,9 +261,8 @@ def getMultiTagsText(rootnode, tagname, format):
        @rtype:         List of Strings
        @return:        a list containing the text of all I{tagname} childnodes
        """
-       rValue = []
-       for e in rootnode.getElementsByTagName(tagname):
-               rValue.append(getText(e, format))
+       rValue = [getText(e, format) \
+               for e in rootnode.getElementsByTagName(tagname)]
        return rValue
 
 def makeAtom(pkgname, versionNode):
@@ -396,13 +394,8 @@ def getMinUpgrade(vulnerableList, unaffectedList, minimize=True):
                                the installed version.
        """
        rValue = None
-       v_installed = []
-       u_installed = []
-       for v in vulnerableList:
-               v_installed += match(v, "vartree")
-
-       for u in unaffectedList:
-               u_installed += match(u, "vartree")
+       v_installed = reduce(operator.add, [match(v, "vartree") for v in vulnerableList], [])
+       u_installed = reduce(operator.add, [match(u, "vartree") for u in unaffectedList], [])
        
        install_unaffected = True
        for i in v_installed:
@@ -636,21 +629,15 @@ class Glsa:
                        pass
                if len(self.bugs) > 0:
                        outstream.write("\nRelated bugs:      ")
-                       for i in range(0, len(self.bugs)):
-                               outstream.write(self.bugs[i])
-                               if i < len(self.bugs)-1:
-                                       outstream.write(", ")
-                               else:
-                                       outstream.write("\n")                           
+                       outstream.write(", ".join(self.bugs))
+                       outstream.write("\n")
                if self.background:
                        outstream.write("\n"+wrap(self.background, width, caption="Background:       "))
                outstream.write("\n"+wrap(self.description, width, caption="Description:      "))
                outstream.write("\n"+wrap(self.impact_text, width, caption="Impact:           "))
                outstream.write("\n"+wrap(self.workaround, width, caption="Workaround:       "))
                outstream.write("\n"+wrap(self.resolution, width, caption="Resolution:       "))
-               myreferences = ""
-               for r in self.references:
-                       myreferences += (r.replace(" ", SPACE_ESCAPE)+NEWLINE_ESCAPE+" ")
+               myreferences = " ".join(r.replace(" ", SPACE_ESCAPE)+NEWLINE_ESCAPE for r in self.references)
                outstream.write("\n"+wrap(myreferences, width, caption="References:       "))
                outstream.write("\n")