[ 
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)

Reply via email to