X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fcontents.py;h=a906b54d20e2cb8f75a83c525449a73bd601be68;hb=ac89f32d430096e45648271e7c953aae7c45b9f7;hp=6e55f62901fa580b501342ff65321ed1fe7d56c0;hpb=c3210fb3c3eb33ff14df2f4bd3da087836089444;p=dak.git diff --git a/daklib/contents.py b/daklib/contents.py index 6e55f629..a906b54d 100755 --- a/daklib/contents.py +++ b/daklib/contents.py @@ -27,7 +27,7 @@ Helper code for contents generation. from daklib.dbconn import * from daklib.config import Config -from daklib.filewriter import BinaryContentsFileWriter +from daklib.filewriter import BinaryContentsFileWriter, SourceContentsFileWriter from multiprocessing import Pool from shutil import rmtree @@ -243,33 +243,25 @@ select sc.file, string_agg(s.source, ',' order by s.source) as pkglist ''' return [item for item in self.fetch()] - def output_filename(self): + def writer(self): ''' - Returns the name of the output file. + Returns a writer object. ''' values = { - 'root': Config()['Dir::Root'], 'suite': self.suite.suite_name, 'component': self.component.component_name } - return "%(root)s/dists/%(suite)s/%(component)s/Contents-source.gz" % values + return SourceContentsFileWriter(**values) def write_file(self): ''' Write the output file. ''' - command = ['gzip', '--rsyncable'] - final_filename = self.output_filename() - temp_filename = final_filename + '.new' - output_file = open(temp_filename, 'w') - gzip = Popen(command, stdin = PIPE, stdout = output_file) + writer = self.writer() + file = writer.open() for item in self.fetch(): - gzip.stdin.write(item) - gzip.stdin.close() - output_file.close() - gzip.wait() - os.chmod(temp_filename, 0664) - os.rename(temp_filename, final_filename) + file.write(item) + writer.close() def binary_helper(suite_id, arch_id, overridetype_id, component_id = None):