Pau Espin Pedrol <pes...@sysmocom.de> writes:

> osmo-trx fails to build since a few days/weeks ago in Debian testing and
> unstable, while it still builds fine in Debian stable. Reported osmo-trx
> in Debian can be found in [1] and upstream in [2]. Example of build
> failure can be found in Osmocom's OBS repositories for Debian (different
> versions available) [3].

...

> Main difference seems to be UHD in testing and stable has this extra patch:
> https://sources.debian.org/patches/uhd/3.14.1.0-2/fix-pkg-config/
>
> I'm not sure why this patch was applied (I don't see a similar patch 
> applied in UHD master in upstream). Could it be that libboost-system 
> doesn't exist on some system architectures but it was unconditionally 
> dropped with that patch?

The reason for the patch was that upstream usage violated this rule:
https://lintian.debian.org/tags/pkg-config-references-unknown-shared-library.html

Since osmo-trx is using boost itself, it ought to handle its own linking.

If -lboost_system is in the Libs.private: field of uhd.pc, does osmo-trx build?

UHD has a C API. Having pkg-config output -lboost_system seems wrong in
that context.

Is this bug better fixed by having osmo-trx handle boost linking?

This case is made complicated since UHD exposes boost headers in its
headers. And Boost does not provide .pc files.

A simple main() that calls uhd::get_version_string() and
uhd::get_abi_string() links fine using -luhd alone.

Re-reading the pkg-config man page, I think the fix-pkg-config patch on
uhd is on the right track. There is a case to be made for for adding
"Libs.private: -lboost_system" to uhd.pc, but I do not think that solves
the osmo-trx build error (unless building a static binary).

-Maitland

Reply via email to