[
https://issues.apache.org/jira/browse/ARROW-3874?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16702776#comment-16702776
]
Suvayu Ali edited comment on ARROW-3874 at 11/29/18 6:42 AM:
-------------------------------------------------------------
Okay, to summarise: my initial build issue on F28 was resolved by installing
the llvm-static libraries.
On F29, cmake cannot find the correct version of LLVM.
{code}
$ export ARROW_HOME=~/opt
$ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$ARROW_HOME \
-DARROW_PARQUET=on -DARROW_ORC=ON -DARROW_PLASMA=on -DARROW_GANDIVA=ON ../
[...]
CMake Error at cmake_modules/FindLLVM.cmake:24 (find_package):
Could not find a configuration file for package "LLVM" that is compatible
with requested version "6.0".
The following configuration files were considered but not accepted:
/usr/lib64/cmake/llvm/LLVMConfig.cmake, version: 7.0.0
/lib64/cmake/llvm/LLVMConfig.cmake, version: 7.0.0
Call Stack (most recent call first):
src/gandiva/CMakeLists.txt:25 (find_package)
{code}
Fedora provides alternate llvm versions installed in subdirectories, so I tried
specifying {{LLVM_DIR}} when invoking cmake.
{code}
$ ls /usr/lib64/llvm6.0/
bin include lib
$ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$ARROW_HOME \
-DARROW_PARQUET=on -DARROW_ORC=ON -DARROW_PLASMA=on -DARROW_GANDIVA=ON \
-DLLVM_DIR=/usr/lib64/llvm6.0 ../
[...]
CMake Error at cmake_modules/FindLLVM.cmake:24 (find_package):
Could not find a configuration file for package "LLVM" that is compatible
with requested version "6.0".
The following configuration files were considered but not accepted:
/usr/lib64/cmake/llvm/LLVMConfig.cmake, version: 7.0.0
/lib64/cmake/llvm/LLVMConfig.cmake, version: 7.0.0
Call Stack (most recent call first):
src/gandiva/CMakeLists.txt:25 (find_package)
{code}
So I patched {{find_library}} (see [^arrow-cmake-findllvm.patch]), that fixes
the LLVM issue, but then I encounter the following Java issue
{code}
$ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$ARROW_HOME \
-DARROW_PARQUET=on -DARROW_ORC=ON -DARROW_PLASMA=on -DARROW_GANDIVA=ON \
-DLLVM_DIR=/usr/lib64/llvm6.0 ../
[...]
-- Found LLVM 6.0.1
-- Using LLVMConfig.cmake in: /usr/lib64/llvm6.0/lib/cmake/llvm
-- Found clang /usr/lib64/ccache/clang
-- Found llvm-link /usr/lib64/llvm6.0/bin/llvm-link
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:137
(message):
Could NOT find JNI (missing: JAVA_AWT_LIBRARY JAVA_INCLUDE_PATH
JAVA_INCLUDE_PATH2 JAVA_AWT_INCLUDE_PATH)
Call Stack (most recent call first):
/usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:378
(_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake/Modules/FindJNI.cmake:356 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
src/gandiva/jni/CMakeLists.txt:21 (find_package)
{code}
My Java setup
{code}
$ echo $JAVA_HOME
/etc/alternatives/jre_openjdk
$ $JAVA_HOME/bin/java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
$ rpm -qa \*jni\* | sort
hawtjni-1.16-3.fc29.noarch
hawtjni-runtime-1.16-3.fc29.noarch
$ rpm -qa \*java\* | sort
java-11-openjdk-headless-11.0.1.13-4.fc29.x86_64
java-1.8.0-openjdk-headless-1.8.0.191.b12-8.fc29.x86_64
java-openjdk-headless-10.0.2.13-7.fc29.x86_64
javapackages-filesystem-5.3.0-1.fc29.noarch
javapackages-tools-5.3.0-1.fc29.noarch
tzdata-java-2018g-1.fc29.noarch
{code}
Unfortunately, I cannot easily compare F28 and F29 as I never have access to
them simultaneously.
was (Author: suvayu):
Okay, to summarise: my initial build issue on F28 was resolved by installing
the llvm-static libraries.
On F29, cmake cannot find the correct version of LLVM.
{code}
$ export ARROW_HOME=~/opt
$ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$ARROW_HOME \
-DARROW_PARQUET=on -DARROW_ORC=ON -DARROW_PLASMA=on -DARROW_GANDIVA=ON ../
[...]
CMake Error at cmake_modules/FindLLVM.cmake:24 (find_package):
Could not find a configuration file for package "LLVM" that is compatible
with requested version "6.0".
The following configuration files were considered but not accepted:
/usr/lib64/cmake/llvm/LLVMConfig.cmake, version: 7.0.0
/lib64/cmake/llvm/LLVMConfig.cmake, version: 7.0.0
Call Stack (most recent call first):
src/gandiva/CMakeLists.txt:25 (find_package)
{code}
Fedora provides alternate llvm versions installed in subdirectories, so I tried
specifying {{LLVM_DIR}} when invoking cmake.
{code}
$ ls /usr/lib64/llvm6.0/
bin include lib
$ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$ARROW_HOME \
-DARROW_PARQUET=on -DARROW_ORC=ON -DARROW_PLASMA=on -DARROW_GANDIVA=ON \
-DLLVM_DIR=/usr/lib64/llvm6.0 ../
[...]
CMake Error at cmake_modules/FindLLVM.cmake:24 (find_package):
Could not find a configuration file for package "LLVM" that is compatible
with requested version "6.0".
The following configuration files were considered but not accepted:
/usr/lib64/cmake/llvm/LLVMConfig.cmake, version: 7.0.0
/lib64/cmake/llvm/LLVMConfig.cmake, version: 7.0.0
Call Stack (most recent call first):
src/gandiva/CMakeLists.txt:25 (find_package)
{code}
So I patched {{find_library}} {{(see }}[^arrow-cmake-findllvm.patch]), that
fixes the LLVM issue, but then I encounter the following Java issue
{code}
$ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$ARROW_HOME \
-DARROW_PARQUET=on -DARROW_ORC=ON -DARROW_PLASMA=on -DARROW_GANDIVA=ON \
-DLLVM_DIR=/usr/lib64/llvm6.0 ../
[...]
-- Found LLVM 6.0.1
-- Using LLVMConfig.cmake in: /usr/lib64/llvm6.0/lib/cmake/llvm
-- Found clang /usr/lib64/ccache/clang
-- Found llvm-link /usr/lib64/llvm6.0/bin/llvm-link
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:137
(message):
Could NOT find JNI (missing: JAVA_AWT_LIBRARY JAVA_INCLUDE_PATH
JAVA_INCLUDE_PATH2 JAVA_AWT_INCLUDE_PATH)
Call Stack (most recent call first):
/usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:378
(_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake/Modules/FindJNI.cmake:356 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
src/gandiva/jni/CMakeLists.txt:21 (find_package)
{code}
My Java setup
{code}
$ echo $JAVA_HOME
/etc/alternatives/jre_openjdk
$ $JAVA_HOME/bin/java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
$ rpm -qa \*jni\* | sort
hawtjni-1.16-3.fc29.noarch
hawtjni-runtime-1.16-3.fc29.noarch
$ rpm -qa \*java\* | sort
java-11-openjdk-headless-11.0.1.13-4.fc29.x86_64
java-1.8.0-openjdk-headless-1.8.0.191.b12-8.fc29.x86_64
java-openjdk-headless-10.0.2.13-7.fc29.x86_64
javapackages-filesystem-5.3.0-1.fc29.noarch
javapackages-tools-5.3.0-1.fc29.noarch
tzdata-java-2018g-1.fc29.noarch
{code}
Unfortunately, I cannot easily compare F28 and F29 as I never have access to
them simultaneously.
> [Gandiva] Cannot build: LLVM not detected correctly
> ---------------------------------------------------
>
> Key: ARROW-3874
> URL: https://issues.apache.org/jira/browse/ARROW-3874
> Project: Apache Arrow
> Issue Type: Bug
> Components: Gandiva
> Affects Versions: 0.12.0
> Environment: Fedora 29, master (1013a1dc)
> gcc (GCC) 8.2.1 20181105 (Red Hat 8.2.1-5)
> llvm 7.0.0 (default) and 6.0.1 (parallel installed package from Fedora repos)
> cmake version 3.12.1
> Reporter: Suvayu Ali
> Priority: Major
> Labels: cmake
> Attachments: CMakeError.log, CMakeOutput.log,
> arrow-cmake-findllvm.patch
>
>
> I cannot build Arrow with {{-DARROW_GANDIVA=ON}}. {{cmake}} fails while
> detecting LLVM on the system.
> {code}
> $ cd build/data-an/arrow/arrow/cpp/
> $ export ARROW_HOME=/opt/data-an
> $ mkdir release
> $ cd release/
> $ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$ARROW_HOME
> -DARROW_GANDIVA=ON ../
> [...]
> -- Found LLVM 6.0.1
> -- Using LLVMConfig.cmake in: /usr/lib64/cmake/llvm
> CMake Error at /usr/lib64/cmake/llvm/LLVM-Config.cmake:175 (message):
> Target X86 is not in the set of libraries.
> Call Stack (most recent call first):
> cmake_modules/FindLLVM.cmake:31 (llvm_map_components_to_libnames)
> src/gandiva/CMakeLists.txt:25 (find_package)
> -- Configuring incomplete, errors occurred!
> {code}
> The cmake log files are attached.
> When I invoke cmake with options other than *Gandiva*, it finishes
> successfully.
> Here are the llvm libraries that are installed on my system:
> {code}
> $ rpm -qa llvm\* | sort
> llvm3.9-libs-3.9.1-13.fc28.x86_64
> llvm4.0-libs-4.0.1-5.fc28.x86_64
> llvm-6.0.1-8.fc28.x86_64
> llvm-devel-6.0.1-8.fc28.x86_64
> llvm-libs-6.0.1-8.fc28.i686
> llvm-libs-6.0.1-8.fc28.x86_64
> $ ls /usr/lib64/libLLVM* /usr/include/llvm
> /usr/lib64/libLLVM-6.0.1.so /usr/lib64/libLLVM-6.0.so /usr/lib64/libLLVM.so
> /usr/include/llvm:
> ADT FuzzMutate Object Support
> Analysis InitializePasses.h ObjectYAML TableGen
> AsmParser IR Option Target
> BinaryFormat IRReader PassAnalysisSupport.h Testing
> Bitcode LineEditor Passes ToolDrivers
> CodeGen LinkAllIR.h Pass.h Transforms
> Config LinkAllPasses.h PassInfo.h WindowsManifest
> DebugInfo Linker PassRegistry.h WindowsResource
> Demangle LTO PassSupport.h XRay
> ExecutionEngine MC ProfileData
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)