[
https://issues.apache.org/jira/browse/ARROW-2616?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17659642#comment-17659642
]
Rok Mihevc commented on ARROW-2616:
-----------------------------------
This issue has been migrated to [issue
#19014|https://github.com/apache/arrow/issues/19014] on GitHub. Please see the
[migration documentation|https://github.com/apache/arrow/issues/14542] for
further details.
> [Python] Cross-compiling Pyarrow
> --------------------------------
>
> Key: ARROW-2616
> URL: https://issues.apache.org/jira/browse/ARROW-2616
> Project: Apache Arrow
> Issue Type: Bug
> Components: Packaging, Python
> Affects Versions: 0.9.0
> Reporter: Gerlando Falauto
> Assignee: Uwe Korn
> Priority: Major
> Fix For: 3.0.0
>
>
> Hi there,
> not quite sure this could be filed in as a bug.
> I'm trying to cross-compile Pyarrow on a regular linux x86_64 host for an
> arm32 target, using LEDE/OpenWRT as the build/packaging system.
> The process miserably fails as soon as cmake gets involved:
> {noformat}
> -- Runnning cmake for pyarrow
> cmake
> -DPYTHON_EXECUTABLE=/workdir/rpi/LEDE/staging_dir/target-arm_cortex-a53+neon-vfpv4_musl-1.1.16_eabi/host/bin/python3.6
> -DPYARROW_BOOST_USE_SHARED=on -DPYARROW_BUNDLE_BOOST=OFF
> -DCMAKE_BUILD_TYPE=debug
> /workdir/rpi/LEDE/build_dir/target-arm_cortex-a53+neon-vfpv4_musl-1.1.16_eabi/apache-arrow-0.9.0/python
> INFOCompiler command:
> /workdir/rpi/LEDE/staging_dir/toolchain-arm_cortex-a53+neon-vfpv4_gcc-5.4.0_musl-1.1.16_eabi/bin/arm-openwrt-linux-muslgnueabi-g++
> INFOCompiler version: Reading specs from
> /workdir/rpi/LEDE/staging_dir/toolchain-arm_cortex-a53+neon-vfpv4_gcc-5.4.0_musl-1.1.16_eabi/bin/../lib/gcc/arm-openwrt-linux-muslgnueabi/5.4.0/specs
> COLLECT_GCC=/workdir/rpi/LEDE/staging_dir/toolchain-arm_cortex-a53+neon-vfpv4_gcc-5.4.0_musl-1.1.16_eabi/bin/arm-openwrt-linux-muslgnueabi-g++
> COLLECT_LTO_WRAPPER=/workdir/rpi/LEDE/staging_dir/toolchain-arm_cortex-a53+neon-vfpv4_gcc-5.4.0_musl-1.1.16_eabi/bin/../libexec/gcc/arm-openwrt-linux-muslgnueabi/5.4.0/lto-wrapper
> Target: arm-openwrt-linux-muslgnueabi
> Configured with:
> /workdir/LEDE/build_dir/toolchain-arm_cortex-a53+neon-vfpv4_gcc-5.4.0_musl-1.1.16_eabi/gcc-5.4.0/configure
> --with-bugurl=http://www.lede-project.org/bugs/ --with-pkgversion='LEDE GCC
> 5.4.0 r3533-d0bf257c46'
> --prefix=/workdir/LEDE/staging_dir/toolchain-arm_cortex-a53+neon-vfpv4_gcc-5.4.0_musl-1.1.16_eabi
> --build=x86_64-linux-gnu --host=x86_64-linux-gnu
> --target=arm-openwrt-linux-muslgnueabi --with-gnu-ld --enable-target-optspace
> --disable-libgomp --disable-libmudflap --disable-multilib --disable-libmpx
> --disable-nls --without-isl --without-cloog --with-host-libstdcxx=-lstdc++
> --with-gmp=/workdir/LEDE/staging_dir/host
> --with-mpfr=/workdir/LEDE/staging_dir/host
> --with-mpc=/workdir/LEDE/staging_dir/host --disable-decimal-float
> --with-diagnostics-color=auto-if-env --disable-libssp --enable-__cxa_atexit
> --with-float=hard
> --with-headers=/workdir/LEDE/staging_dir/toolchain-arm_cortex-a53+neon-vfpv4_gcc-5.4.0_musl-1.1.16_eabi/include
> --disable-libsanitizer --enable-languages=c,c++ --enable-shared
> --enable-threads
> --with-slibdir=/workdir/LEDE/staging_dir/toolchain-arm_cortex-a53+neon-vfpv4_gcc-5.4.0_musl-1.1.16_eabi/lib
> --enable-lto --with-libelf=/workdir/LEDE/staging_dir/host
> Thread model: posix
> gcc version 5.4.0 (LEDE GCC 5.4.0 r3533-d0bf257c46)
> INFOCompiler id: GNU
> Selected compiler gcc 5.4.0
> Configured for DEBUG build (set with cmake
> -DCMAKE_BUILD_TYPE={release,debug,...})
> -- Build Type: DEBUG
> -- Build output directory:
> /workdir/rpi/LEDE/build_dir/target-arm_cortex-a53+neon-vfpv4_musl-1.1.16_eabi/apache-arrow-0.9.0/python/build/temp.linux2-3.6/debug/
> CMake Error at cmake_modules/FindPythonLibsNew.cmake:124 (message):
> Python config failure: Python is 64-bit, chosen compiler is 32-bit
> Call Stack (most recent call first):
> CMakeLists.txt:183 (find_package)
> -- Configuring incomplete, errors occurred!
> See also
> "/workdir/rpi/LEDE/build_dir/target-arm_cortex-a53+neon-vfpv4_musl-1.1.16_eabi/apache-arrow-0.9.0/python/build/temp.linux2-3.6/CMakeFiles/CMakeOutput.log".
> error: command 'cmake' failed with exit status 1
> {noformat}
>
> I had a look at the affected area (FindPythonLibsNew.cmake) and I'm under the
> impression the whole CMake-based build system for pyarrow *was never designed
> for cross-compilation in the first place*. It just calls the configured
> interpreter ({{PYTHON_EXECUTABLE}}) and tries to locate libraries by running
> sample code.
> That's just great for native builds (where you have e.g. multiple
> installations on the same filesystem), but it's never gonna work on a
> cross-build environment.
> I believe I could patch the cmake files so to be able to pass those paths
> (e.g. PYTHON_INCLUDE_DIRS) from the command line (i.e. the way it's done by
> {{CMAKE_BUILD_TYPE}}), and skip the auto-detect portions. Before I go down
> that path though, I'd like to know whether I'm bound to eventual failure due
> to inherent design decisions.
> [~pitrou] could perhaps back me up here?
> Thank you!
--
This message was sent by Atlassian Jira
(v8.20.10#820010)