[ 
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)

Reply via email to