Bug#903391: diffoscope fails on deb archives that contain non-compressed control.tar
Roderich Schupp
roderich.schupp at gmail.com
Mon Jul 9 12:24:03 BST 2018
Package: diffoscope
Version: 99
Severity: normal
How to reproduce: generate two debs with non-compressed control.tar members,
e.g. in the diffoscope source directory run:
top=$(pwd)
for i in 1 2 ; do
t=$(mktemp -d)
( cd $t
ar xv $top/tests/data/test$i.deb
gunzip control.tar.gz
ar rv $top/non-compressed-control$i.deb debian-binary control.tar
data.tar.gz
)
rm -rf $t
done
And then
$ diffoscope non-compressed-control*.deb
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/diffoscope/main.py", line 460, in main
sys.exit(run_diffoscope(parsed_args))
File "/usr/lib/python3/dist-packages/diffoscope/main.py", line 432, in
run_diffoscope
difference = compare_root_paths(path1, path2)
File "/usr/lib/python3/dist-
packages/diffoscope/comparators/utils/compare.py", line 68, in
compare_root_paths
difference = compare_files(file1, file2)
File "/usr/lib/python3/dist-
packages/diffoscope/comparators/utils/compare.py", line 118, in compare_files
return file1.compare(file2, source)
File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py",
line 366, in compare
difference = self._compare_using_details(other, source)
File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py",
line 321, in _compare_using_details
other.as_container, no_recurse=no_recurse))
File "/usr/lib/python3/dist-
packages/diffoscope/comparators/utils/container.py", line 177, in compare_pair
file1, file2, source=None, diff_content_only=no_recurse)
File "/usr/lib/python3/dist-
packages/diffoscope/comparators/utils/compare.py", line 118, in compare_files
return file1.compare(file2, source)
File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py",
line 366, in compare
difference = self._compare_using_details(other, source)
File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py",
line 321, in _compare_using_details
other.as_container, no_recurse=no_recurse))
File "/usr/lib/python3/dist-
packages/diffoscope/comparators/utils/container.py", line 177, in compare_pair
file1, file2, source=None, diff_content_only=no_recurse)
File "/usr/lib/python3/dist-
packages/diffoscope/comparators/utils/compare.py", line 118, in compare_files
return file1.compare(file2, source)
File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py",
line 366, in compare
difference = self._compare_using_details(other, source)
File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py",
line 321, in _compare_using_details
other.as_container, no_recurse=no_recurse))
File "/usr/lib/python3/dist-packages/diffoscope/comparators/deb.py", line
180, in comparisons
my_md5sums = self.source.container.source.container.source.md5sums
File "/usr/lib/python3/dist-packages/diffoscope/comparators/deb.py", line
114, in md5sums
self._md5sums = md5sums_file.parse()
AttributeError: 'TextFile' object has no attribute 'parse'
I think the problem is that comparators/deb.py assumes that a "md5sums" file is
always two levels "down" in its container (control.tar.gz -> control.tar ->
md5sums) which is false when control.tar isn't compressed.
Similar problems ensue when data.tar isn't compressed.
Probably connected to #879217.
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.4 (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~rc2-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-2
ii imagemagick-6.q16 [imagemagick] 8:6.9.10.2+dfsg-2
pn jsbeautifier <none>
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-2
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