diff options
Diffstat (limited to 'importpkg.py')
-rwxr-xr-x | importpkg.py | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/importpkg.py b/importpkg.py index 92c474e..b01fad3 100755 --- a/importpkg.py +++ b/importpkg.py @@ -16,8 +16,7 @@ except ImportError: import yaml -from dedup.debpkg import DebExtractor, decodetarname, get_tar_hashes, \ - process_control +from dedup.debpkg import DebExtractor, decodetarname, get_tar_hashes from dedup.hashing import DecompressedHash, SuppressingHash, HashedStream, \ HashBlacklistContent from dedup.compression import GzipDecompressor @@ -56,13 +55,19 @@ class ImportpkgExtractor(DebExtractor): DebExtractor.__init__(self) self.callback = callback - def handle_control_tar(self, tarfileobj): - for elem in tarfileobj: - if elem.name not in ("./control", "control"): - continue - self.callback(process_control(tarfileobj.extractfile(elem).read())) - return - raise ValueError("missing control file") + def handle_control_info(self, info): + try: + source = info["source"].split()[0] + except KeyError: + source = info["package"] + # deb822 currently returns :any dependencies raw. see #670679 + deprelations = info.relations.get("depends", []) + \ + info.relations.get("pre-depends", []) + depends = set(dep[0]["name"].split(u':', 1)[0] + for dep in deprelations if len(dep) == 1) + self.callback(dict(package=info["package"], source=source, + version=info["version"], + architecture=info["architecture"], depends=depends)) def handle_data_tar(self, tarfileobj): for name, size, hashes in get_tar_hashes(tarfileobj, |