Bug#903565: diffoscope fails when comparing deb's containing differently compressed data.tar members
Roderich Schupp
roderich.schupp at gmail.com
Wed Jul 11 13:10:21 BST 2018
Package: diffoscope
Version: 99
Severity: normal
How to reproduce:
I used the versions of libjson-glib-1.0-0 in buster and sid
(tests/data/test*.deb don't exhibit the problem). Note that
$ diffoscope libjson-glib-1.0-0_1.2.6-1_amd64.deb libjson-
glib-1.0-0_1.4.2-4_amd64.deb
works and the output looks very reasonable (compares the contained shared libs,
even though they have different version!). Both deb's contain data.tar files
compressed with xz. Now recompress data.tar in the first deb with gzip
resulting in libjson-glib-1.0-0_1.2.6-1+gzipped-data-tar_amd64.deb.
$ diffoscope libjson-glib-1.0-0_1.2.6-1+gzipped-data-tar_amd64.deb libjson-
glib-1.0-0_1.2.6-1_amd64.deb
works and shows
--- libjson-glib-1.0-0_1.2.6-1+gzipped-data-tar_amd64.deb
+++ libjson-glib-1.0-0_1.2.6-1_amd64.deb
├── file list
│ @@ -1,3 +1,3 @@
│ -?rw-r--r-- 0 0 0 4 1970-01-01 00:00:00.000000 debian-
binary
│ -?rw-r--r-- 0 0 0 2074 1970-01-01 00:00:00.000000
control.tar.gz
│ -?rw-r--r-- 0 0 0 187626 1970-01-01 00:00:00.000000
data.tar.gz
│ +-rw-r--r-- 0 0 0 4 2017-03-16 19:01:26.000000 debian-
binary
│ +-rw-r--r-- 0 0 0 2074 2017-03-16 19:01:26.000000
control.tar.gz
│ +-rw-r--r-- 0 0 0 175512 2017-03-16 19:01:26.000000
data.tar.xz
│ --- data.tar.gz
├── +++ data.tar.xz
│┄ Files similar despite different names (difference score: 0)
│ ├── filetype from file(1)
│ │ @@ -1 +1 @@
│ │ -gzip compressed data, was "data.tar", last modified: Wed Jul 11 08:52:12
2018, from Unix, original size 296960
│ │ +XZ compressed data
│ ├── filetype from diffoscope
│ │ @@ -1 +1 @@
│ │ -GzipFile
│ │ +XzFile
But this doesn't work:
$ diffoscope libjson-glib-1.0-0_1.2.6-1+gzipped-data-tar_amd64.deb libjson-
glib-1.0-0_1.4.2-4_amd64.deb
Traceback (most recent call last):
File "/build/work/diffoscope/diffoscope.git/diffoscope/main.py", line 460, in
main
sys.exit(run_diffoscope(parsed_args))
File "/build/work/diffoscope/diffoscope.git/diffoscope/main.py", line 432, in
run_diffoscope
difference = compare_root_paths(path1, path2)
File
"/build/work/diffoscope/diffoscope.git/diffoscope/comparators/utils/compare.py",
line 68, in compare_root_paths
difference = compare_files(file1, file2)
File
"/build/work/diffoscope/diffoscope.git/diffoscope/comparators/utils/compare.py",
line 118, in compare_files
return file1.compare(file2, source)
File
"/build/work/diffoscope/diffoscope.git/diffoscope/comparators/utils/file.py",
line 366, in compare
difference = self._compare_using_details(other, source)
File
"/build/work/diffoscope/diffoscope.git/diffoscope/comparators/utils/file.py",
line 321, in _compare_using_details
other.as_container, no_recurse=no_recurse))
File
"/build/work/diffoscope/diffoscope.git/diffoscope/comparators/utils/container.py",
line 158, in comparisons
for my_name, other_name, score in self.perform_fuzzy_matching(my_members,
other_members):
File "/build/work/diffoscope/diffoscope.git/diffoscope/comparators/deb.py",
line 94, in perform_fuzzy_matching
for name1 in my_members.keys():
RuntimeError: OrderedDict mutated during iteration
This is with diffoscope from git head.
Cheers, Roderich
-- System Information:
Debian Release: buster/sid
APT prefers unstable-debug
APT policy: (500, 'unstable-debug'), (500, 'unstable'), (1, 'experimental-debug'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 4.17.5 (SMP w/4 CPU cores)
Locale: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8), LANGUAGE=en_US.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
Versions of packages diffoscope depends on:
ii libpython3.6-stdlib 3.6.6-1
ii python3 3.6.6-1
ii python3-distro 1.0.1-2
ii python3-distutils 3.6.6-1
ii python3-libarchive-c 2.1-3.1
ii python3-magic 2:0.4.15-1
ii python3-pkg-resources 39.2.0-1
Versions of packages diffoscope recommends:
pn abootimg <none>
ii acl 2.2.52-3+b1
pn apktool <none>
pn binutils-multiarch <none>
ii bzip2 1.0.6-8.1
ii caca-utils 0.99.beta19-2+b3
ii colord 1.3.3-2
ii db-util 5.3.1
ii default-jdk [java-sdk] 2:1.10-67
ii default-jdk-headless 2:1.10-67
ii device-tree-compiler 1.4.6-1
pn docx2txt <none>
ii e2fsprogs 1.44.3-1
pn enjarify <none>
pn fontforge-extras <none>
pn fp-utils <none>
ii genisoimage 9:1.1.11-3+b2
ii gettext 0.19.8.1-6+b1
ii ghc 8.2.2-4
ii ghostscript 9.22~dfsg-2.1
ii giflib-tools 5.1.4-3
pn gnumeric <none>
ii gnupg 2.2.8-3
ii imagemagick 8:6.9.10.2+dfsg-3
ii imagemagick-6.q16 [imagemagick] 8:6.9.10.2+dfsg-3
ii jsbeautifier 1.6.4-7
ii libarchive-tools 3.2.2-4
pn llvm <none>
ii lz4 1.8.2-1
ii mono-utils 4.6.2.7+dfsg-2
pn odt2txt <none>
pn oggvideotools <none>
ii openjdk-10-jdk [java-sdk] 10.0.1+10-4
ii openjdk-11-jdk [java-sdk] 11~21-2
ii openssh-client 1:7.7p1-3
pn pgpdump <none>
ii poppler-utils 0.63.0-2
pn procyon-decompiler <none>
ii python3-argcomplete 1.8.1-1
pn python3-binwalk <none>
ii python3-debian 0.1.32
ii python3-defusedxml 0.5.0-1
pn python3-guestfs <none>
pn python3-jsondiff <none>
pn python3-progressbar <none>
pn python3-pyxattr <none>
ii python3-tlsh 3.4.4+20151206-1+b4
pn r-base-core <none>
ii rpm2cpio 4.14.1+dfsg1-3
pn sng <none>
ii sqlite3 3.24.0-1
ii squashfs-tools 1:4.3-6
ii tcpdump 4.9.2-3
ii unzip 6.0-21
ii vim-common 2:8.1.0089-1
ii xmlbeans 2.6.0+dfsg-3
ii xxd 2:8.1.0089-1
ii xz-utils 5.2.2-1.3
Versions of packages diffoscope suggests:
ii libjs-jquery 3.2.1-1
-- no debconf information
More information about the Reproducible-builds
mailing list