X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Ffilewriter.py;h=de74af6f2117c7fbd68283804053013406f85ba7;hb=c5e62511336d16a4b1648b9b84b6b6d80e560c21;hp=31093f008099c87bfa83c3d8773ebcb2cc6b2651;hpb=ac89f32d430096e45648271e7c953aae7c45b9f7;p=dak.git diff --git a/daklib/filewriter.py b/daklib/filewriter.py index 31093f00..de74af6f 100755 --- a/daklib/filewriter.py +++ b/daklib/filewriter.py @@ -54,6 +54,11 @@ class BaseFileWriter(object): ''' Returns a file object for writing. ''' + # create missing directories + try: + os.makedirs(os.path.dirname(self.path)) + except: + pass self.file = open(self.path + '.new', 'w') return self.file @@ -93,10 +98,10 @@ class BinaryContentsFileWriter(BaseFileWriter): 'bzip2': False } flags.update(keywords) - if 'component' in flags: + if flags['debtype'] == 'deb': template = "dists/%(suite)s/%(component)s/Contents-%(architecture)s" - else: - template = "dists/%(suite)s/Contents-%(architecture)s" + else: # udeb + template = "dists/%(suite)s/%(component)s/Contents-udeb-%(architecture)s" BaseFileWriter.__init__(self, template, **flags) class SourceContentsFileWriter(BaseFileWriter): @@ -113,3 +118,42 @@ class SourceContentsFileWriter(BaseFileWriter): flags.update(keywords) template = "dists/%(suite)s/%(component)s/Contents-source" BaseFileWriter.__init__(self, template, **flags) + +class PackagesFileWriter(BaseFileWriter): + def __init__(self, **keywords): + ''' + The value of the keywords suite, component, debtype and architecture + are strings. Output files are gzip compressed only. + ''' + flags = { + 'uncompressed': False, + 'gzip': True, + 'bzip2': True + } + flags.update(keywords) + if flags['debtype'] == 'deb': + #TODO: for our initial tests of g-p-s2 we use a different location + #template = "dists/%(suite)s/%(component)s/binary-%(architecture)s/Packages" + template = "../../ftp.debian.org/web/newdists/%(suite)s/%(component)s/binary-%(architecture)s/Packages" + else: # udeb + #TODO: for our initial tests of g-p-s2 we use a different location + #template = "dists/%(suite)s/%(component)s/debian-installer/binary-%(architecture)s/Packages" + template = "../../ftp.debian.org/web/newdists/%(suite)s/%(component)s/debian-installer/binary-%(architecture)s/Packages" + BaseFileWriter.__init__(self, template, **flags) + +class SourcesFileWriter(BaseFileWriter): + def __init__(self, **keywords): + ''' + The value of the keywords suite and component are strings. Output + files are gzip compressed only. + ''' + flags = { + 'uncompressed': False, + 'gzip': True, + 'bzip2': True + } + flags.update(keywords) + #TODO: for our initial tests of g-p-s2 we use a different location + #template = "dists/%(suite)s/%(component)s/source/Sources" + template = "../../ftp.debian.org/web/newdists/%(suite)s/%(component)s/source/Sources" + BaseFileWriter.__init__(self, template, **flags)