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