diff options
author | Florian Weimer <fw@deneb.enyo.de> | 2011-04-24 14:25:18 +0000 |
---|---|---|
committer | Florian Weimer <fw@deneb.enyo.de> | 2011-04-24 14:25:18 +0000 |
commit | bd7faa374cd2374b7708346495f5922d1bc4e3b9 (patch) | |
tree | 44c948bdd91a9e73c02a4a72d42df1f1bc125967 /lib | |
parent | 7fa0aa34bc8530f12e95673d403865f125b860ac (diff) |
debian_support.inspect_deb(): remove
bin/list-queue uses the parser in python-debian instead.
git-svn-id: svn+ssh://svn.debian.org/svn/secure-testing@16577 e39458fd-73e7-0310-bf30-c45bca0a0e42
Diffstat (limited to 'lib')
-rw-r--r-- | lib/python/debian_support.py | 68 |
1 files changed, 20 insertions, 48 deletions
diff --git a/lib/python/debian_support.py b/lib/python/debian_support.py index 59d4c99a89..16d0fdd4e6 100644 --- a/lib/python/debian_support.py +++ b/lib/python/debian_support.py @@ -471,8 +471,28 @@ class BinaryPackage(object): pkg_source, pkg_source_version)) def loadtuple(self, data): + if None in data: + raise ValueError("None not permitted: " + repr(data)) self.name, self.version, self.arch, self.source, self.source_version =\ data + + def load822(self, data): + "Loads this object from a Deb822-like object." + + pkg = data["Package"] + version = data["Version"] + if "Source" in data: + source = data.get("Source", None) + match = self.re_source.match(source) + if match is None: + raise ValueError("invalid Source field: " + repr(source)) + src, src_version = match.groups() + if src_version is None: + src_version = version + else: + src = pkg + src_version = version + self.loadtuple((pkg, version, data["Architecture"], src, src_version)) def astuple(self): return (self.name, self.version, self.arch, @@ -481,54 +501,6 @@ class BinaryPackage(object): def __repr__(self): return "BinaryPackage(" + repr(self.astuple()) + ")" -def inspect_deb(path): - "Extracts meta-data from a Debian package file (.deb)." - devnull = file("/dev/null", "r") - tempout = tempfile.TemporaryFile() - temperr = tempfile.TemporaryFile() - dpkg = subprocess.Popen(("dpkg", "-I", "--", path), - stdin=devnull, - stdout=tempout, - stderr=temperr) - dpkg.wait() - temperr.seek(0) - temperr = temperr.read() - if temperr: - raise IOError("unexpected dpkg output for " + repr(path) + ": " - + repr(temperr)) - if dpkg.returncode <> 0: - raise IOError("unexpected dpkg status for " + repr(path) + ": " - + repr(dpkg.returncode)) - tempout.seek(0) - lines = list(tempout.readlines()) - if not lines: - raise IOError("empty dpkg output for " + repr(path)) - if lines[0] <> " new debian package, version 2.0.\n": - raise IOError("unexpected dpkg format for " +repr(path) + ":" - + repr(lines[0])) - while lines and not lines[0].startswith(" Package: "): - del lines[0] - if not lines: - raise IOError("no Package: line in dpkg output for " +repr(path)) - stripped = StringIO() - for line in lines: - if line.startswith(" "): - stripped.write(line[1:]) - else: - break - stripped.seek(0) - pkgfile = PackageFile(path, stripped) - result = None - for pkg in pkgfile: - if result is None: - result = BinaryPackage() - result.loadentry(pkg) - else: - raise IOError("multiple package entries for " + repr(path)) - if result is None: - raise IOError("no package entries for " + repr(path)) - return result - def test(): # Version assert Version('0') < Version('a') |