Looks like this dependency requirement is already fixed on arrow master https://github.com/apache/arrow/blob/master/cpp/src/arrow/io/file.cc#L125
On Tue, Jan 9, 2018 at 4:04 PM, ALeX Wang <[email protected]> wrote: > So, I ran `c++ -E` and confirmed that the `<boost/filesystem.hpp>` is > indeed included here in arrow: > > https://github.com/apache/arrow/blob/97f9029ce835dfc2655ca91b9820a2e6aed89107/cpp/src/arrow/io/file.cc#L110-L111 > > And it subsequently include `<boost/filesystem/path.hpp>` which refers to > the `codecvt`... ... ... > > SO, seems to me that there is a missing dependency to the > `libboost_filesystem.a`, > > Thanks, > > On 7 January 2018 at 20:58, Deepak Majeti <[email protected]> wrote: > >> For static linking, certain boost libraries are transitively needed by >> parquet-cpp due to its dependency on Arrow. >> >> Below is a link to the arrow version your parquet-cpp branch is linking >> against >> https://github.com/apache/arrow/blob/97f9029ce835dfc2655ca91b9820a2 >> e6aed89107/cpp/src/arrow/io/file.cc >> >> I see that "codecvt" header and symbols are included only if "_MSC_VER" is >> defined. >> >> You should not be seeing the "undefined reference to >> `boost::filesystem::path::codecvt()" on Centos7 with GNU compiler. >> >> On Sun, Jan 7, 2018 at 4:26 PM, ALeX Wang <[email protected]> wrote: >> >> > My environment is Centos7, >> > >> > I do not follow the question, since when i run `cmake` it says the >> version >> > arrow to use,,, e.g. >> > >> > ``` >> > -- Building Apache Arrow from commit: >> > 97f9029ce835dfc2655ca91b9820a2e6aed89107 >> > -- Build Type: RELEASE >> > -- Compiler id: GNU >> > Selected compiler gcc 4.8.5 >> > -- Found cpplint executable at /opt/parquet-cpp/build-support/cpplint.py >> > ``` >> > >> > Again, I was referring to the environment variables setting in the >> > `ci/travis_script_static.sh`, and set my env vars like below: >> > >> > ``` >> > 190 export ARROW_EP=/opt/parquet-cpp/arrow_ep-prefix/src/arrow_ep- >> build >> > 191 export BROTLI_EP=$ARROW_EP/brotli_ep/src/brotli_ep-install/lib >> > 193 export >> > SNAPPY_STATIC_LIB=$ARROW_EP/snappy_ep/src/snappy_ep- >> > install/lib/libsnappy.a >> > 194 export BROTLI_STATIC_LIB_ENC=$BROTLI_EP/libbrotlienc.a >> > 195 export BROTLI_STATIC_LIB_DEC=$BROTLI_EP/libbrotlidec.a >> > 196 export BROTLI_STATIC_LIB_COMMON=$BROTLI_EP/libbrotlicommon.a >> > 197 export >> > ZLIB_STATIC_LIB=$ARROW_EP/zlib_ep/src/zlib_ep-install/lib/libz.a >> > ``` >> > >> > And then i ran `cmake`... >> > >> > >> > Thanks, >> > >> > On 7 January 2018 at 03:56, Deepak Majeti <[email protected]> >> wrote: >> > >> > > What is the Arrow version of your setup? Can you verify if you see the >> > same >> > > issue on parquet-cpp master? >> > > It is possible we are missing the boost filesystem library dependency >> for >> > > the static build with MSVC. >> > > >> > > On Sat, Jan 6, 2018 at 10:33 AM, ALeX Wang <[email protected]> wrote: >> > > >> > > > Okay, my following change makes it working,,, could anyone please >> help >> > > > confirm, >> > > > >> > > > ``` >> > > > diff --git a/CMakeLists.txt b/CMakeLists.txt >> > > > index fef0cab..25defd6 100644 >> > > > --- a/CMakeLists.txt >> > > > +++ b/CMakeLists.txt >> > > > @@ -500,7 +500,8 @@ if (PARQUET_BOOST_USE_SHARED) >> > > > else() >> > > > set(BOOST_LINK_LIBS >> > > > boost_static_regex >> > > > - boost_static_system) >> > > > + boost_static_system >> > > > + boost_static_filesystem) >> > > > endif() >> > > > >> > > > ############################################################# >> > > > diff --git a/cmake_modules/ThirdpartyToolchain.cmake >> > > > b/cmake_modules/ThirdpartyToolchain.cmake >> > > > index 1221765..d19c4eb 100644 >> > > > --- a/cmake_modules/ThirdpartyToolchain.cmake >> > > > +++ b/cmake_modules/ThirdpartyToolchain.cmake >> > > > @@ -81,13 +81,15 @@ if (PARQUET_BOOST_USE_SHARED) >> > > > else() >> > > > # Find static Boost libraries. >> > > > set(Boost_USE_STATIC_LIBS ON) >> > > > - find_package(Boost COMPONENTS regex system REQUIRED) >> > > > + find_package(Boost COMPONENTS regex system filesystem REQUIRED) >> > > > if ("${UPPERCASE_BUILD_TYPE}" STREQUAL "DEBUG") >> > > > set(BOOST_STATIC_REGEX_LIBRARY ${Boost_REGEX_LIBRARY_DEBUG}) >> > > > set(BOOST_STATIC_SYSTEM_LIBRARY ${Boost_SYSTEM_LIBRARY_DEBUG}) >> > > > + set(BOOST_STATIC_FILESYSTEM_LIBRARY ${Boost_FILESYSTEM_LIBRARY_ >> > > > DEBUG}) >> > > > else() >> > > > set(BOOST_STATIC_REGEX_LIBRARY ${Boost_REGEX_LIBRARY_RELEASE}) >> > > > set(BOOST_STATIC_SYSTEM_LIBRARY ${Boost_SYSTEM_LIBRARY_ >> RELEASE}) >> > > > + set(BOOST_STATIC_FILESYSTEM_LIBRARY >> > > > ${Boost_FILESYSTEM_LIBRARY_RELEASE}) >> > > > endif() >> > > > endif() >> > > > >> > > > @@ -115,6 +117,8 @@ else() >> > > > set_target_properties(boost_static_regex PROPERTIES >> > IMPORTED_LOCATION >> > > > ${BOOST_STATIC_REGEX_LIBRARY}) >> > > > add_library(boost_static_system STATIC IMPORTED) >> > > > set_target_properties(boost_static_system PROPERTIES >> > > IMPORTED_LOCATION >> > > > ${BOOST_STATIC_SYSTEM_LIBRARY}) >> > > > + add_library(boost_static_filesystem STATIC IMPORTED) >> > > > + set_target_properties(boost_static_filesystem PROPERTIES >> > > > IMPORTED_LOCATION ${BOOST_STATIC_FILESYSTEM_LIBRARY}) >> > > > endif() >> > > > >> > > > include_directories(SYSTEM ${Boost_INCLUDE_DIRS}) >> > > > ``` >> > > > >> > > > On 5 January 2018 at 20:29, ALeX Wang <[email protected]> wrote: >> > > > >> > > > > Also, i'm building from >> > > > > >> > > > > ``` >> > > > > commit 18ca3922e688a3a730d693ff8f2cfbfd65da8c46 >> > > > > Author: Uwe L. Korn <[email protected]> >> > > > > Date: Sun Sep 17 13:55:43 2017 -0400 >> > > > > >> > > > > PARQUET-1094: Add benchmark for boolean Arrow column I/O >> > > > > >> > > > > Author: Uwe L. Korn <[email protected]> >> > > > > >> > > > > Closes #391 from xhochy/PARQUET-1094 and squashes the following >> > > > > commits: >> > > > > >> > > > > 089bb3c [Uwe L. Korn] PARQUET-1094: Add benchmark for boolean >> > Arrow >> > > > > column I/O >> > > > > ``` >> > > > > >> > > > > On 5 January 2018 at 20:27, ALeX Wang <[email protected]> wrote: >> > > > > >> > > > >> Hi, >> > > > >> >> > > > >> I'm referring to the https://github.com/apache/ >> > > > >> parquet-cpp/blob/master/ci/travis_script_static.sh >> > > > >> and try to build static library, >> > > > >> >> > > > >> My cmake cmdline looks like: >> > > > >> ``` >> > > > >> cmake3 -DCMAKE_BUILD_TYPE=Release -DPARQUET_BUILD_EXAMPLES=OFF >> > > > >> -DPARQUET_BUILD_TESTS=OFF -DPARQUET_ARROW_LINKAGE="static" >> > > > >> -DPARQUET_BUILD_SHARED=OFF -DPARQUET_BOOST_USE_SHARED=OFF . >> > > > >> ``` >> > > > >> >> > > > >> However, the compilation failed with: >> > > > >> ``` >> > > > >> [ 90%] Linking CXX executable ../build/release/parquet-scan >> > > > >> ../build/release/libarrow.a(file.cc.o): In function >> > > > >> `arrow::io::FileOutputStream::Open(std::string const&, bool, >> > > > >> std::shared_ptr<arrow::io::FileOutputStream>*)': >> > > > >> file.cc:(.text+0x2f1f): undefined reference to >> > > > >> `boost::filesystem::path::codecvt()' >> > > > >> ../build/release/libarrow.a(file.cc.o): In function >> > > > >> `arrow::io::ReadableFile::Open(std::string const&, >> > > arrow::MemoryPool*, >> > > > >> std::shared_ptr<arrow::io::ReadableFile>*)': >> > > > >> file.cc:(.text+0x33d0): undefined reference to >> > > > >> `boost::filesystem::path::codecvt()' >> > > > >> ../build/release/libarrow.a(file.cc.o): In function >> > > > >> `arrow::io::ReadableFile::Open(std::string const&, >> > > > >> std::shared_ptr<arrow::io::ReadableFile>*)': >> > > > >> file.cc:(.text+0x3865): undefined reference to >> > > > >> `boost::filesystem::path::codecvt()' >> > > > >> ../build/release/libarrow.a(file.cc.o): In function >> > > > >> `arrow::io::MemoryMappedFile::MemoryMap::Open(std::string const&, >> > > > >> arrow::io::FileMode::type)': >> > > > >> file.cc:(.text._ZN5arrow2io16MemoryMappedFile9MemoryMap4Open >> > > > >> ERKSsNS0_8FileMode4typeE[_ZN5arrow2io16MemoryMappedFile9Memo >> > > > >> ryMap4OpenERKSsNS0_8FileMode4typeE]+0xba): undefined reference to >> > > > >> `boost::filesystem::path::codecvt()' >> > > > >> file.cc:(.text._ZN5arrow2io16MemoryMappedFile9MemoryMap4Open >> > > > >> ERKSsNS0_8FileMode4typeE[_ZN5arrow2io16MemoryMappedFile9Memo >> > > > >> ryMap4OpenERKSsNS0_8FileMode4typeE]+0x186): undefined reference >> to >> > > > >> `boost::filesystem::path::codecvt()' >> > > > >> collect2: error: ld returned 1 exit status >> > > > >> ``` >> > > > >> >> > > > >> Any idea where I did wrong? >> > > > >> >> > > > >> Thanks, >> > > > >> -- >> > > > >> Alex Wang, >> > > > >> Open vSwitch developer >> > > > >> >> > > > > >> > > > > >> > > > > >> > > > > -- >> > > > > Alex Wang, >> > > > > Open vSwitch developer >> > > > > >> > > > >> > > > >> > > > >> > > > -- >> > > > Alex Wang, >> > > > Open vSwitch developer >> > > > >> > > >> > > >> > > >> > > -- >> > > regards, >> > > Deepak Majeti >> > > >> > >> > >> > >> > -- >> > Alex Wang, >> > Open vSwitch developer >> > >> >> >> >> -- >> regards, >> Deepak Majeti >> > > > > -- > Alex Wang, > Open vSwitch developer -- regards, Deepak Majeti
