rpm-software-management / librepo

A library providing C and Python (libcURL like) API for downloading packages and linux repository metadata in rpm-md format
http://rpm-software-management.github.io/librepo/
GNU Lesser General Public License v2.1
74 stars 90 forks source link

Add a private dependency on zck to librepo.pc if zchunk support is enabled #307

Closed ppisar closed 3 months ago

ppisar commented 3 months ago

Add a private dependency on zck to librepo.pc if zchunk support is enabled

If librepo is built with zchunk support, zchunk's zck.h header file is included from librepo public header files, thus applications building against librepo needs zchunk header files available at build time. Those who only use pkg-config for tracking dependencies, reported build failures:

    /usr/include/librepo/downloadtarget.h:27:10: fatal error: zck.h: No such file or directory

This patch adds the dependency on zck to librepo.pc.

It enhances Requires.private instead of Requires to prevent from contaminating "pkgconf --libs librepo" with -lzck. Contrary, "pkgconf --cflags librepo" correctly appends include path to zck header files. The dependency on zck.pc is only checked and enforced with "pkgconf --cflags librepo" invocation. This behaviour is a feature. See https://github.com/pkgconf/pkgconf/issues/352 and https://github.com/pkgconf/pkgconf/issues/300.

Fixes: #305

kloczek commented 3 months ago

LGTM 👍

ppisar commented 3 months ago

I found a proper fix. pkgconf supports this kind of header-only dependency by adding it to Requires.private.

kloczek commented 3 months ago

That PR of course is wrong because 'zck` dependency is not used only on static linking. (Look on explanation #305)

ppisar commented 3 months ago

That PR is good because "pkfconf --cflags" reports an error if zck is not installed.