[OE-core] [oe] cmake update broke mariadb

Koen Kooi koen at dominion.thruhere.net
Tue Jun 30 12:53:29 UTC 2015


> Op 30 jun. 2015, om 12:32 heeft Stefan Herbrechtsmeier <stefan at herbrechtsmeier.net> het volgende geschreven:
> 
> Am 30.06.2015 um 11:59 schrieb Koen Kooi:
>> Burton, Ross schreef op 30-06-15 om 11:44:
>>> On 30 June 2015 at 01:39, akuster808 <akuster808 at gmail.com> wrote:
>>> 
>>>> eo-core commit f8661aa "cmake: Upgrade 2.8.12.2 -> 3.2.2" broke mariadb
>>>> in meta-oe.
>>>> 
>>>> DOes  the person who updated cmake need to fix this or the person who
>>>> is feeling the pain will be fixing it ?
>>>> 
>>> Depends on what the breakage is really.  Can you provide build logs?
>> ERROR: Function failed: do_configure (log file is located at
>> /build/linaro/build/build/tmp-glibc/work/x86_64-linux/mariadb-native/5.5.44-r0/temp/log.do_configure.25603)
>> ERROR: Logfile of failure stored in:
>> /build/linaro/build/build/tmp-glibc/work/x86_64-linux/mariadb-native/5.5.44-r0/temp/log.do_configure.25603
>> Log data follows:
>> | DEBUG: Executing python function sysroot_cleansstate
>> | DEBUG: Python function sysroot_cleansstate finished
>> | DEBUG: Executing shell function autotools_preconfigure
>> | DEBUG: Shell function autotools_preconfigure finished
>> | DEBUG: Executing python function autotools_copy_aclocals
>> | DEBUG: Python function autotools_copy_aclocals finished
>> | DEBUG: Executing shell function do_configure
>> | -- Running cmake version 3.2.2
>> | -- The C compiler identification is GNU 4.8.3
>> | -- The CXX compiler identification is GNU 4.8.3
>> | CMake Error at CMakeLists.txt:86 (PROJECT):
>> |   The CMAKE_C_COMPILER:
>> |
>> |     gcc
>> |
>> |   is not a full path and was not found in the PATH.
>> |
>> |   Tell CMake where to find the compiler by setting either the environment
>> |   variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
>> |   the compiler, or to the compiler name if it is in the PATH.
>> |
>> |
>> | CMake Error at CMakeLists.txt:86 (PROJECT):
>> |   The CMAKE_CXX_COMPILER:
>> |
>> |     g++
>> |
>> |   is not a full path and was not found in the PATH.
>> |
>> |   Tell CMake where to find the compiler by setting either the environment
>> |   variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
>> |   to the compiler, or to the compiler name if it is in the PATH.
>> |
>> |
>> | -- Configuring incomplete, errors occurred!
> The problem should be the usage of cmake for a native package.
> 
> The cmake.bbclass disables the host path and thereby CMake could not find the gcc binary.
> 
> I think the cmake.bbclass need to distinguish between cross and native build and set the following for native build:
> set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH )
> set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH )
> set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH )
> 
> This allows CMake to search the binaries, libraries and includes first in the CMAKE_FIND_ROOT_PATH, then in the CMAKE_SYSROOT and then in the non-rooted directories.

THanks for the hint, I’m going to test something like this:

[koen at thinkpad classes]$ git diff
diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass
index b0a3972..ead4a26 100644
--- a/meta/classes/cmake.bbclass
+++ b/meta/classes/cmake.bbclass
@@ -27,6 +27,13 @@ OECMAKE_RPATH ?= ""
 OECMAKE_PERLNATIVE_DIR ??= ""
 OECMAKE_EXTRA_ROOT_PATH ?= ""
 
+OECMAKE_PATHS ?= ""
+OECMAKE_PATHS_class-native = " \
+set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH ) \
+set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH ) \
+set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH ) \
+"
+
 cmake_do_generate_toolchain_file() {
        cat > ${WORKDIR}/toolchain.cmake <<EOF
 # CMake system name must be something like "Linux".
@@ -67,7 +74,10 @@ list(APPEND CMAKE_MODULE_PATH "${STAGING_DATADIR}/cmake/Modules/")
 # add for non /usr/lib libdir, e.g. /usr/lib64
 set( CMAKE_LIBRARY_PATH ${libdir} ${base_libdir})
 
+${OECMAKE_PATHS}
+
 EOF
+
 }
 
 addtask generate_toolchain_file after do_patch before do_configure




More information about the Openembedded-core mailing list