def generate_control_file(self): dsc = Dsc() build_deps = [] packages = OrderedDict() self.installs = {} self.symlinks = {} for item in self.generate_control_content(): log.debug(repr(item)) if isinstance(item, SourceControl): for key, value in item.items(): key = '-'.join([k.capitalize() for k in key.split('_')]) if key == 'Description': value = value.strip() \ .replace('\n\n', '\n.\n') \ .replace('\n', '\n ') dsc[key] = value elif isinstance(item, BuildDependency): build_deps.append(item.dependency) elif isinstance(item, Package): control = Deb822() for key, value in item._asdict().items(): key = '-'.join([k.capitalize() for k in key.split('_')]) if key == 'Description': value = value.strip() \ .replace('\n\n', '\n.\n') \ .replace('\n', '\n ') control[key] = value packages[item.package] = (control, [], []) self.installs[item.package] = [] self.symlinks[item.package] = [] elif isinstance(item, Dependency): packages[item.package][1].append(item.dependency) elif isinstance(item, Provide): packages[item.package][2].append(item.provide) elif isinstance(item, Symlink): self.symlinks[item.package].append((item.dest, item.src)) elif isinstance(item, FastBuild): if self.fast_build is None: self.fast_build = item.possible else: self.fast_build = self.fast_build and item.possible else: raise NotImplementedError( 'Got unexcepted action item' ' on control generation {!r}'.format(item)) if self.installs: build_deps.append('dh-exec') with open(self.debian_file('control'), 'wb') as control_file: dsc['Build-Depends'] = ', '.join(build_deps) dsc.dump(control_file) for control, deps, provides in packages.values(): if deps: control['Depends'] = ', '.join(deps) if provides: control['Provides'] = ', '.join(provides) control_file.write(b'\n') control.dump(control_file)