]> git.decadent.org.uk Git - dak.git/commitdiff
Merge commit 'lamby/master' into merge
authorJoerg Jaspert <joerg@debian.org>
Mon, 26 Oct 2009 14:49:24 +0000 (15:49 +0100)
committerJoerg Jaspert <joerg@debian.org>
Mon, 26 Oct 2009 14:49:24 +0000 (15:49 +0100)
* commit 'lamby/master':
  Make import_keyring use dbconn.get_or_set_uid.
  Make import_keyring use get_or_set_keyring.
  Port database.get_or_set_keyring_id => dbconn.get_or_set_keyring
  Use gzip.open(.., 'rb') instead of gunzip and temporary filenames.

Signed-off-by: Joerg Jaspert <joerg@debian.org>
dak/import_keyring.py
dak/rm.py
daklib/dbconn.py

index 4c6a2eaa73dcbfad787cdb87e4bbe0d74a19c917..eac8ae5d406a6b89f1d9751698633287ba6fe019 100755 (executable)
@@ -140,7 +140,7 @@ class Keyring(object):
                 keys[key]["uid"] = uid
 
                 if keyid != None: continue
-                keyid = database.get_or_set_uid_id(uid)
+                keyid = get_or_set_uid_id(uid).uid
                 byuid[keyid] = (uid, name)
                 byname[uid] = (keyid, name)
 
@@ -157,13 +157,13 @@ class Keyring(object):
                 keys[x]["uid"] = format % "invalid-uid"
             else:
                 uid = format % keys[x]["email"]
-                keyid = database.get_or_set_uid_id(uid)
+                keyid = get_or_set_uid(uid).uid
                 byuid[keyid] = (uid, keys[x]["name"])
                 byname[uid] = (keyid, keys[x]["name"])
                 keys[x]["uid"] = uid
         if any_invalid:
             uid = format % "invalid-uid"
-            keyid = database.get_or_set_uid_id(uid)
+            keyid = get_or_set_uid_id(uid).uid
             byuid[keyid] = (uid, "ungeneratable user id")
             byname[uid] = (keyid, "ungeneratable user id")
         return (byname, byuid)
@@ -227,8 +227,9 @@ def main():
 
         is_dm = cnf["Import-Keyring::"+keyringname+"::Debian-Maintainer"]
 
-    keyring_id = database.get_or_set_keyring_id(
-                        keyringname.split("/")[-1])
+    keyring_id = get_or_set_keyring(
+        keyringname.split("/")[-1], session,
+    ).keyring_id
 
     ### Generate new uid entries if they're needed (from LDAP or the keyring)
     (desuid_byname, desuid_byid) = keyring.generate_desired_users()
index 8ed03412293f1d946976daa06b855bc394a7f7c4..8dff809ef30c5289368e22870ec831212803bae1 100755 (executable)
--- a/dak/rm.py
+++ b/dak/rm.py
@@ -43,6 +43,7 @@ import commands
 import os
 import re
 import sys
+import gzip
 import apt_pkg
 import apt_inst
 
@@ -115,11 +116,7 @@ def reverse_depends_check(removals, suites, arches=None):
         for component in components:
             filename = "%s/dists/%s/%s/binary-%s/Packages.gz" % (cnf["Dir::Root"], suites[0], component, architecture)
             # apt_pkg.ParseTagFile needs a real file handle and can't handle a GzipFile instance...
-            (fd, temp_filename) = utils.temp_filename()
-            (result, output) = commands.getstatusoutput("gunzip -c %s > %s" % (filename, temp_filename))
-            if (result != 0):
-                utils.fubar("Gunzip invocation failed!\n%s\n" % (output), result)
-            packages = utils.open_file(temp_filename)
+            packages = gzip.open(filename, 'rb')
             Packages = apt_pkg.ParseTagFile(packages)
             while Packages.Step():
                 package = Packages.Section.Find("Package")
@@ -149,7 +146,6 @@ def reverse_depends_check(removals, suites, arches=None):
                             virtual_packages[virtual_pkg] += 1
                 p2c[package] = component
             packages.close()
-            os.unlink(temp_filename)
 
         # If a virtual package is only provided by the to-be-removed
         # packages, treat the virtual package as to-be-removed too.
@@ -200,12 +196,7 @@ def reverse_depends_check(removals, suites, arches=None):
     for component in components:
         filename = "%s/dists/%s/%s/source/Sources.gz" % (cnf["Dir::Root"], suites[0], component)
         # apt_pkg.ParseTagFile needs a real file handle and can't handle a GzipFile instance...
-        (fd, temp_filename) = utils.temp_filename()
-        result, output = commands.getstatusoutput("gunzip -c %s > %s" % (filename, temp_filename))
-        if result != 0:
-            sys.stderr.write("Gunzip invocation failed!\n%s\n" % (output))
-            sys.exit(result)
-        sources = utils.open_file(temp_filename, "r")
+        sources = gzip.open(filename, 'rb')
         Sources = apt_pkg.ParseTagFile(sources)
         while Sources.Step():
             source = Sources.Section.Find("Package")
index 23aeda6fdad5ae52109eac5fb4f5989d2eb28463..c0b7d0e841498097bf2fc6cc32522317f98f1717 100755 (executable)
@@ -981,6 +981,42 @@ class Keyring(object):
 
 __all__.append('Keyring')
 
+def get_or_set_keyring(keyring, session=None):
+    """
+    If C{keyring} does not have an entry in the C{keyrings} table yet, create one
+    and return the new Keyring
+    If C{keyring} already has an entry, simply return the existing Keyring
+
+    @type keyring: string
+    @param keyring: the keyring name
+
+    @rtype: Keyring
+    @return: the Keyring object for this keyring
+
+    """
+    privatetrans = False
+    if session is None:
+        session = DBConn().session()
+        privatetrans = True
+
+    try:
+        obj = session.query(Keyring).filter_by(keyring_name=keyring).first()
+
+        if obj is None:
+            obj = Keyring(keyring_name=keyring)
+            session.add(obj)
+            if privatetrans:
+                session.commit()
+            else:
+                session.flush()
+
+        return obj
+    finally:
+        if privatetrans:
+            session.close()
+
+__all__.append('get_or_set_keyring')
+
 ################################################################################
 
 class Location(object):