GNOME Bugzilla – Bug 756654
private ABI is exposed via public headers
Last modified: 2015-10-26 22:24:33 UTC
In 901b4fb82e007e9d93deb3f1e13cc36d5b2bf37b parts of libyelp were moved into a pkg-private libyelpcommon library. This includes yelp-uri.c, yelp-uri-builder.h and yelp-settings.h. This means, those symbols are no longer part of the public ABI. Yet the header files yelp-uri.h, yelp-uri-builder.h and yelp-settings.h are still installed as public API in /usr/include/yelp If those symbols are not meant to be part of the public API, the header files should not be installed. If those symbols are supposed to be part of the public API, the libyelpcommon library should move to $libdir and have a proper pkg-config file.
(In reply to Michael Biebl from comment #0) > In 901b4fb82e007e9d93deb3f1e13cc36d5b2bf37b parts of libyelp were moved into > a pkg-private libyelpcommon library. This includes yelp-uri.c, > yelp-uri-builder.h and yelp-settings.h. > This means, those symbols are no longer part of the public ABI. This seems to only be the case if providing some extra options to the linker, and not the general case. Nevertheless, this should be fixed on master with commit e6444f9cf1f1d204f302d8e461b56ded477a0259.
Hm, so the fix for this is to declare private API/ABI public again. I'd call that a very creative fix for the issue at hand. So we are going back and forth on this. I begin to wonder if libyelp should really be public. It's ABI seems to break on each new majore GNOME release and there are no 3rd party consumers of that API. Maybe it would be easier to just turn libyelp into a noinst_LTLIBRARIES and link it statically inside yelp.