As Russ noted in his recent message, it may be safe to optimize apt-listchanges by having it ignore packages which don't install any actual files in /usr/share/doc and which create a /usr/share/doc symlink pointing at another package.

I am therefore am considering adding the following heuristic to the program: ignore a package in apt-listchanges if it meets the following conditions:

 * binary package name different from source name
 * deb contains no changelog or NEWS files in /usr/share/doc
 * creates a symlink in /usr/share/doc with the binary package name as
   its name, pointing at another directory in /usr/share/doc

It is possible that this heuristic will fail to ignore some packages which we could have safely ignored, but I think it'll catch most of them, and my primary goal is that whatever heuristic it uses should /not/ ignore a package that should have been checked for entries to show the user. I.e., it's more important for the program to show the user everything they should see than for it to do less work.

I'm interested in any feedback that anyone has about whether this is a safe heuristic to use.

I did a quick analysis of what's in /usr/share/doc on my machine, and based on that analysis the following packages that create only links in /usr/share/doc would be ignored under this heurstic: binutils-multiarch, binutils-x86-64-linux-gnu, bogofilter, bogofilter-bdb, console-setup-linux, cpp-12, cpp-13, cups-bsd, db5.3-util, debconf-i18n, debconf-utils, default-jdk-headless, default-jre, emacs-gtk, firebird3.0-common, firebird3.0-server-core, firebird3.0-utils, g++, g++-12, g++-12-multilib, g++-13, g++-13-multilib, g++-multilib, gcc, gcc-12-multilib, gcc-13-multilib, gcc-multilib, gfortran, gfortran-12, gfortran-13, grub-pc, grub-pc-bin, grub2-common, iamerican, ibritish, klibc-utils, lib32asan8, lib32atomic1, lib32gcc-12-dev, lib32gcc-13-dev, lib32gcc-s1, lib32gomp1, lib32itm1, lib32quadmath0, lib32stdc++-12-dev, lib32stdc++-13-dev, lib32stdc++6, lib32ubsan1, libasan8, libatomic1, libbinutils, libbz2-dev, libcc1-0, libctf0, libdatrie-dev, libfbclient2, libffi-dev, libgcc-12-dev, libgcc-13-dev, libgcc-s1, libgccjit0, libgfortran-12-dev, libgfortran-13-dev, libgfortran5, libgomp1, libgprofng0, libhwasan0, libib-util, libitm1, liblsan0, libltdl-dev, libncurses-dev, libncurses6, libncursesw6, libobjc-13-dev, libobjc4, libparted-fs-resize0, libprotobuf-dev, libpython3-all-dev, libpython3.11, libpython3.11-dev, libpython3.11-stdlib, libquadmath0, libreadline-dev, libstdc++-12-dev, libstdc++-13-dev, libstdc++6, libthai-dev, libtsan2, libubsan1, libvirt-clients, libvirt-l10n, libx32asan8, libx32atomic1, libx32gcc-12-dev, libx32gcc-13-dev, libx32gcc-s1, libx32gomp1, libx32itm1, libx32quadmath0, libx32stdc++-12-dev, libx32stdc++-13-dev, libx32stdc++6, libx32ubsan1, linux-headers-amd64, linux-image-amd64, manpages-dev, openjdk-17-jdk-headless, openjdk-17-jre, openssh-server, openssh-sftp-server, p11-kit-modules, p7zip-full, python3-all, python3-all-dev, python3-debconf, python3-dev, python3-venv, python3-yubikey-manager, python3.11-dev, python3.11-venv, qemu-system-x86, r-base-dev, r-recommended, task-desktop, task-english, task-gnome-desktop, task-kde-desktop, task-laptop, task-ssh-server, tasksel-data, tlp-rdw, tre-agrep

The following packages which create a symlink and nothing else in /usr/share/doc would /not/ be ignored:

 * Binary package name not different from source: console-setup,
   gcc-12, gcc-13, groff, kmod, node-source-map, node-sprintf-js,
   parted, v4l-utils
 * Link name different from package name: wpasupplicant

Thanks,

jik

Reply via email to