diff options
Diffstat (limited to 'importpkg.py')
-rwxr-xr-x | importpkg.py | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/importpkg.py b/importpkg.py index aeccda5..f3868ff 100755 --- a/importpkg.py +++ b/importpkg.py @@ -58,14 +58,24 @@ def process_package(filelike, hash_functions): raise ValueError("unexpected control.tar.gz") state = "control" tf = tarfile.open(fileobj=af, mode="r|gz") + meta = None + use_dpkg_divert = False for elem in tf: + if elem.name == "./preinst": + if "dpkg-divert" in tf.extractfile(elem).read(): + use_dpkg_divert = True + continue if elem.name != "./control": continue if state != "control": raise ValueError("duplicate control file") state = "control_file" - yield process_control(tf.extractfile(elem).read()) - break + meta = process_control(tf.extractfile(elem).read()) + if meta is None: + raise ValueError("control file not found") + if use_dpkg_divert: + meta["conflicts"].add("_dpkg-divert") + yield meta continue elif name == "data.tar.gz": tf = tarfile.open(fileobj=af, mode="r|gz") |