Building everything without c++11 seems to work. Thanks again for your help.
On Mon, Oct 10, 2022 at 4:52 PM Joseph Porter <joe.por...@falkonry.com> wrote: > I think I found a culprit in the pyarrow cmake config: > > if(PYARROW_USE_TENSORFLOW) > # TensorFlow uses the old GLIBCXX ABI, so we have to use it too > set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_USE_CXX11_ABI=0") > endif() > > This was overriding my attempts to add c++11 to the pyarrow build (which > wasn't a good idea, apparently). Still working on the build per your > suggestion. The gandiva test executable build chokes if c++11 isn't > available, so I turned off the test build. > > On Mon, Oct 10, 2022 at 3:47 PM Joseph Porter <joe.por...@falkonry.com> > wrote: > >> That makes sense. I'll give it a try - thanks! >> >> On Mon, Oct 10, 2022 at 2:34 PM Antoine Pitrou <anto...@python.org> >> wrote: >> >>> >>> >>> Le 10/10/2022 à 21:31, Joseph Porter a écrit : >>> > No go. I still get the B5cxx11 extension on the symbols in the compiled >>> > libarrow library. >>> >>> "-D_GLIBCXX_USE_CXX11_ABI=0" is a C++ compiler flag, not a CMake flag. >>> >>> One possibility is to pass instead >>> "-DCMAKE_CXX_FLAGS=-D_GLIBCXX_USE_CXX11_ABI=0" to CMake. >>> >>> >>> > >>> > Tried: >>> > /workspace/arrow/pyarrow-dev/bin/cmake >>> -DCMAKE_INSTALL_PREFIX=$ARROW_HOME >>> > -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release >>> -DARROW_DATASET=ON >>> > -DARROW_WITH_BZ2=ON -DARROW_WITH_ZLIB=ON -DARROW_WITH_ZSTD=ON >>> > -DARROW_WITH_LZ4=ON -DARROW_WITH_SNAPPY=ON -DARROW_WITH_BROTLI=ON >>> > -DARROW_PARQUET=ON -DPARQUET_REQUIRE_ENCRYPTION=ON -DARROW_PYTHON=ON >>> > -DARROW_BUILD_TESTS=ON -DARROW_CUDA=ON -DARROW_FLIGHT=ON >>> -DARROW_GANDIVA=ON >>> > -DARROW_PLASMA=ON -DARROW_S3=ON -DARROW_TENSORFLOW=ON -DARROW_CSV=ON >>> > -DARROW_JSON=ON -DARROW_WITH_RE2=ON -DARROW_IPC=ON >>> > -DARROW_DEPENDENCY_SOURCE=BUNDLED -D_GLIBCXX_USE_CXX11_ABI=0 .. >>> > >>> > For my next attempt, I modified CMakeLists.txt (in arrow/cpp) to >>> explicitly >>> > remove any mention of -std=c++11 in the CXXFLAGS. I'll let you know if >>> > that works. Any pointers on better ways to troubleshoot this would >>> also be >>> > helpful. I'm not super-conversant with CMake. >>> > >>> > # Remove --std=c++11 to avoid errors from C compilers >>> > string(REPLACE "-std=c++11" "" CMAKE_C_FLAGS ${CMAKE_C_FLAGS}) >>> > >>> > # Add C++-only flags, like -std=c++11 >>> > set(CMAKE_CXX_FLAGS "${CXX_ONLY_FLAGS} ${CMAKE_CXX_FLAGS}") >>> > string(REPLACE "-std=c++11" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) >>> > >>> > On Mon, Oct 10, 2022 at 1:29 PM Antoine Pitrou <anto...@python.org> >>> wrote: >>> > >>> >> >>> >> Then instead pass "-D_GLIBCXX_USE_CXX11_ABI=0" when building the C++ >>> >> libraries? >>> >> >>> >> >>> >> Le 10/10/2022 à 20:20, Joseph Porter a écrit : >>> >>> Hi Antoine, >>> >>> >>> >>> Here's what I did: >>> >>> export PYARROW_CXXFLAGS="-std=c++11 -D_GLIBCXX_USE_CXX11_ABI=1" >>> >>> >>> >>> Here's what I got: >>> >>> ImportError: >>> >>> /workspace/arrow/pyarrow-test/lib/python3.8/site-packages/pyarrow/ >>> >>> lib.cpython-38-x86_64-linux-gnu.so: undefined symbol: >>> >>> _ZNK5arrow8DataType18ComputeFingerprintEv >>> >>> >>> >>> It looks like the symbol mismatch exists already in the libraries >>> that >>> >> were >>> >>> created by the C++ build step, which is why I tried to add the c++11 >>> >>> directives to the CMakeLists.txt in the python module. >>> >>> >>> >>> -Joe >>> >>> >>> >>> On Mon, Oct 10, 2022 at 12:37 PM Antoine Pitrou <anto...@python.org> >>> >> wrote: >>> >>> >>> >>>> >>> >>>> Le 10/10/2022 à 19:27, Joseph Porter a écrit : >>> >>>>> >>> >>>>> I've tried building with explicit flags to encourage the libraries >>> to >>> >>>>> include the cxx11 symbol (in python/CMakeLists.txt). That doesn't >>> seem >>> >>>> to >>> >>>>> impact this issue: >>> >>>>> >>> >>>>> set (CMAKE_CXX_STANDARD 11) >>> >>>>> set (CMAKE_CXX_STANDARD_REQUIRED ON) >>> >>>>> set (CMAKE_CXX_EXTENSIONS OFF) >>> >>>>> >>> >>>>> I also added >>> >>>>> export PYARROW_CXXFLAGS="-std=c++11" >>> >>>>> for the wheel build of pyarrow (no effect). >>> >>>> >>> >>>> Can you try adding "-D_GLIBCXX_USE_CXX11_ABI=1" to those flags? >>> >>>> >>> >>> >>> >> >>> > >>> >>