The problem of "Requires.private", for C/C++ libraries, it (might) 
contain two different things: Libraries used for static linking *and* 
Cflags to preprocess the header files.

If the position of Debian is that each reference in "Requires.private" 
translates into a required dependency in Debian/control for the -dev 
package, then we get dependencies for static linking as well. That is OK 
but a new policy, at least for me after going through the mailing list 
of the last two decades. Furthermore, then I do not understand why:
a) pkg-config itself is *not* a dependency as well
b) Lintian was not upgraded in 15 years to check the content of the .pc 
   file and aid the maintainer in not missing any required dependency.

Simon McVittie wrote: 
> converting Requires.private into Libs.private would require copying 
> all the recursive dependencies of the required library

I know. You have to use something like
$ pkg-config --libs --static libcurrent
to convert "Requires.private" to "Libs.private". Furthermore, the 
maintainer must double-check the header files and their includes to keep 
such packages/libraries/headers in "Requires.private" = their Cflags.

Simon McVittie wrote:
> this doesn't scale well

Then, I do not understand static linking. I thought, please correct me 
here, static linking is about the '.a' file in the package, the current 
one. I have to suffice its links as it was built, not the links when I 
build. With that understanding, "Libs.private" is even more accurate in 
Debian because it does not diverge and break over time.

Russ Allbery wrote:
> The dependencies for -dev packages should reflect the requirements for 
> dynamic linking.

That was my understanding, exactly.


Reply via email to