]> git.decadent.org.uk Git - dak.git/commitdiff
Merge branch 'master' of ssh://ftp-master.debian.org/srv/ftp.debian.org/git/dak
authorMark Hymers <mhy@debian.org>
Fri, 25 Mar 2011 13:12:57 +0000 (13:12 +0000)
committerMark Hymers <mhy@debian.org>
Fri, 25 Mar 2011 13:12:57 +0000 (13:12 +0000)
dak/generate_filelist.py
dak/make_changelog.py
daklib/contents.py
daklib/lists.py
daklib/queue.py
tests/fixtures/dak.conf

index dcf6864ff72412e98b3797b908eb49213e70de74..1f4d665495ed21497b421f2d8ea5d4c7b6080570 100755 (executable)
@@ -41,7 +41,7 @@ from daklib.threadpool import ThreadPool
 from daklib import utils
 import apt_pkg, os, stat, sys
 
-from daklib.lists import getSources, getBinaries
+from daklib.lists import getSources, getBinaries, getArchAll
 
 def listPath(suite, component, architecture = None, type = None,
         incremental_mode = False):
@@ -74,6 +74,17 @@ def writeSourceList(args):
     session.close()
     file.close()
 
+def writeAllList(args):
+    (suite, component, architecture, type, incremental_mode) = args
+    (file, timestamp) = listPath(suite, component, architecture, type,
+            incremental_mode)
+    session = DBConn().session()
+    for _, filename in getArchAll(suite, component, architecture, type,
+            session, timestamp):
+        file.write(filename + '\n')
+    session.close()
+    file.close()
+
 def writeBinaryList(args):
     (suite, component, architecture, type, incremental_mode) = args
     (file, timestamp) = listPath(suite, component, architecture, type,
@@ -144,7 +155,14 @@ def main():
                 elif architecture.arch_string == 'source':
                     threadpool.queueTask(writeSourceList,
                         (suite, component, Options['Incremental']))
-                elif architecture.arch_string != 'all':
+                elif architecture.arch_string == 'all':
+                    threadpool.queueTask(writeAllList,
+                        (suite, component, architecture, 'deb',
+                            Options['Incremental']))
+                    threadpool.queueTask(writeAllList,
+                        (suite, component, architecture, 'udeb',
+                            Options['Incremental']))
+                else: # arch any
                     threadpool.queueTask(writeBinaryList,
                         (suite, component, architecture, 'deb',
                             Options['Incremental']))
index 398c3526a54c4f3721be5b7362afc3769c87a3be..ac5581d02be8ae43a3de98d4145a1ef1a49cb7f3 100755 (executable)
@@ -160,7 +160,7 @@ def display_changes(uploads, index):
         print upload[index]
         prev_upload = upload[0]
 
-def export_files(session, pool, clpool, temppath):
+def export_files(session, pool, clpool):
     """
     Export interesting files from source packages.
     """
@@ -282,7 +282,7 @@ def main():
     if export:
         if cnf.exportpath:
             exportpath = os.path.join(Cnf['Dir::Export'], cnf.exportpath)
-            export_files(session, Cnf['Dir::Pool'], exportpath, Cnf['Dir::TempPath'])
+            export_files(session, Cnf['Dir::Pool'], exportpath)
         else:
             utils.fubar('No changelog export path defined')
     elif binnmu:
index a5950524e274fef14f049f28426ac76da9725528..f3077aab6487eede63f71341d01ede61fec16525 100755 (executable)
@@ -441,7 +441,8 @@ class UnpackedSource(object):
         '''
         The dscfilename is a name of a DSC file that will be extracted.
         '''
-        self.root_directory = os.path.join(mkdtemp(), 'root')
+        temp_directory = mkdtemp(dir = Config()['Dir::TempPath'])
+        self.root_directory = os.path.join(temp_directory, 'root')
         command = ('dpkg-source', '--no-copy', '--no-check', '-q', '-x',
             dscfilename, self.root_directory)
         check_call(command, preexec_fn = subprocess_setup)
index a8d3cedbe03853ee5a061e200a64d25856c48935..e7f8bf968c442f3f094285d00a23566d310bb031 100755 (executable)
@@ -56,6 +56,21 @@ def getSources(suite, component, session, timestamp = None):
              'component': component.component_id }
     return fetch(query, args, session)
 
+def getArchAll(suite, component, architecture, type, session, timestamp = None):
+    '''
+    Calculates all binaries in suite and component of architecture 'all' (and
+    only 'all') and type 'deb' or 'udeb' optionally limited to binaries newer
+    than timestamp.  Returns a generator that yields a tuple of binary id and
+    full pathname to the u(deb) file. See function writeAllList() in
+    dak/generate_filelist.py for an example that uses this function.
+    '''
+    query = suite.binaries.filter_by(architecture = architecture, binarytype = type)
+    if timestamp is not None:
+        extra_cond = 'extract(epoch from bin_associations.created) > %d' % timestamp
+        query = query.filter(extra_cond)
+    for binary in query:
+        yield (binary.binary_id, binary.poolfile.fullpath)
+
 def getBinaries(suite, component, architecture, type, session, timestamp = None):
     '''
     Calculates the binaries in suite and component of architecture and
index 0d9ca5e1f66336dab2bdcbaca701c318a2e118a9..4ea117b30883abaa2f04a3510e4dd3cdf08af03b 100755 (executable)
@@ -87,6 +87,9 @@ def get_type(f, session):
         file_type = f["dbtype"]
     elif re_source_ext.match(f["type"]):
         file_type = "dsc"
+    elif f['architecture'] == 'source' and f["type"] == 'unreadable':
+        utils.warn('unreadable source file (will continue and hope for the best)')
+        return f["type"]
     else:
         file_type = f["type"]
         utils.fubar("invalid type (%s) for new.  Dazed, confused and sure as heck not continuing." % (file_type))
index 6f68238da95f913c3b23e4c6f9c95f65ef118bc6..3a728f78c1a0911ae74cb62fbab32b32a5a60d66 100644 (file)
@@ -22,6 +22,7 @@ Dir
 {
   Root "tests/fixtures/ftp/";
   Pool "/srv/ftp-master.debian.org/ftp/pool/";
+  TempPath "/tmp";
 };
 
 DB