emerge: handle KeyboardInterrupt, not SIGINT
[portage.git] / bin / glsa-check
old mode 100644 (file)
new mode 100755 (executable)
index 74a9ee7..eddc905
@@ -1,18 +1,16 @@
 #!/usr/bin/python
-# Copyright 2008-2009 Gentoo Foundation
+# Copyright 2008-2012 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Id$
 
-import os
-import sys
+from __future__ import print_function
 
-try:
-       import portage
-except ImportError:
-       from os import path as osp
-       sys.path.insert(0, osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "pym"))
-       import portage
+import sys
 
+from os import path as osp
+pym_path = osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "pym")
+sys.path.insert(0, pym_path)
+import portage
+from portage import os
 from portage.output import *
 
 from optparse import OptionGroup, OptionParser
@@ -93,7 +91,7 @@ elif mode != "list" and not params:
        parser.print_help()
        sys.exit(1)
 elif mode in ["fix", "inject"] and os.geteuid() != 0:
-       # we need root priviledges for write access
+       # we need root privileges for write access
        sys.stderr.write("\nThis tool needs root access to "+options.mode+" this GLSA\n\n")
        sys.exit(2)
 elif mode == "list" and not params:
@@ -102,8 +100,9 @@ elif mode == "list" and not params:
 # delay this for speed increase
 from portage.glsa import *
 
-vardb = portage.db[portage.settings["ROOT"]]["vartree"].dbapi
-portdb = portage.db["/"]["porttree"].dbapi
+eroot = portage.settings['EROOT']
+vardb = portage.db[eroot]["vartree"].dbapi
+portdb = portage.db[eroot]["porttree"].dbapi
 
 # build glsa lists
 completelist = get_glsa_list(portage.settings)
@@ -124,7 +123,7 @@ if "affected" in params:
        for x in todolist:
                try:
                        myglsa = Glsa(x, portage.settings, vardb, portdb)
-               except (GlsaTypeException, GlsaFormatException), e:
+               except (GlsaTypeException, GlsaFormatException) as e:
                        if verbose:
                                sys.stderr.write(("invalid GLSA: %s (error message was: %s)\n" % (x, e)))
                        continue
@@ -149,7 +148,7 @@ def summarylist(myglsalist, fd1=sys.stdout, fd2=sys.stderr):
        for myid in myglsalist:
                try:
                        myglsa = Glsa(myid, portage.settings, vardb, portdb)
-               except (GlsaTypeException, GlsaFormatException), e:
+               except (GlsaTypeException, GlsaFormatException) as e:
                        if verbose:
                                fd2.write(("invalid GLSA: %s (error message was: %s)\n" % (myid, e)))
                        continue
@@ -170,13 +169,13 @@ def summarylist(myglsalist, fd1=sys.stdout, fd2=sys.stderr):
 
                fd1.write(color(myglsa.nr) + " " + color(status) + " " + color(access) + myglsa.title + " (")
                if not verbose:
-                       for pkg in myglsa.packages.keys()[:3]:
+                       for pkg in list(myglsa.packages)[:3]:
                                fd1.write(" " + pkg + " ")
                        if len(myglsa.packages) > 3:
                                fd1.write("... ")
                else:
-                       for pkg in myglsa.packages.keys():
-                               mylist = vardb.match(portage.dep_getkey(str(pkg)))
+                       for pkg in myglsa.packages:
+                               mylist = vardb.match(pkg)
                                if len(mylist) > 0:
                                        pkg = color(" ".join(mylist))
                                fd1.write(" " + pkg + " ")
@@ -195,7 +194,7 @@ if mode in ["dump", "fix", "inject", "pretend"]:
        for myid in glsalist:
                try:
                        myglsa = Glsa(myid, portage.settings, vardb, portdb)
-               except (GlsaTypeException, GlsaFormatException), e:
+               except (GlsaTypeException, GlsaFormatException) as e:
                        if verbose:
                                sys.stderr.write(("invalid GLSA: %s (error message was: %s)\n" % (myid, e)))
                        continue
@@ -226,12 +225,12 @@ if mode in ["dump", "fix", "inject", "pretend"]:
                                sys.stdout.write("The following updates will be performed for this GLSA:\n")
                                for pkg in mergelist:
                                        oldver = None
-                                       for x in vardb.match(portage.dep_getkey(pkg)):
+                                       for x in vardb.match(portage.cpv_getkey(pkg)):
                                                if vardb.aux_get(x, ["SLOT"]) == portdb.aux_get(pkg, ["SLOT"]):
                                                        oldver = x
                                        if oldver == None:
                                                raise ValueError("could not find old version for package %s" % pkg)
-                                       oldver = oldver[len(portage.dep_getkey(oldver))+1:]
+                                       oldver = oldver[len(portage.cpv_getkey(oldver))+1:]
                                        sys.stdout.write("     " + pkg + " (" + oldver + ")\n")
                        else:
                                sys.stdout.write("Nothing to do for this GLSA\n")
@@ -247,7 +246,7 @@ if mode == "test":
        for myid in glsalist:
                try:
                        myglsa = Glsa(myid, portage.settings, vardb, portdb)
-               except (GlsaTypeException, GlsaFormatException), e:
+               except (GlsaTypeException, GlsaFormatException) as e:
                        if verbose:
                                sys.stderr.write(("invalid GLSA: %s (error message was: %s)\n" % (myid, e)))
                        continue
@@ -266,7 +265,7 @@ if mode == "test":
 # mail mode as requested by solar
 if mode == "mail":
        import portage.mail, socket
-       from StringIO import StringIO
+       from io import StringIO
        from email.mime.text import MIMEText
        
        # color doesn't make any sense for mail
@@ -296,7 +295,7 @@ if mode == "mail":
        for myid in glsalist:
                try:
                        myglsa = Glsa(myid, portage.settings, vardb, portdb)
-               except (GlsaTypeException, GlsaFormatException), e:
+               except (GlsaTypeException, GlsaFormatException) as e:
                        if verbose:
                                sys.stderr.write(("invalid GLSA: %s (error message was: %s)\n" % (myid, e)))
                        continue