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

Reply via email to