You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@arrow.apache.org by "Antoine Pitrou (Jira)" <ji...@apache.org> on 2019/08/27 19:33:00 UTC

[jira] [Assigned] (ARROW-5960) [C++] Boost dependencies are specified in wrong order

     [ https://issues.apache.org/jira/browse/ARROW-5960?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Antoine Pitrou reassigned ARROW-5960:
-------------------------------------

    Assignee: Ingo Müller

> [C++] Boost dependencies are specified in wrong order
> -----------------------------------------------------
>
>                 Key: ARROW-5960
>                 URL: https://issues.apache.org/jira/browse/ARROW-5960
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: C++
>    Affects Versions: 0.14.0
>            Reporter: Ingo Müller
>            Assignee: Ingo Müller
>            Priority: Minor
>              Labels: pull-request-available
>             Fix For: 0.15.0
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
>  The boost dependencies in cpp/CMakeLists.txt are specified in the wrong order: the system library currently comes first, followed by the filesystem library. They should be specified in the opposite order, as filesystem depends on system.
> It seems to depend on the version of boost or how it is compiled whether this problem becomes apparent. I am currently setting up the project like this:
> {code:java}
> CXX=clang++-7.0 CC=clang-7.0 \
>     cmake \
>         -DCMAKE_CXX_STANDARD=17 \
>         -DCMAKE_INSTALL_PREFIX=/tmp/arrow4/dist \
>         -DCMAKE_INSTALL_LIBDIR=lib \
>         -DARROW_WITH_RAPIDJSON=ON \
>         -DARROW_PARQUET=ON \
>         -DARROW_PYTHON=ON \
>         -DARROW_FLIGHT=OFF \
>         -DARROW_GANDIVA=OFF \
>         -DARROW_BUILD_UTILITIES=OFF \
>         -DARROW_CUDA=OFF \
>         -DARROW_ORC=OFF \
>         -DARROW_JNI=OFF \
>         -DARROW_TENSORFLOW=OFF \
>         -DARROW_HDFS=OFF \
>         -DARROW_BUILD_TESTS=OFF \
>         -DARROW_RPATH_ORIGIN=ON \
>         ..{code}
> After compiling, I libarrow.so is missing symbols:
> {code:java}
> nm -C /dist/lib/libarrow.so | grep boost::system::system_c
>                  U boost::system::system_category(){code}
> It seems like this is related to whether or not boost has been compiled with {{BOOST_SYSTEM_NO_DEPRECATED}}. (according to [this post|https://stackoverflow.com/a/30877725/651937], anyway). I have to say that I don't understand why boost as BUNDLED should be compiled that way...
> If I apply the following patch, everything works as expected:
>  
> {code:java}
> diff -pur a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt
> --- a/cpp/CMakeLists.txt   2019-06-29 00:26:37.000000000 +0200
> +++ b/cpp/CMakeLists.txt    2019-07-16 16:36:03.980153919 +0200
> @@ -642,8 +642,8 @@ if(ARROW_STATIC_LINK_LIBS)
>    add_dependencies(arrow_dependencies ${ARROW_STATIC_LINK_LIBS})
>  endif()
> -set(ARROW_SHARED_PRIVATE_LINK_LIBS ${ARROW_STATIC_LINK_LIBS} ${BOOST_SYSTEM_LIBRARY}
> -                                   ${BOOST_FILESYSTEM_LIBRARY} ${BOOST_REGEX_LIBRARY})
> +set(ARROW_SHARED_PRIVATE_LINK_LIBS ${ARROW_STATIC_LINK_LIBS} ${BOOST_FILESYSTEM_LIBRARY}
> +                                   ${BOOST_SYSTEM_LIBRARY} ${BOOST_REGEX_LIBRARY})
>  list(APPEND ARROW_STATIC_LINK_LIBS ${BOOST_SYSTEM_LIBRARY} ${BOOST_FILESYSTEM_LIBRARY}
>              ${BOOST_REGEX_LIBRARY}){code}



--
This message was sent by Atlassian Jira
(v8.3.2#803003)