On Thu, 28 Jun 2018 at 12:11:29 +0100, Simon McVittie wrote: > Bugs like https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=901771 > indicate that d-devlibdeps is based on the assumption that the -dev > package for libfoo.so.2 will be libfoo2-dev. However, that naming > convention is discredited, and was specifically removed from Policy > 4.0.0 ... > Since d-devlibdeps is based on an assumption that does not hold, it > will need to grow an increasingly long list of exceptions to the naming > convention that it assumes.
A few years later, d-devlibdeps has a list of 182 overrides. I was curious how big a problem this was, so I picked 20 random lib*-dev libraries from those visible to my laptop (which has unstable, testing, stable and oldstable apt sources, so some of these could be obsolete packages), excluding Rust because those are not shared libraries: $ grep-aptavail -e '^lib.*-dev$' -FPackage -sPackage -n | grep -v 'librust-' | sort -u | shuf | head -n20 libboost-timer1.74-dev libwxsqlite3-3.2-dev libkf5gravatar-dev liblitehtml-dev libs3d-dev libgnatprj10-dev libitpp-dev libxcb-dri2-0-dev libcanberra-gtk3-dev libweston-5-dev libxmlrpc-core-c3-dev libid3-3.8.3-dev libxmlada-schema12-dev libpolylib64-dev libukui-powerclient-dev libunwind-dev libfriso-dev libghc-heterocephalus-dev libkmod-dev libvc-dev Of these 20 libraries, only libgnatprj10-dev, libxcb-dri2-0-dev and *maybe* libxmlada-schema12-dev match d-devlibdeps' assumption (I couldn't find a libxmlada-schema12 shared library so I'll give it the benefit of the doubt). Needing an override for around 85% of libraries doesn't seem like a favourable hit rate. https://packages.debian.org/testing/libdevel/ says there are 5979 packages in the libdevel section, so if my sample is representative, I would expect d-devlibdeps to need a list of about 5000 overrides to produce correct results for all libraries. Even if we assume half of those are rarely-used or false positives (for example static-only libraries), that's still 1 order of magnitude more than it actually has. As I had expected, most of the other -dev libraries in my sample seem to be following the convention in Policy ยง8.4, so that linking with something like -lvc or -lpolylib64 (resulting in a DT_NEEDED dependency on libvc.so.0 or libpolylib64.so.8, represented in dpkg as Depends: libvc0 or libpolylib64-8) is done via a -dev package named libvc-dev or libpolylib64-dev, as opposed to the libvc0-dev and libpolylib64-8-dev that d-devlibdeps assumes is normal. smcv