summaryrefslogtreecommitdiff
path: root/importpkg.py
diff options
context:
space:
mode:
Diffstat (limited to 'importpkg.py')
-rwxr-xr-ximportpkg.py23
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,