Bug#866241: diffoscope: add a --exclude-toplevel-metadata option to help reprotest be less scary

Ximin Luo infinity0 at debian.org
Wed Jun 28 16:56:48 UTC 2017


Package: diffoscope
Version: 83
Severity: wishlist

Dear Maintainer,

Several times people on IRC have asked about reprotest reporting file permissions
differences when building files. This can be reproduced trivially:

$ reprotest 'touch x' x
[..]
│ │ │ -Access: (0644/-rw-r--r--)  Uid: ( 1000/infinity0)   Gid: ( 1000/infinity0)
│ │ │ +Access: (0664/-rw-rw-r--)  Uid: ( 1000/infinity0)   Gid: ( 1000/infinity0)
[..]
│ │ │ -group::r--
│ │ │ +group::rw-
[..]
exit code 1

This is because diffoscope compares the metadata of its command-line arguments
by default (which is actually a property of the parent directory and not the
file itself). For reproducibility purposes, this is not usually an issue because
one typically does not distribute x plus its current directory metadata, but
only the contents of x.

This can confuse newbies who might not be confident about what reproducibility
means, and assume that "the tool is right".

In order to avoid a diff like this, one has to do something like

$ reprotest 'umask 022; touch x' x
[..]
=======================
Reproduction successful
=======================
No differences in x
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  x

which is needlessly pointless.

However, sometimes people using diffoscope might indeed want to compare the
metadata of its arguments, e.g. after doing "make install" or similar.

Therefore, we could add a --exclude-toplevel-metadata flag to diffoscope,
which reprotest users could use via --diffoscope-arg, and this could also
be set by default in any relevant "presets".

This would cover both use cases.

X


-- System Information:
Debian Release: 9.0
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable-debug'), (500, 'testing-debug'), (300, 'unstable'), (200, 'experimental'), (1, 'experimental-debug')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.9.0-2-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_GB.utf8, LC_CTYPE=en_GB.utf8 (charmap=UTF-8), LANGUAGE=en_GB:en (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages diffoscope depends on:
ii  python3                3.5.3-1
ii  python3-libarchive-c   2.1-3.1
ii  python3-magic          1:5.30-1
ii  python3-pkg-resources  33.1.1-1

Versions of packages diffoscope recommends:
ii  acl                              2.2.52-3+b1
ii  apktool                          2.2.1+dfsg-2
ii  binutils-multiarch               2.28-5
ii  bzip2                            1.0.6-8.1
ii  caca-utils                       0.99.beta19-2+b2
ii  colord                           1.3.3-2
ii  default-jdk [java-sdk]           2:1.8-58
ii  default-jdk-headless             2:1.8-58
ii  enjarify                         1:1.0.3-3
ii  fontforge-extras                 0.3-4
ii  fp-utils                         3.0.0+dfsg-11
ii  fp-utils-3.0.0 [fp-utils]        3.0.0+dfsg-11
ii  genisoimage                      9:1.1.11-3+b2
ii  gettext                          0.19.8.1-2
ii  ghc                              8.0.1-17+b1
ii  ghostscript                      9.20~dfsg-3.2
ii  gnupg                            2.1.18-6
ii  imagemagick                      8:6.9.7.4+dfsg-11
ii  imagemagick-6.q16 [imagemagick]  8:6.9.7.4+dfsg-11
ii  jsbeautifier                     1.6.4-6
ii  llvm                             1:3.8-36
ii  mono-utils                       4.6.2.7+dfsg-1
ii  openjdk-8-jdk [java-sdk]         8u131-b11-2
ii  openssh-client                   1:7.4p1-10
ii  pdftk                            2.02-4+b2
ii  poppler-utils                    0.48.0-2
ii  python3-argcomplete              1.8.1-1
ii  python3-debian                   0.1.30
ii  python3-guestfs                  1:1.34.6-2
ii  python3-progressbar              2.3-4
ii  python3-rpm                      4.12.0.2+dfsg1-2
ii  python3-tlsh                     3.4.4+20151206-1+b2
ii  rpm2cpio                         4.12.0.2+dfsg1-2
ii  sng                              1.1.0-1+b1
ii  sqlite3                          3.16.2-5
ii  squashfs-tools                   1:4.3-3+b1
ii  unzip                            6.0-21
ii  vim-common                       2:8.0.0197-4
ii  xxd                              2:8.0.0197-4
ii  xz-utils                         5.2.2-1.2+b1

Versions of packages diffoscope suggests:
ii  libjs-jquery  3.1.1-2

-- no debconf information


More information about the Reproducible-builds mailing list