On 2018-05-04 15:48 +0200, Alexander Traud wrote: > To compile a (quite large) project, I had to install several packages > (dependencies). The project required the tool pkg-config. However, that > was not mentioned anywhere. Still the project compiled/built, because > one of the other dependencies (libsrtp2-dev) installed pkg-config as > side effect. So, I had pure luck that it succeeded. > > When a package declares another package as "Depends" or "Recommends" in > the file "control.in", it gets installed as side effect (Debian Policy).
In debian/control, not control.in. And Recommends may or not be installed, depending on the admin's decision. > However, libsrtp2-dev needs pkg-config only when I compile it myself. I'm not sure I can parse that. The libsrtp2-dev package surely both depends and build-depends on pkg-config. > Consequently, pkg-config should be declared just as Build-Depends. This > is a minor bug, I am going to report with that package. However then, I > investigated a bit more and found seven (optional) dependencies of that > project which would have installed pkg-config as a side effect too. OK, > this is a bigger issue. Then I investigated further: > > $ apt-cache rdepends --no-suggests pkg-config > > On Ubuntu 18.04 LTS, this gives me 250 development packages (-dev) > which install pkg-config as a side effect. > > $ apt-cache rdepends --no-recommends --no-suggests pkg-config > > Still 186 packages. > > Those packages come with a .pc file. However, the tool pkg-config should > be "suggested" and not "required". This very much depends on the package. If you cannot just link against libfoo with -lfoo but need special linker flags, then IMHO libfoo-dev is well advised to add pkg-config to Depends, for instance. ,---- | $ pkg-config --libs gtk+-3.0 | -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -lfribidi -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 `---- You cannot really expect anyone to get this right without pkg-config, and so libgtk-3-dev depends on pkg-config. Cheers, Sven