]> git.decadent.org.uk Git - dak.git/commitdiff
move copy_temporary_contents
authorMark Hymers <mhy@debian.org>
Mon, 25 May 2009 17:32:12 +0000 (18:32 +0100)
committerMark Hymers <mhy@debian.org>
Sun, 9 Aug 2009 15:49:22 +0000 (16:49 +0100)
Signed-off-by: Mark Hymers <mhy@debian.org>
dak/process_accepted.py
daklib/binary.py

index 00893fdfb52670dbf3bb4993e88a06ab6efc1f5b..661016c9a1e3d27eff2820b069ace24d323adbaf 100755 (executable)
@@ -46,6 +46,7 @@ from daklib import database
 from daklib import daklog
 from daklib import queue
 from daklib import utils
+from daklib.binary import copy_temporary_contents
 from daklib.dak_exceptions import *
 from daklib.regexes import re_default_answer, re_issource, re_fdnic
 
@@ -396,7 +397,7 @@ def install ():
                 suite_id = database.get_suite_id(suite)
                 projectB.query("INSERT INTO bin_associations (suite, bin) VALUES (%d, currval('binaries_id_seq'))" % (suite_id))
 
-            if not database.copy_temporary_contents(package, version, architecture, newfile, reject):
+            if not copy_temporary_contents(package, version, architecture, newfile, reject):
                 print "REJECT\n" + reject_message,
                 projectB.query("ROLLBACK")
                 raise MissingContents, "No contents stored for package %s, and couldn't determine contents of %s" % (package, newfile )
index 5bfa8715efad026ec819a73bc7874e6d7f9aed87..5deb4a5c0b3cb2ff4761117d3515eda06ea2bcb5 100755 (executable)
@@ -42,15 +42,15 @@ Functions related debian binary packages
 import os
 import sys
 import shutil
-import tempfile
 import tarfile
 import commands
 import traceback
 import atexit
+
 from debian_bundle import deb822
-from dbconn import insert_content_paths, insert_pending_content_paths
+
+from dbconn import *
 from config import Config
-import logging
 import utils
 
 class Binary(object):
@@ -245,4 +245,62 @@ class Binary(object):
 
             os.chdir(cwd)
 
+__all__.append('Binary')
+
+def copy_temporary_contents(package, version, archname, deb, reject, session=None):
+    """
+    copy the previously stored contents from the temp table to the permanant one
+
+    during process-unchecked, the deb should have been scanned and the
+    contents stored in pending_content_associations
+    """
+
+    # first see if contents exist:
+    cnf = Config()
+
+    if session is None:
+        session = DBConn().session()
+
+    arch = get_architecture(archname, session=session)
+
+    in_pcaq = """SELECT 1 FROM pending_content_associations
+                               WHERE package=:package
+                               AND version=:version
+                               AND architecture=:archid LIMIT 1"""
+
+    vals = {'package': package,
+            'version': version,
+            'archid': arch.arch_id}
+
+    exists = True
+    check = session.execute(in_pcaq, vals)
+
+    if check.rowcount > 0:
+        # This should NOT happen.  We should have added contents
+        # during process-unchecked.  if it did, log an error, and send
+        # an email.
+        subst = {
+            "__PACKAGE__": package,
+            "__VERSION__": version,
+            "__ARCH__": arch,
+            "__TO_ADDRESS__": cnf["Dinstall::MyAdminAddress"],
+            "__DAK_ADDRESS__": cnf["Dinstall::MyEmailAddress"] }
+
+        message = utils.TemplateSubst(subst, cnf["Dir::Templates"]+"/missing-contents")
+        utils.send_mail(message)
+
+        exists = Binary(deb, reject).scan_package()
+
+    if exists:
+        sql = """INSERT INTO content_associations(binary_pkg,filepath,filename)
+                 SELECT currval('binaries_id_seq'), filepath, filename FROM pending_content_associations
+                 WHERE package=:package AND version=:version AND architecture=:archid"""
+        session.execute(sql, vals)
+
+        sql = """DELETE from pending_content_associations
+                 WHERE package=:package AND version=:version AND architecture=:archid"""
+        session.execute(sql, vals)
+
+    return exists
 
+__all__.append('copy_temporary_contents')