#1114739 diffoscope-minimal: make it actually minimal?

#1114739#5
Date:
2025-09-08 23:55:49 UTC
From:
To:
package: diffoscope-minimal
version: 297
severity: wishlist

diffoscope-minimal seems rather badly named as it recommends a huge
number of packages, very few of which seem to meet the definition of
recommends for a "minimal" package -- i think most people would just a
slight improvement on debdiff

i know i can remove recommends, but it's a chore as you  but can't
just blindly remove everything given that other packages may also
depend on them (eg gpg, e2fsprogs). and it's not clear what impact
removing anything has -- eg i can guess that  r-base-core and ffmpeg
can go, but is python3-argcomplete actually recommended for all users?

and you have to repeat this on every stable upgrade by which time i've
forgotten that something else depends on genisoimage and that aapt has
nothing at all to do with apt

thanks for considering, and for maintaining diffoscope

#1114739#10
Date:
2025-09-09 21:00:24 UTC
From:
To:
Richard Lewis wrote:

Agreed. However, I think the intention was that diffoscope-minimal would
be *installed* with --no-install-recommends in the first place.

Is that your recollection as well, Mattia?


Regards,

#1114739#13
Date:
2025-09-09 21:35:05 UTC
From:
To:
the binary package "diffoscope" itself also just "recommends" everything
else, so one could just use --no-install-recommends on that to achieve
said result, without using the -minimal variant.


IIRC the -minimal variant uses a curated, restricted list of packages in
the Recommends fields, described as:
    This -minimal package only recommends a partial set of the supported 3rd party
    tools needed to produce file-format-specific comparisons, excluding those that
    are considered too large or niche for general use.


Currently that expands to

Recommends: 7zip, aapt, abootimg, acl, apksigcopier, binutils-multiarch, bzip2, caca-utils, colord, coreboot-utils, db-util, device-tree-compiler, dexdump, docx2txt, e2fsprogs, enjarify, ffmpeg, fontforge-extras, fonttools, genisoimage, gettext, ghostscript, giflib-tools, gnupg-utils, gpg, hdf5-tools, html2text, imagemagick, jsbeautifier, libarchive-tools, libxmlb-utils, lz4, lzip, odt2txt, oggvideotools, openssh-client, openssl, perl, pgpdump, poppler-utils, procyon-decompiler, python3-pdfminer, r-base-core, rpm2cpio, sng, sqlite3, squashfs-tools, systemd-ukify, tcpdump, u-boot-tools, unzip, wabt, xxd, xz-utils, zip, zstd, androguard, python3-argcomplete, python3-debian, python3-defusedxml, python3-jsondiff, python3-progressbar, python3-pypdf, python3-pyxattr, python3-rpm, python3-tlsh (>= 3.4.1)

Where there aren't many I'd futher exclude, perhaps I'd consider
excluding the android-related packages, at most (this might already be
an oversight: apktool is excluded already, but not aapt, abootimg, etc)?

Technically, that list of made by excluding the tools listed here from
the complete list:

# Set of tools considered "large" in their installation size or too niche in
# their target users. This is so they can easily be excluded from installation
# if not required in most cases. Note that these are the names of the tools
# (ie. the keys in the EXTERNAL_TOOLS dict), not the package names.
HUGE_TOOLS = {
    "ghc",
    "ocamlobjinfo",
    "llvm-bcanalyzer",
    "llvm-config",
    "llvm-dis",
    "llvm-readobj",
    "llvm-objdump",
    "ppudump",
    "javap",
    "ssconvert",
    "apktool",
    "apksigner",
    "pedump",
    "radare2",
    "dumpxsb",
}



Richard, do you see anything in the above Recommends list that you
believe should not be recommended?

#1114739#18
Date:
2025-09-17 21:54:32 UTC
From:
To:
...
...

The fact that both packages mostly only really differ in the number of
recommends seems a bit silly to me honestly!

Admittedly, diffoscope has such a broad spectrum of file type support
that a package that hard-depended on even a subset of them might be a
difficult judgement call...

What is the actual use-case for diffoscope-minimal vs. diffoscope?

At least from my perspective, I would prefer a split:

  diffoscope -> recommend all the things
  diffoscope-minimal -> suggest all the things

Then "diffoscope-minimal" is truely opt-in and you explicitly pull in
the features you are actually interested in, and "diffoscope" pulls in
all (or nearly all) the recommended features, and you selectivly opt-out
of the features you do not want...


live well,
  vagrant

#1114739#23
Date:
2025-09-18 06:18:17 UTC
From:
To:
sounds more sound to me too. Thanks!
#1114739#28
Date:
2025-09-18 12:19:26 UTC
From:
To:

this is my preference too (and what i was hoping for in reporting this bug)

#1114739#33
Date:
2025-09-18 16:17:32 UTC
From:
To:
Richard Lewis wrote:

The above would work for me, but I'm a bit of a special case — as a
developer, I'm always running diffoscope out of Git. :)

Mattia, what do you think?


Best wishes,