X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fcontents.py;h=da7adb137ab2406481459cf5f0b31d7f963cda0f;hb=d36d7bc0fbafcb88ff38016335395820d001e2aa;hp=dffb425e3cc2e5f8c5245de9e209fdaaa7a1f454;hpb=14ee11299852e43c6d061fc2ed1cc3bb0fc1f9f3;p=dak.git diff --git a/daklib/contents.py b/daklib/contents.py index dffb425e..da7adb13 100755 --- a/daklib/contents.py +++ b/daklib/contents.py @@ -35,16 +35,11 @@ from tempfile import mkdtemp import os.path -class ContentsWriter(object): +class BinaryContentsWriter(object): ''' - ContentsWriter writes the Contents-$arch.gz files. + BinaryContentsWriter writes the Contents-$arch.gz files. ''' def __init__(self, suite, architecture, overridetype, component = None): - ''' - The constructor clones its arguments into a new session object to make - sure that the new ContentsWriter object can be executed in a different - thread. - ''' self.suite = suite self.architecture = architecture self.overridetype = overridetype @@ -190,13 +185,33 @@ select bc.file, string_agg(o.section || '/' || b.package, ',' order by b.package gzip.stdin.close() output_file.close() gzip.wait() - try: - os.remove(final_filename) - except: - pass + os.chmod(temp_filename, 0664) os.rename(temp_filename, final_filename) - os.chmod(final_filename, 0664) + +def generate_helper(suite_id, arch_id, overridetype_id, component_id = None): + ''' + This function is called in a new subprocess. + ''' + session = DBConn().session() + suite = Suite.get(suite_id, session) + architecture = Architecture.get(arch_id, session) + overridetype = OverrideType.get(overridetype_id, session) + log_message = [suite.suite_name, architecture.arch_string, overridetype.overridetype] + if component_id is None: + component = None + else: + component = Component.get(component_id, session) + log_message.append(component.component_name) + contents_writer = BinaryContentsWriter(suite, architecture, overridetype, component) + contents_writer.write_file() + return log_message + +class ContentsWriter(object): + ''' + Loop over all suites, architectures, overridetypes, and components to write + all contents files. + ''' @classmethod def log_result(class_, result): ''' @@ -239,24 +254,6 @@ select bc.file, string_agg(o.section || '/' || b.package, ',' order by b.package pool.join() session.close() -def generate_helper(suite_id, arch_id, overridetype_id, component_id = None): - ''' - This function is called in a new subprocess. - ''' - session = DBConn().session() - suite = Suite.get(suite_id, session) - architecture = Architecture.get(arch_id, session) - overridetype = OverrideType.get(overridetype_id, session) - log_message = [suite.suite_name, architecture.arch_string, overridetype.overridetype] - if component_id is None: - component = None - else: - component = Component.get(component_id, session) - log_message.append(component.component_name) - contents_writer = ContentsWriter(suite, architecture, overridetype, component) - contents_writer.write_file() - return log_message - class BinaryContentsScanner(object): ''' @@ -426,10 +423,13 @@ class SourceContentsScanner(object): session.close() return { 'processed': processed, 'remaining': remaining } -def source_scan_helper(binary_id): +def source_scan_helper(source_id): ''' This function runs in a subprocess. ''' - scanner = SourceContentsScanner(source_id) - scanner.scan() + try: + scanner = SourceContentsScanner(source_id) + scanner.scan() + except Exception, e: + print e