Mercurial > treepkg > treepkg
view treepkg/debian.py @ 127:e83e96ef12b1
Add treepkg/debian.py and test/test_debian.py with code and tests to
extract soem information from debian/control files
author | Bernhard Herzog <bh@intevation.de> |
---|---|
date | Thu, 22 May 2008 19:13:12 +0000 |
parents | |
children | 674d14305e97 |
line wrap: on
line source
# Copyright (C) 2007, 2008 by Intevation GmbH # Authors: # Bernhard Herzog <bh@intevation.de> # # This program is free software under the GPL (>=v2) # Read the file COPYING coming with the software for details. """Support code for debian packages""" from treepkg.util import extract_value_for_key class DebianControlFile(object): """Parses a debian/control file and makes some of it available. Instances have the following instance variables: packages -- A list of the names of all packages defined in the control file build_depends -- A list with the names of all package listed as Build-Depends. """ def __init__(self, filename): """Initialize the instance from a file given by filename""" self.packages = [] self.build_depends = [] self.parse(filename) def parse(self, filename): lines = [line.strip() for line in open(filename).readlines()] paragraphs = [] while lines: try: empty_line = lines.index("") except ValueError: empty_line = len(lines) paragraphs.append(lines[:empty_line]) lines = lines[empty_line + 1:] self.handle_souce_paragraph(paragraphs[0]) for paragraph in paragraphs[1:]: self.handle_package_paragraph(paragraph) def handle_souce_paragraph(self, paragraph): raw_deps = extract_value_for_key(paragraph, "Build-Depends:") for dep in raw_deps.split(","): self.build_depends.append(dep.split()[0]) def handle_package_paragraph(self, paragraph): package_name = extract_value_for_key(paragraph, "Package:") arch = extract_value_for_key(paragraph, "Architecture:") self.packages.append((package_name, arch))