'''
Base class for compressed and uncompressed file writing.
'''
- def __init__(template, **keywords):
+ def __init__(self, template, **keywords):
'''
The template argument is a string template like
"dists/%(suite)s/%(component)s/Contents-%(architecture)s.gz" that
'''
Returns a file object for writing.
'''
- self.file = open(self.path + '.new')
+ # create missing directories
+ try:
+ os.makedirs(os.path.dirname(self.path))
+ except:
+ pass
+ self.file = open(self.path + '.new', 'w')
+ return self.file
# internal helper function
def rename(self, filename):
if self.uncompressed:
self.rename(self.path)
else:
- os.unlink(self.path)
+ os.unlink(self.path + '.new')
-class BinaryContentsWriter(BaseFileWriter):
- def __init__(**keywords):
+class BinaryContentsFileWriter(BaseFileWriter):
+ def __init__(self, **keywords):
'''
The value of the keywords suite, component, and architecture are
strings. The value of component may be omitted if not applicable.
'bzip2': False
}
flags.update(keywords)
- if 'component' in flags:
- template "dists/%(suite)s/%(component)s/Contents-%(architecture)s.gz" % values
- else:
- template = "dists/%(suite)s/Contents-%(architecture)s.gz" % values
+ if flags['debtype'] == 'deb':
+ template = "dists/%(suite)s/%(component)s/Contents-%(architecture)s"
+ else: # udeb
+ template = "dists/%(suite)s/%(component)s/Contents-udeb-%(architecture)s"
+ BaseFileWriter.__init__(self, template, **flags)
+
+class SourceContentsFileWriter(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': False
+ }
+ 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)