]> git.decadent.org.uk Git - dak.git/blobdiff - daklib/contents.py
Allow to specify a custom unpack directory in UnpackedSource class
[dak.git] / daklib / contents.py
index 2fb7dfcd35b3e8fcb98bcbf5cf68c28a8d087522..e5abcac61a916d13d15b9ed7c339ffc539d3a504 100644 (file)
@@ -284,7 +284,7 @@ class ContentsWriter(object):
         class_.logger.log(result)
 
     @classmethod
-    def write_all(class_, logger, suite_names = [], component_names = [], force = False):
+    def write_all(class_, logger, archive_names = [], suite_names = [], component_names = [], force = False):
         '''
         Writes all Contents files for suites in list suite_names which defaults
         to all 'touchable' suites if not specified explicitely. Untouchable
@@ -293,13 +293,15 @@ class ContentsWriter(object):
         class_.logger = logger
         session = DBConn().session()
         suite_query = session.query(Suite)
+        if len(archive_names) > 0:
+            suite_query = suite_query.join(Suite.archive).filter(Archive.archive_name.in_(archive_names))
         if len(suite_names) > 0:
             suite_query = suite_query.filter(Suite.suite_name.in_(suite_names))
         component_query = session.query(Component)
         if len(component_names) > 0:
             component_query = component_query.filter(Component.component_name.in_(component_names))
         if not force:
-            suite_query = suite_query.filter_by(untouchable = False)
+            suite_query = suite_query.filter(Suite.untouchable == False)
         deb_id = get_override_type('deb', session).overridetype_id
         udeb_id = get_override_type('udeb', session).overridetype_id
         pool = Pool()
@@ -392,11 +394,12 @@ class UnpackedSource(object):
     UnpackedSource extracts a source package into a temporary location and
     gives you some convinient function for accessing it.
     '''
-    def __init__(self, dscfilename):
+    def __init__(self, dscfilename, tmpbasedir=None):
         '''
         The dscfilename is a name of a DSC file that will be extracted.
         '''
-        temp_directory = mkdtemp(dir = Config()['Dir::TempPath'])
+        basedir = tmpbasedir if tmpbasedir else Config()['Dir::TempPath']
+        temp_directory = mkdtemp(dir = basedir)
         self.root_directory = os.path.join(temp_directory, 'root')
         command = ('dpkg-source', '--no-copy', '--no-check', '-q', '-x',
             dscfilename, self.root_directory)