Robert Edmonds created AVRO-2064:
------------------------------------
Summary: C: Problems with the pkg-config .pc file
Key: AVRO-2064
URL: https://issues.apache.org/jira/browse/AVRO-2064
Project: Avro
Issue Type: Bug
Components: c
Reporter: Robert Edmonds
Priority: Minor
Hi,
I built the avro-c library with all of the optional codecs enabled. The
avro-c.pc file produced by the build had the following Requires line:
{code}
Requires: zlib liblzma libsnappy
{code}
Since these are all library dependencies, I think they should be listed using
Requires.private, not Requires. From the pkg-config(1) manpage:
{code}
Requires.private:
A list of packages required by this package. The difference from Requires is
that the packages listed under Requires.private are not taken into account
when a flag list is computed for dynamically linked executable (i.e., when
--static was not specified). In the situation where each .pc file
corresponds to a library, Requires.private shall be used exclusively to
specify the dependencies between the libraries.
{code}
Also, "libsnappy" is not the name of the pkg-config package shipped by the
snappy library; it uses "snappy" (without the "lib" prefix) for the name of the
.pc file. However, support for installing a .pc file was removed from the
snappy master branch, but there is a pending PR to restore support for it,
again under the "snappy.pc" name: https://github.com/google/snappy/pull/51.
The avro-c library has a dependency on the Jansson library, but this dependency
isn't recorded in the .pc file. (Jansson uses "jansson" for its pkg-config
package name, without the "lib" prefix).
Some Linux distros like Debian/Ubuntu don't ship a .pc file for snappy at all.
(I opened this bug on the Debian side:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=871437). Placing a
Requires(.private) on "snappy" in the avro-c.pc file on those systems will
result in a pkg-config error like:
{code}
Package snappy was not found in the pkg-config search path.
Perhaps you should add the directory containing `snappy.pc'
to the PKG_CONFIG_PATH environment variable
Package 'snappy', required by 'avro-c', not found
{code}
The only workaround I know of for this case where snappy is installed but the
snappy.pc file is missing is to omit "snappy" from Requires.private and place
"-lsnappy" in Libs.private.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)