You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@arrow.apache.org by "Michael Maguire (Jira)" <ji...@apache.org> on 2019/08/21 18:08:00 UTC
[jira] [Updated] (ARROW-6312) Declare required Libs.private in
arrow.pc package config
[ https://issues.apache.org/jira/browse/ARROW-6312?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Maguire updated ARROW-6312:
-----------------------------------
Description:
The current arrow.pc package config file produced is deficient and doesn't properly declare static libraries pre-requisities that must be linked in in order to *statically* link in libarrow.a
Currently it just has:
```
Libs: -L${libdir} -larrow
```
But in cases, e.g. where you enabled snappy, brotli or zlib support in arrow, our toolchains need to see an arrow.pc file something more like:
```
Libs: -L${libdir} -larrow
Libs.private: -lsnappy -lboost_system -lz -llz4 -lbrotlidec -lbrotlienc -lbrotlicommon -lzstd
```
If not, we get linkage errors. I'm told the convention is that if the .a has an UNDEF, the Requires.private plus the Libs.private should resolve all the undefs. See the Libs.private info in [https://linux.die.net/man/1/pkg-config]
Note, however, as Sutou Kouhei pointed out in [https://github.com/apache/arrow/pull/5123#issuecomment-522771452,] the additional Libs.private need to be dynamically generated based on whether functionality like snappy, brotli or zlib is enabled..
was:
The current arrow.pc package config file produced is deficient and doesn't properly declare static libraries pre-requisities that must be linked in in order to *statically* link in libarrow.a
Currently it just has:
```
Libs: -L${libdir} -larrow
```
But in cases, e.g. where you enabled snappy, brotli or zlib support in arrow, our toolchains need to see an arrow.pc file something more like:
```
Libs: -L${libdir} -larrow
Libs.private: -lsnappy -lboost_system -lz -llz4 -lbrotlidec -lbrotlienc -lbrotlicommon -lzstd
```
If not, we get linkage errors. I'm told the convention is that if the .a has an UNDEF, the Requires.private plus the Libs.private should resolve all the undefs. See [https://linux.die.net/man/1/pkg-config]
However, as Sutou Kouhei pointed out in [https://github.com/apache/arrow/pull/5123#issuecomment-522771452,] the additional Libs.private need to be dynamically generated based on whether functionality like snappy, brotli or zlib is enabled..
> Declare required Libs.private in arrow.pc package config
> --------------------------------------------------------
>
> Key: ARROW-6312
> URL: https://issues.apache.org/jira/browse/ARROW-6312
> Project: Apache Arrow
> Issue Type: Bug
> Components: C++
> Affects Versions: 0.14.1
> Reporter: Michael Maguire
> Priority: Major
> Fix For: 0.15.0
>
>
> The current arrow.pc package config file produced is deficient and doesn't properly declare static libraries pre-requisities that must be linked in in order to *statically* link in libarrow.a
> Currently it just has:
> ```
> Libs: -L${libdir} -larrow
> ```
> But in cases, e.g. where you enabled snappy, brotli or zlib support in arrow, our toolchains need to see an arrow.pc file something more like:
> ```
> Libs: -L${libdir} -larrow
> Libs.private: -lsnappy -lboost_system -lz -llz4 -lbrotlidec -lbrotlienc -lbrotlicommon -lzstd
> ```
> If not, we get linkage errors. I'm told the convention is that if the .a has an UNDEF, the Requires.private plus the Libs.private should resolve all the undefs. See the Libs.private info in [https://linux.die.net/man/1/pkg-config]
>
> Note, however, as Sutou Kouhei pointed out in [https://github.com/apache/arrow/pull/5123#issuecomment-522771452,] the additional Libs.private need to be dynamically generated based on whether functionality like snappy, brotli or zlib is enabled..
--
This message was sent by Atlassian Jira
(v8.3.2#803003)