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