Looking at the CMakeLists: 
https://github.com/apache/arrow/blob/abfd2c968b765ffa0607cebd55cb9828e1b61a23/cpp/src/arrow/adapters/orc/CMakeLists.txt#L23

It seems the orc/ subdirectory explicitly lists out the headers, while most 
other subdirectories use arrow_install_all_headers and automatically pick up 
new headers. Seems you could add the header to the list in that CMakeLists.txt. 
(Sorry, I haven't tried this though.)

While building Python, the only header files that get picked up are from where 
Arrow was installed. (You can see this as the last step of the C++ build in the 
CI logs, right before Python starts building: 
https://github.com/apache/arrow/runs/4345764853?check_suite_focus=true#step:8:1971.)
 But during building, they come from the source tree. 

-David

On Sun, Nov 28, 2021, at 08:34, Ian Joiner wrote:
> Hi,
> 
> What determines which C++ header files go into the include directory in
> Python builds? From CMakeLists.txt all I can find is that if we set
> PYARROW_BUILD_ORC to ON then _orc gets built. What really matters is what
> goes inside _orc and in particular why doesn’t
> arrow/adapters/orc/adapter_options.h get recognized even though it clearly
> exists, is used in _orc.pxd and the C++ builds do recognize its existence.
> 
> Here is the PR: https://github.com/apache/arrow/pull/9702
> 
> Best,
> Ian
> 
> On Friday, November 26, 2021, Ian Joiner <iajoiner...@gmail.com> wrote:
> 
> > Hi,
> >
> > I have added a new C++ header file, arrow/adapters/orc/adapter_options.h
> > which is not recognized in Cython in our Github Action builds.  I wonder
> > what kind of changes (in CMake? I haven’t found any relevant piece in the
> > one CMakeLists.txt in the python directory though) are necessary to make
> > the file usable.
> >
> > Here is the error message I got here (https://github.com/apache/
> > arrow/runs/4336588692?check_suite_focus=true) :
> >
> > [44/60] Building CXX object CMakeFiles/_orc.dir/_orc.cpp.o
> > FAILED: CMakeFiles/_orc.dir/_orc.cpp.o
> > ccache /opt/conda/envs/arrow/bin/x86_64-conda-linux-gnu-c++
> > -DARROW_HAVE_RUNTIME_AVX2 -DARROW_HAVE_RUNTIME_AVX512
> > -DARROW_HAVE_RUNTIME_BMI2 -DARROW_HAVE_RUNTIME_SSE4_2 -DARROW_HAVE_SSE4_2
> > -D_orc_EXPORTS -isystem /opt/conda/envs/arrow/lib/
> > python3.8/site-packages/numpy/core/include -isystem
> > /opt/conda/envs/arrow/include/python3.8 -isystem /arrow/python/src
> > -Wno-noexcept-type -Wall -fno-semantic-interposition -msse4.2
> > -fvisibility-inlines-hidden -std=c++17 -fmessage-length=0 -march=nocona
> > -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2
> > -ffunction-sections -pipe -isystem /opt/conda/envs/arrow/include
> > -fdiagnostics-color=always -g -O0 -fno-omit-frame-pointer
> > -Wno-unused-variable -Wno-maybe-uninitialized -g -fPIC -std=c++11
> > -Wno-unused-function -MD -MT CMakeFiles/_orc.dir/_orc.cpp.o -MF
> > CMakeFiles/_orc.dir/_orc.cpp.o.d -o CMakeFiles/_orc.dir/_orc.cpp.o -c
> > /build/python/temp.linux-x86_64-3.8/_orc.cpp
> > /build/python/temp.linux-x86_64-3.8/_orc.cpp:736:10: fatal error:
> > arrow/adapters/orc/adapter_options.h: No such file or directory
> > 736 | #include "arrow/adapters/orc/adapter_options.h"
> > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > compilation terminated.
> >
> > Thanks Sutou for pointing out how to fix CMakeLists.txt in cpp/src/arrow
> > back then which is why we no longer have any comparable problem in C++.
> >
> > Thanks,
> > Ian
> 

Reply via email to