Skip to contentSkip to conversation

cmake update broke mariadb

DISCUSSION akuster808 4 participants 8 messages Jun 30, 2015

lore
Share & tools
lore

akuster808

author
#0 lore raw

Hello,

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 ?

- armin

#1 lore raw
Quoted 6 lines · On 30 June 2015 at 01:39, akuster808 <[email protected]> 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?

Ross

#2 lore raw

Burton, Ross schreef op 30-06-15 om 11:44:

Quoted 10 lines · On 30 June 2015 at 01:39, akuster808 <[email protected]> wrote:
Quoted 7 lines

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!
| See also

"/build/linaro/build/build/tmp-glibc/work/x86_64-linux/mariadb-native/5.5.44-r0/build/CMakeFiles/CMakeOutput.log". | WARNING:
/build/linaro/build/build/tmp-glibc/work/x86_64-linux/mariadb-native/5.5.44-r0/temp/run.do_configure.25603:1 exit 1 from
| cmake ${OECMAKE_SITEFILE}
/build/linaro/build/build/tmp-glibc/work/x86_64-linux/mariadb-native/5.5.44-r0/mariadb-5.5.44 -DCMAKE_INSTALL_PREFIX:PATH=/build/linaro/build/build/tmp-glibc/sysroots/x86_64-linux/usr -DCMAKE_INSTALL_BINDIR:PATH=/build/linaro/build/build/tmp-glibc/sysroots/x86_64-linux/usr/bin -DCMAKE_INSTALL_SBINDIR:PATH=/build/linaro/build/build/tmp-glibc/sysroots/x86_64-linux/usr/sbin -DCMAKE_INSTALL_LIBEXECDIR:PATH=/build/linaro/build/build/tmp-glibc/sysroots/x86_64-linux/usr/lib/mariadb -DCMAKE_INSTALL_SYSCONFDIR:PATH=/build/linaro/build/build/tmp-glibc/sysroots/x86_64-linux/etc -DCMAKE_INSTALL_SHAREDSTATEDIR:PATH=/build/linaro/build/build/tmp-glibc/sysroots/x86_64-linux/com -DCMAKE_INSTALL_LOCALSTATEDIR:PATH=/build/linaro/build/build/tmp-glibc/sysroots/x86_64-linux/var -DCMAKE_INSTALL_LIBDIR:PATH=/build/linaro/build/build/tmp-glibc/sysroots/x86_64-linux/usr/lib -DCMAKE_INSTALL_INCLUDEDIR:PATH=/build/linaro/build/build/tmp-glibc/sysroots/x86_64-linux/usr/include -DCMAKE_INSTALL_DATAROOTDIR:PATH=/build/linaro/build/build/tmp-glibc/sysroots/x86_64-linux/usr/share -DCMAKE_INSTALL_SO_NO_EXE=0 -DCMAKE_TOOLCHAIN_FILE=/build/linaro/build/build/tmp-glibc/work/x86_64-linux/mariadb-native/5.5.44-r0/toolchain.cmake -DCMAKE_VERBOSE_MAKEFILE=1 -DWITH_EMBEDDED_SERVER=ON -DWITH_JEMALLOC=no
-DWITHOUT_TOKUDB=TRUE -DCMAKE_DISABLE_FIND_PACKAGE_Boost=TRUE -DGROFF=FALSE
-DNROFF=FALSE -DENABLE_DTRACE=FALSE -DWITH_PIC=ON -DINSTALL_LAYOUT=RPM -DINSTALL_DOCDIR:PATH=/build/linaro/build/build/tmp-glibc/sysroots/x86_64-linux/usr/share/doc/mariadb -DINSTALL_LIBDIR:PATH=lib -DINSTALL_PLUGINDIR:PATH=lib/plugin -DINSTALL_SYSCONFDIR:PATH=/build/linaro/build/build/tmp-glibc/sysroots/x86_64-linux/etc -DMYSQL_DATADIR:PATH=/var/mysql -DCAT_EXECUTABLE=which cat
-DCMAKE_AR:FILEPATH=ar -DLIBEDIT_INTERFACE=FALSE -DWITHOUT_AUTH_PAM=TRUE
-DWITHOUT_VALGRIND=TRUE -Wno-dev
| 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: Task 2056 (/build/linaro/build/meta-openembedded/meta-oe/recipes-support/mysql/mariadb-native_5.5.44.bb, do_configure) failed with exit code '1'

#7 lore raw
In reply to akuster808

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

akuster808 schreef op 30-06-15 om 02:39:

Quoted 8 lines

Hello,

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 ?

I've been looking at this mariadb error and I've made no progress beyond upgrading it to the latest 5.5.x, which shows the same cmake problem

regards,

Koen

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Darwin)
Comment: GPGTools - http://gpgtools.org

iD8DBQFVkmi6MkyGM64RGpERAmrsAJ0bCkH5omgOzpnB0dT8A6amMrYH6gCfU50x ZObEl6kQHbI+QDeiui3GxfU=
=E2ZF
-----END PGP SIGNATURE-----

#3 lore raw
In reply to Koen Kooi
Quoted 7 lines · Koen Kooi

CMake Error at CMakeLists.txt:86 (PROJECT):

|   The CMAKE_C_COMPILER:
|
|     gcc
|
|   is not a full path and was not found in the PATH.

I'm definitely not the cmake maintainer and barely understand cmake files, but the new release needs that to be a full path and not a filename. The recipe/class does this (as demonstrated by it working in oe-core/meta-multimedia) so does the mariadb recipe do something else or use a different class?

Ross

#4 lore raw
In reply to Koen Kooi

Am 30.06.2015 um 11:59 schrieb Koen Kooi:

Quoted 42 lines

Burton, Ross schreef op 30-06-15 om 11:44:

Quoted 9 lines · On 30 June 2015 at 01:39, akuster808 <[email protected]> wrote:
Quoted 7 lines

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++
|
Quoted 8 lines
|   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.

#5 lore raw
Quoted 56 lines

Op 30 jun. 2015, om 12:32 heeft Stefan Herbrechtsmeier <[email protected]> het volgende geschreven:

Am 30.06.2015 um 11:59 schrieb Koen Kooi:

Quoted 42 lines

Burton, Ross schreef op 30-06-15 om 11:44:

Quoted 9 lines · On 30 June 2015 at 01:39, akuster808 <[email protected]> wrote:
Quoted 7 lines

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++
|
Quoted 8 lines
|   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.

Quoted 8 lines

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@thinkpad classes]$ git diff

meta/classes/cmake.bbclass +10 -0
index b0a3972..ead4a26 100644
@@ -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
author
#6 lore raw
In reply to Burton, Ross
Quoted 4 lines · Ross

On 30 June 2015 at 01:39, akuster808 <[email protected] <mailto:[email protected]>> wrote:

Quoted 8 lines

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?

yeah, that would have helped.
- armin

Quoted 2 lines

Ross