[
https://issues.apache.org/jira/browse/ARROW-6421?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17027210#comment-17027210
]
Kouhei Sutou commented on ARROW-6421:
-------------------------------------
I couldn't reproduce this.
I moved {{/usr/include/boost}} to {{/tmp/boost.install/include/boost}} and
{{/usr/lib/x86_64-linux-gnu/libboost*}} to {{/tmp/boost.install/lib/}} on
Debian GNU/Linux sid.
I build Apache Arrow with {{-DCMAKE_PREFIX_PATH=/tmp/boost.install}}:
{noformat}
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1446 ] _boost_TEST_VERSIONS
=
"1.73.0;1.73;1.72.0;1.72;1.71.0;1.71;1.70.0;1.70;1.69.0;1.69;1.68.0;1.68;1.67.0;1.67;1.66.0;1.66;1.65.0;1.65;1.64.0;1.64;1.71.0;1.71;1.70.0;1.70;1.69.0;1.69;1.68.0;1.68;1.67.0;1.67;1.66.0;1.66;1.65.1;1.65.0;1.65;1.64.0;1.64"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1447 ]
Boost_USE_MULTITHREADED = "ON"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1448 ] Boost_USE_STATIC_LIBS
= "OFF"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1449 ]
Boost_USE_STATIC_RUNTIME = <unset>
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1450 ]
Boost_ADDITIONAL_VERSIONS =
"1.73.0;1.73;1.72.0;1.72;1.71.0;1.71;1.70.0;1.70;1.69.0;1.69;1.68.0;1.68;1.67.0;1.67;1.66.0;1.66;1.65.0;1.65;1.64.0;1.64;1.63.0;1.63;1.62.0;1.61;1.61.0;1.62;1.60.0;1.60"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1451 ] Boost_NO_SYSTEM_PATHS
= <unset>
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1520 ] BOOST_ROOT = <unset>
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1521 ] ENV{BOOST_ROOT} =
<unset>
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1522 ] BOOST_INCLUDEDIR =
<unset>
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1523 ] ENV{BOOST_INCLUDEDIR}
= <unset>
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1524 ] BOOST_LIBRARYDIR =
<unset>
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1525 ] ENV{BOOST_LIBRARYDIR}
= <unset>
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1597 ]
_boost_INCLUDE_SEARCH_DIRS = "PATHS;C:/boost/include;C:/boost;/sw/local/include"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1598 ] _boost_PATH_SUFFIXES
=
"boost-1_73_0;boost_1_73_0;boost/boost-1_73_0;boost/boost_1_73_0;boost-1_73;boost_1_73;boost/boost-1_73;boost/boost_1_73;boost-1_72_0;boost_1_72_0;boost/boost-1_72_0;boost/boost_1_72_0;boost-1_72;boost_1_72;boost/boost-1_72;boost/boost_1_72;boost-1_71_0;boost_1_71_0;boost/boost-1_71_0;boost/boost_1_71_0;boost-1_71;boost_1_71;boost/boost-1_71;boost/boost_1_71;boost-1_70_0;boost_1_70_0;boost/boost-1_70_0;boost/boost_1_70_0;boost-1_70;boost_1_70;boost/boost-1_70;boost/boost_1_70;boost-1_69_0;boost_1_69_0;boost/boost-1_69_0;boost/boost_1_69_0;boost-1_69;boost_1_69;boost/boost-1_69;boost/boost_1_69;boost-1_68_0;boost_1_68_0;boost/boost-1_68_0;boost/boost_1_68_0;boost-1_68;boost_1_68;boost/boost-1_68;boost/boost_1_68;boost-1_67_0;boost_1_67_0;boost/boost-1_67_0;boost/boost_1_67_0;boost-1_67;boost_1_67;boost/boost-1_67;boost/boost_1_67;boost-1_66_0;boost_1_66_0;boost/boost-1_66_0;boost/boost_1_66_0;boost-1_66;boost_1_66;boost/boost-1_66;boost/boost_1_66;boost-1_65_0;boost_1_65_0;boost/boost-1_65_0;boost/boost_1_65_0;boost-1_65;boost_1_65;boost/boost-1_65;boost/boost_1_65;boost-1_64_0;boost_1_64_0;boost/boost-1_64_0;boost/boost_1_64_0;boost-1_64;boost_1_64;boost/boost-1_64;boost/boost_1_64;boost-1_71_0;boost_1_71_0;boost/boost-1_71_0;boost/boost_1_71_0;boost-1_71;boost_1_71;boost/boost-1_71;boost/boost_1_71;boost-1_70_0;boost_1_70_0;boost/boost-1_70_0;boost/boost_1_70_0;boost-1_70;boost_1_70;boost/boost-1_70;boost/boost_1_70;boost-1_69_0;boost_1_69_0;boost/boost-1_69_0;boost/boost_1_69_0;boost-1_69;boost_1_69;boost/boost-1_69;boost/boost_1_69;boost-1_68_0;boost_1_68_0;boost/boost-1_68_0;boost/boost_1_68_0;boost-1_68;boost_1_68;boost/boost-1_68;boost/boost_1_68;boost-1_67_0;boost_1_67_0;boost/boost-1_67_0;boost/boost_1_67_0;boost-1_67;boost_1_67;boost/boost-1_67;boost/boost_1_67;boost-1_66_0;boost_1_66_0;boost/boost-1_66_0;boost/boost_1_66_0;boost-1_66;boost_1_66;boost/boost-1_66;boost/boost_1_66;boost-1_65_1;boost_1_65_1;boost/boost-1_65_1;boost/boost_1_65_1;boost-1_65_0;boost_1_65_0;boost/boost-1_65_0;boost/boost_1_65_0;boost-1_65;boost_1_65;boost/boost-1_65;boost/boost_1_65;boost-1_64_0;boost_1_64_0;boost/boost-1_64_0;boost/boost_1_64_0;boost-1_64;boost_1_64;boost/boost-1_64;boost/boost_1_64"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1613 ] location of
version.hpp: /tmp/boost.install/include/boost/version.hpp
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1653 ] Boost_VERSION =
"106700"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1654 ] Boost_VERSION_STRING
= "1.67.0"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1655 ] Boost_VERSION_MACRO =
"106700"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1656 ] Boost_VERSION_MAJOR =
"1"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1657 ] Boost_VERSION_MINOR =
"67"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1658 ] Boost_VERSION_PATCH =
"0"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1659 ] Boost_VERSION_COUNT =
"3"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1676 ] Boost_LIB_PREFIX = ""
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1677 ] Boost_NAMESPACE =
"boost"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:787 ] _boost_COMPILER =
"-gcc92" (guessed)
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1713 ] _boost_MULTITHREADED
= "-mt"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1790 ]
_boost_ARCHITECTURE_TAG = "" (detected)
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1794 ]
_boost_RELEASE_ABI_TAG = "-"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1795 ] _boost_DEBUG_ABI_TAG
= "-d"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1855 ]
_boost_LIBRARY_SEARCH_DIRS_RELEASE =
"/tmp/boost.install/include/lib;/tmp/boost.install/include/../lib;/tmp/boost.install/include/stage/lib;PATHS;C:/boost/lib;C:/boost;/sw/local/lib"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:1856 ]
_boost_LIBRARY_SEARCH_DIRS_DEBUG =
"/tmp/boost.install/include/lib;/tmp/boost.install/include/../lib;/tmp/boost.install/include/stage/lib;PATHS;C:/boost/lib;C:/boost;/sw/local/lib"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:2040 ] Searching for
REGEX_LIBRARY_RELEASE:
boost_regex-gcc92-mt-1_67;boost_regex-gcc92-mt;boost_regex-gcc92-mt;boost_regex-mt-1_67;boost_regex-mt;boost_regex-mt;boost_regex-mt;boost_regex
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:646 ]
Boost_LIBRARY_DIR_RELEASE = "/tmp/boost.install/lib"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:648 ]
_boost_LIBRARY_SEARCH_DIRS_RELEASE =
"/tmp/boost.install/lib;NO_DEFAULT_PATH;NO_CMAKE_FIND_ROOT_PATH"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:2095 ] Searching for
REGEX_LIBRARY_DEBUG:
boost_regex-gcc92-mt-d-1_67;boost_regex-gcc92-mt-d;boost_regex-gcc92-mt-d;boost_regex-mt-d-1_67;boost_regex-mt-d;boost_regex-mt-d;boost_regex-mt;boost_regex
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:646 ]
Boost_LIBRARY_DIR_DEBUG = "/tmp/boost.install/lib"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:648 ]
_boost_LIBRARY_SEARCH_DIRS_DEBUG =
"/tmp/boost.install/lib;NO_DEFAULT_PATH;NO_CMAKE_FIND_ROOT_PATH"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:2040 ] Searching for
SYSTEM_LIBRARY_RELEASE:
boost_system-gcc92-mt-1_67;boost_system-gcc92-mt;boost_system-gcc92-mt;boost_system-mt-1_67;boost_system-mt;boost_system-mt;boost_system-mt;boost_system
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:646 ]
Boost_LIBRARY_DIR_RELEASE = "/tmp/boost.install/lib"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:648 ]
_boost_LIBRARY_SEARCH_DIRS_RELEASE =
"/tmp/boost.install/lib;NO_DEFAULT_PATH;NO_CMAKE_FIND_ROOT_PATH"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:2095 ] Searching for
SYSTEM_LIBRARY_DEBUG:
boost_system-gcc92-mt-d-1_67;boost_system-gcc92-mt-d;boost_system-gcc92-mt-d;boost_system-mt-d-1_67;boost_system-mt-d;boost_system-mt-d;boost_system-mt;boost_system
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:646 ]
Boost_LIBRARY_DIR_DEBUG = "/tmp/boost.install/lib"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:648 ]
_boost_LIBRARY_SEARCH_DIRS_DEBUG =
"/tmp/boost.install/lib;NO_DEFAULT_PATH;NO_CMAKE_FIND_ROOT_PATH"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:2040 ] Searching for
FILESYSTEM_LIBRARY_RELEASE:
boost_filesystem-gcc92-mt-1_67;boost_filesystem-gcc92-mt;boost_filesystem-gcc92-mt;boost_filesystem-mt-1_67;boost_filesystem-mt;boost_filesystem-mt;boost_filesystem-mt;boost_filesystem
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:646 ]
Boost_LIBRARY_DIR_RELEASE = "/tmp/boost.install/lib"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:648 ]
_boost_LIBRARY_SEARCH_DIRS_RELEASE =
"/tmp/boost.install/lib;NO_DEFAULT_PATH;NO_CMAKE_FIND_ROOT_PATH"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:2095 ] Searching for
FILESYSTEM_LIBRARY_DEBUG:
boost_filesystem-gcc92-mt-d-1_67;boost_filesystem-gcc92-mt-d;boost_filesystem-gcc92-mt-d;boost_filesystem-mt-d-1_67;boost_filesystem-mt-d;boost_filesystem-mt-d;boost_filesystem-mt;boost_filesystem
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:646 ]
Boost_LIBRARY_DIR_DEBUG = "/tmp/boost.install/lib"
-- [ /usr/share/cmake-3.15/Modules/FindBoost.cmake:648 ]
_boost_LIBRARY_SEARCH_DIRS_DEBUG =
"/tmp/boost.install/lib;NO_DEFAULT_PATH;NO_CMAKE_FIND_ROOT_PATH"
-- Found Boost: /tmp/boost.install/include (found suitable version "1.67.0",
minimum required is "1.64") found components: regex system filesystem
-- Boost include dir: /tmp/boost.install/include
-- Boost libraries: Boost::system;Boost::filesystem
{noformat}
Here is a command line to build {{cpp/src/arrow/stl_test.cc}} that includes
{{/tmp/boost.install/...}}:
{noformat}
[1/2] /bin/ccache /bin/c++ -DARROW_EXTRA_ERROR_CONTEXT -DARROW_HDFS
-DARROW_JEMALLOC -DARROW_JEMALLOC_INCLUDE_DIR="" -DARROW_MIMALLOC
-DARROW_USE_SIMD -DARROW_WITH_BOOST_FILESYSTEM -DARROW_WITH_BROTLI
-DARROW_WITH_BZ2 -DARROW_WITH_LZ4 -DARROW_WITH_SNAPPY -DARROW_WITH_TIMING_TESTS
-DARROW_WITH_ZLIB -DARROW_WITH_ZSTD -DURI_STATIC_BUILD -Isrc
-I/home/kou/work/cpp/arrow.kou/cpp/src
-I/home/kou/work/cpp/arrow.kou/cpp/src/generated -isystem
/home/kou/work/cpp/arrow.kou/cpp/thirdparty/flatbuffers/include -isystem
/tmp/boost.install/include -isystem //include -isystem
protobuf_ep-install/include -isystem jemalloc_ep-prefix/src -isystem
mimalloc_ep/src/mimalloc_ep/lib/mimalloc-1.0/include -isystem
cares_ep-install/include -isystem grpc_ep-install/include -isystem
/home/kou/work/cpp/arrow.kou/cpp/thirdparty/hadoop/include -isystem
orc_ep-install/include -Wno-noexcept-type -fdiagnostics-color=always -ggdb -O0
-Wall -Wno-conversion -Wno-sign-conversion -Wno-unused-variable -Werror
-msse4.2 -g -fPIE -pthread -std=gnu++11 -MD -MT
src/arrow/CMakeFiles/arrow-stl-test.dir/stl_test.cc.o -MF
src/arrow/CMakeFiles/arrow-stl-test.dir/stl_test.cc.o.d -o
src/arrow/CMakeFiles/arrow-stl-test.dir/stl_test.cc.o -c
/home/kou/work/cpp/arrow.kou/cpp/src/arrow/stl_test.cc
[2/2] : && /bin/ccache /bin/c++ -Wno-noexcept-type -fdiagnostics-color=always
-ggdb -O0 -Wall -Wno-conversion -Wno-sign-conversion -Wno-unused-variable
-Werror -msse4.2 -g -rdynamic
src/arrow/CMakeFiles/arrow-stl-test.dir/stl_test.cc.o -o debug/arrow-stl-test
-Wl,-rpath,/home/kou/work/cpp/arrow.kou/cpp.build/debug:/tmp/boost.install/lib
debug/libarrow_testing.so.16.0.0 debug/libarrow.so.16.0.0
/usr/lib/x86_64-linux-gnu/libcrypto.so /usr/lib/x86_64-linux-gnu/libssl.so
/usr/lib/x86_64-linux-gnu/libbrotlienc.so
/usr/lib/x86_64-linux-gnu/libbrotlidec.so
/usr/lib/x86_64-linux-gnu/libbrotlicommon.so
protobuf_ep-install/lib/libprotobuf.a orc_ep-install/lib/liborc.a -ldl
/usr/lib/x86_64-linux-gnu/libgtest_main.a /usr/lib/x86_64-linux-gnu/libgtest.a
/usr/lib/x86_64-linux-gnu/libgmock.a
/tmp/boost.install/lib/libboost_filesystem.so
/tmp/boost.install/lib/libboost_system.so -ldl
/usr/lib/x86_64-linux-gnu/libcrypto.so
jemalloc_ep-prefix/src/jemalloc_ep/dist//lib/libjemalloc_pic.a
mimalloc_ep/src/mimalloc_ep/lib/mimalloc-1.0/libmimalloc-debug.a -lrt -pthread
&& :
{noformat}
Could you confirm that this problem still exists with master?
> [C++] Headers of system Boost not found in non-standard location
> ----------------------------------------------------------------
>
> Key: ARROW-6421
> URL: https://issues.apache.org/jira/browse/ARROW-6421
> Project: Apache Arrow
> Issue Type: Bug
> Components: C++
> Reporter: Ingo Müller
> Assignee: Kouhei Sutou
> Priority: Minor
>
> On a system that does not have boost installed in a default location, but in
> a non-default one, the boost headers are not found during compilation. This
> is true even though CMake correctly finds the Boost installation, e.g.,
> through CMAKE_PREFIX_PATH.
> The problem is the function ADD_ARROW_LIB LIB_NAME in
> cpp/cmake_modules/BuildUtils.cmake, which defines a target
> "{$LIB_NAME]_objlib" without the required dependencies (without any
> dependencies, actually). The required _compile-time_ dependencies are
> specified as properties of the corresponding_"_targets", for example, of the
> Boost::filesystem target. They should be added as dependencies using
> target_link_libraries (even though the name suggests that this is only for
> _link-time_ dependencies).
> The following patch solves the problem, but might not be the best solution:
> {noformat}
> diff --git a/cpp/cmake_modules/BuildUtils.cmake
> b/cpp/cmake_modules/BuildUtils.cmake
> index ecfa593a0..c2b744766 100644
> --- a/cpp/cmake_modules/BuildUtils.cmake
> +++ b/cpp/cmake_modules/BuildUtils.cmake
> @@ -251,6 +251,13 @@ function(ADD_ARROW_LIB LIB_NAME)
> SOVERSION
> "${ARROW_SO_VERSION}")+
> target_link_libraries(${LIB_NAME}_objlib
> + LINK_PUBLIC
> + "$<BUILD_INTERFACE:${ARG_SHARED_LINK_LIBS}>"
> +
> "$<INSTALL_INTERFACE:${ARG_SHARED_INSTALL_INTERFACE_LIBS}>"
> + LINK_PRIVATE
> + ${ARG_SHARED_PRIVATE_LINK_LIBS})
> +
> target_link_libraries(${LIB_NAME}_shared
> LINK_PUBLIC
>
> "$<BUILD_INTERFACE:${ARG_SHARED_LINK_LIBS}>"{noformat}
> {{Steps to reproduce:}}
> # Make sure you don't have boost installed.
> # Install boost to /opt/boost-1.70.0 (or similar).
> # export CMAKE_PREFIX_PATH=/opt/boost-1.70.0
> # Compile the cpp project without setting -DBOOST_SOURCE or similar. Make
> sure CMake found your Boost installation in /opt
--
This message was sent by Atlassian Jira
(v8.3.4#803005)