All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [meta-oe][PATCH 1/2] mariadb: Use qemu to run cross-compiled binaries
       [not found] <20210706065549.187176-1-zboszor@gmail.com>
@ 2021-07-06  8:37 ` Khem Raj
  2021-07-06  9:56   ` [oe] " Zoltan Boszormenyi
                     ` (2 more replies)
       [not found] ` <20210706065549.187176-2-zboszor@gmail.com>
  1 sibling, 3 replies; 10+ messages in thread
From: Khem Raj @ 2021-07-06  8:37 UTC (permalink / raw)
  To: Zoltán Böszörményi; +Cc: openembeded-devel

On Mon, Jul 5, 2021 at 11:56 PM Zoltán Böszörményi <zboszor@gmail.com> wrote:
>
> This way, mariadb does not depend on mariadb-native anymore.
>

how does build time gets impacted ? you can count that native build is
not needed but still it will be good to know.
qemu dependency also means that qemu usermode has to be supported for
this to work, which maybe troublesome on some
newer or lesser known architectures but perhaps thats a fine compromise perhaps.

> Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
> ---
>  meta-oe/recipes-dbs/mysql/mariadb.inc         | 27 ++++----
>  .../mysql/mariadb/cross-compiling.patch       | 25 -------
>  ...Lists.txt-fix-gen_lex_hash-not-found.patch | 67 -------------------
>  meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb  |  4 +-
>  4 files changed, 15 insertions(+), 108 deletions(-)
>  delete mode 100644 meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch
>  delete mode 100644 meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch
>
> diff --git a/meta-oe/recipes-dbs/mysql/mariadb.inc b/meta-oe/recipes-dbs/mysql/mariadb.inc
> index 18b025070..7b1f537fb 100644
> --- a/meta-oe/recipes-dbs/mysql/mariadb.inc
> +++ b/meta-oe/recipes-dbs/mysql/mariadb.inc
> @@ -12,7 +12,6 @@ SRC_URI = "https://downloads.mariadb.org/interstitial/${BP}/source/${BP}.tar.gz
>             file://mysql-systemd-start \
>             file://configure.cmake-fix-valgrind.patch \
>             file://support-files-CMakeLists.txt-fix-do_populate_sysroot.patch \
> -           file://sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch \
>             file://0001-disable-ucontext-on-musl.patch \
>             file://c11_atomics.patch \
>             file://clang_version_header_conflict.patch \
> @@ -21,7 +20,6 @@ SRC_URI = "https://downloads.mariadb.org/interstitial/${BP}/source/${BP}.tar.gz
>             file://0001-innobase-Define-__NR_futex-if-it-does-not-exist.patch \
>             file://0001-aio_linux-Check-if-syscall-exists-before-using-it.patch \
>             file://sys_futex.patch \
> -           file://cross-compiling.patch \
>             file://ssize_t.patch \
>             file://mm_malloc.patch \
>            "
> @@ -60,8 +58,6 @@ SYSTEMD_AUTO_ENABLE_${PN}-setupdb ?= "enable"
>  ALLOW_EMPTY_${PN}-setupdb ?= "1"
>  FILES_${PN}-setupdb = "${sysconfdir}/init.d/install_db"
>
> -EXTRA_OEMAKE = "'GEN_LEX_HASH=${STAGING_BINDIR_NATIVE}/gen_lex_hash'"
> -
>  PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} setupdb"
>  PACKAGECONFIG_class-native = ""
>  PACKAGECONFIG[pam] = ",-DWITHOUT_AUTH_PAM=TRUE,libpam"
> @@ -95,6 +91,8 @@ EXTRA_OECMAKE = "-DWITH_EMBEDDED_SERVER=ON \
>                   -DCAT_EXECUTABLE=`which cat` \
>                   -DCMAKE_AR:FILEPATH=${AR}"
>
> +EXTRA_OECMAKE_prepend_class-target = "-DCMAKE_CROSSCOMPILING_EMULATOR=${WORKDIR}/qemuwrapper "
> +
>  # With Ninja it fails with:
>  # make: *** No rule to make target `install'.  Stop.
>  OECMAKE_GENERATOR = "Unix Makefiles"
> @@ -117,12 +115,18 @@ do_generate_toolchain_file_append_class-native () {
>      sed -i "/set( CMAKE_SYSTEM_PROCESSOR/d" ${WORKDIR}/toolchain.cmake
>  }
>
> -do_compile_prepend_class-target () {
> -    # These need to be in-tree or make will think they need to be built,
> -    # and since we're cross-compiling that is disabled
> -    cp ${STAGING_BINDIR_NATIVE}/comp_err ${S}/extra
> -    cp ${STAGING_BINDIR_NATIVE}/comp_sql ${S}/scripts
> +do_configure_prepend_class-target () {
> +       # Write out a qemu wrapper that will be used by cmake
> +       # so that it can run target helper binaries through that.
> +       qemu_binary="${@qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST'), [d.expand('${STAGING_DIR_HOST}${libdir}'),d.expand('${STAGING_DIR_HOST}${base_libdir}')])}"
> +       cat > ${WORKDIR}/qemuwrapper << EOF
> +#!/bin/sh
> +$qemu_binary "\$@"
> +EOF
> +       chmod +x ${WORKDIR}/qemuwrapper
> +}
>
> +do_compile_prepend_class-target () {
>      if [ "${@bb.utils.contains('PACKAGECONFIG', 'krb5', 'yes', 'no', d)}" = "no" ]; then
>          if ! [ -e ${B}/include/openssl/kssl.h ] ; then
>              mkdir -p ${B}/include/openssl
> @@ -132,11 +136,6 @@ do_compile_prepend_class-target () {
>              echo "#endif" >>${B}/include/openssl/kssl.h
>          fi
>      fi
> -    # workaround to handle out-of-source build from source package
> -    yacc_files="sql_yacc.hh sql_yacc.cc sql_yacc_ora.hh sql_yacc_ora.cc"
> -    for yacc_file in ${yacc_files}; do
> -        cp ${S}/sql/${yacc_file} ${B}/sql/${yacc_file}
> -    done
>  }
>
>  SYSROOT_PREPROCESS_FUNCS += "mariadb_sysroot_preprocess"
> diff --git a/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch b/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch
> deleted file mode 100644
> index 0f4815b18..000000000
> --- a/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch
> +++ /dev/null
> @@ -1,25 +0,0 @@
> -This is not needed for OE builds
> -
> -building failed since native does not generate import_executables.cmake
> -In fact, our building system will export the needed commands
> -
> -Upstream-Status: Inappropriate [configuration]
> -
> -Signed-off-by: Roy Li <rongqing.li@windriver.com>
> -Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
> -Signed-off-by: Khem Raj <raj.khem@gmail.com>
> -
> ---- a/CMakeLists.txt
> -+++ b/CMakeLists.txt
> -@@ -392,11 +392,6 @@ CHECK_PCRE()
> -
> - CHECK_SYSTEMD()
> -
> --IF(CMAKE_CROSSCOMPILING AND NOT DEFINED CMAKE_CROSSCOMPILING_EMULATOR)
> --  SET(IMPORT_EXECUTABLES "IMPORTFILE-NOTFOUND" CACHE FILEPATH "Path to import_executables.cmake from a native build")
> --  INCLUDE(${IMPORT_EXECUTABLES})
> --ENDIF()
> --
> - #
> - # Setup maintainer mode options. Platform checks are
> - # not run with the warning options as to not perturb fragile checks
> diff --git a/meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch b/meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch
> deleted file mode 100644
> index 4cb044339..000000000
> --- a/meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch
> +++ /dev/null
> @@ -1,67 +0,0 @@
> -From cfce1491827e5a581878b5e166bf4d30e6d90e07 Mon Sep 17 00:00:00 2001
> -From: Mingli Yu <mingli.yu@windriver.com>
> -Date: Thu, 23 Jul 2020 00:08:16 -0700
> -Subject: [PATCH] sql/CMakeLists.txt: fix gen_lex_hash not found
> -
> -Fix the below do_compile issue in cross-compiling env.
> -| make[2]: *** No rule to make target '/build/tmp/work/aarch64-poky-linux/mariadb/10.3.13-r0/mariadb-10.3.13/sql/gen_lex_hash', needed by 'sql/lex_hash.h'.  Stop.
> -| make[2]: *** No rule to make target '/build/tmp/work/aarch64-poky-linux/mariadb/10.3.13-r0/mariadb-10.3.13/sql/gen_lex_token', needed by 'sql/lex_token.h'.  Stop.
> -
> -Upstream-Status: Inappropriate [oe build specific]
> -
> -Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
> ----
> - sql/CMakeLists.txt | 30 ++++++++++++++++++++----------
> - 1 file changed, 20 insertions(+), 10 deletions(-)
> -
> -diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt
> -index 0dc3caa..616017b 100644
> ---- a/sql/CMakeLists.txt
> -+++ b/sql/CMakeLists.txt
> -@@ -52,11 +52,16 @@ ${CMAKE_BINARY_DIR}/sql
> - ${CMAKE_SOURCE_DIR}/tpool
> - )
> -
> --ADD_CUSTOM_COMMAND(
> --  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
> --  COMMAND gen_lex_token > lex_token.h
> --  DEPENDS gen_lex_token
> --)
> -+IF(NOT CMAKE_CROSSCOMPILING)
> -+  ADD_CUSTOM_COMMAND(
> -+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
> -+   COMMAND gen_lex_token > lex_token.h
> -+   DEPENDS gen_lex_token)
> -+ELSE()
> -+  ADD_CUSTOM_COMMAND(
> -+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
> -+   COMMAND gen_lex_token > lex_token.h)
> -+ENDIF()
> -
> - ADD_CUSTOM_COMMAND(
> -   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/sql_yacc_ora.yy
> -@@ -345,11 +350,16 @@ IF(NOT CMAKE_CROSSCOMPILING)
> -   ADD_EXECUTABLE(gen_lex_hash gen_lex_hash.cc)
> - ENDIF()
> -
> --ADD_CUSTOM_COMMAND(
> --  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
> --  COMMAND gen_lex_hash > lex_hash.h
> --  DEPENDS gen_lex_hash
> --)
> -+IF(NOT CMAKE_CROSSCOMPILING)
> -+  ADD_CUSTOM_COMMAND(
> -+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
> -+   COMMAND gen_lex_hash > lex_hash.h
> -+   DEPENDS gen_lex_hash)
> -+ELSE()
> -+  ADD_CUSTOM_COMMAND(
> -+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
> -+   COMMAND gen_lex_hash > lex_hash.h)
> -+ENDIF()
> -
> - MYSQL_ADD_EXECUTABLE(mariadb-tzinfo-to-sql tztime.cc COMPONENT Server)
> - SET_TARGET_PROPERTIES(mariadb-tzinfo-to-sql PROPERTIES COMPILE_FLAGS "-DTZINFO2SQL")
> ---
> -2.17.1
> -
> diff --git a/meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb b/meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb
> index 8ae8241b0..57d7736ea 100644
> --- a/meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb
> +++ b/meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb
> @@ -1,8 +1,8 @@
>  require mariadb.inc
>
> -EXTRA_OECMAKE += "-DSTACK_DIRECTION=-1"
> +inherit qemu
>
> -DEPENDS += "mariadb-native bison-native boost libpcre2 curl openssl ncurses zlib libaio libedit libevent libxml2"
> +DEPENDS += "qemu-native bison-native boost libpcre2 curl openssl ncurses zlib libaio libedit libevent libxml2"
>
>  PROVIDES += "mysql5 libmysqlclient"
>
> --
> 2.31.1
>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [oe] [meta-oe][PATCH 1/2] mariadb: Use qemu to run cross-compiled binaries
  2021-07-06  8:37 ` [meta-oe][PATCH 1/2] mariadb: Use qemu to run cross-compiled binaries Khem Raj
@ 2021-07-06  9:56   ` Zoltan Boszormenyi
  2021-07-06 16:52     ` Khem Raj
  2022-09-22  7:47   ` Yu, Mingli
       [not found]   ` <17171F2CE99AF5CD.13460@lists.openembedded.org>
  2 siblings, 1 reply; 10+ messages in thread
From: Zoltan Boszormenyi @ 2021-07-06  9:56 UTC (permalink / raw)
  To: Khem Raj, Zoltán Böszörményi; +Cc: openembeded-devel

2021. 07. 06. 10:37 keltezéssel, Khem Raj írta:
> On Mon, Jul 5, 2021 at 11:56 PM Zoltán Böszörményi <zboszor@gmail.com> wrote:
>>
>> This way, mariadb does not depend on mariadb-native anymore.
>>
> 
> how does build time gets impacted ? you can count that native build is
> not needed but still it will be good to know.

The build time of mariadb itself does not change significantly,
it's around 15 minutes either way on our 16-core build machine.
Same amount of time for mariadb-native, which is saved now.

> qemu dependency also means that qemu usermode has to be supported for
> this to work, which maybe troublesome on some
> newer or lesser known architectures but perhaps thats a fine compromise perhaps.
> 
>> Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
>> ---
>>   meta-oe/recipes-dbs/mysql/mariadb.inc         | 27 ++++----
>>   .../mysql/mariadb/cross-compiling.patch       | 25 -------
>>   ...Lists.txt-fix-gen_lex_hash-not-found.patch | 67 -------------------
>>   meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb  |  4 +-
>>   4 files changed, 15 insertions(+), 108 deletions(-)
>>   delete mode 100644 meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch
>>   delete mode 100644 meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch
>>
>> diff --git a/meta-oe/recipes-dbs/mysql/mariadb.inc b/meta-oe/recipes-dbs/mysql/mariadb.inc
>> index 18b025070..7b1f537fb 100644
>> --- a/meta-oe/recipes-dbs/mysql/mariadb.inc
>> +++ b/meta-oe/recipes-dbs/mysql/mariadb.inc
>> @@ -12,7 +12,6 @@ SRC_URI = "https://downloads.mariadb.org/interstitial/${BP}/source/${BP}.tar.gz
>>              file://mysql-systemd-start \
>>              file://configure.cmake-fix-valgrind.patch \
>>              file://support-files-CMakeLists.txt-fix-do_populate_sysroot.patch \
>> -           file://sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch \
>>              file://0001-disable-ucontext-on-musl.patch \
>>              file://c11_atomics.patch \
>>              file://clang_version_header_conflict.patch \
>> @@ -21,7 +20,6 @@ SRC_URI = "https://downloads.mariadb.org/interstitial/${BP}/source/${BP}.tar.gz
>>              file://0001-innobase-Define-__NR_futex-if-it-does-not-exist.patch \
>>              file://0001-aio_linux-Check-if-syscall-exists-before-using-it.patch \
>>              file://sys_futex.patch \
>> -           file://cross-compiling.patch \
>>              file://ssize_t.patch \
>>              file://mm_malloc.patch \
>>             "
>> @@ -60,8 +58,6 @@ SYSTEMD_AUTO_ENABLE_${PN}-setupdb ?= "enable"
>>   ALLOW_EMPTY_${PN}-setupdb ?= "1"
>>   FILES_${PN}-setupdb = "${sysconfdir}/init.d/install_db"
>>
>> -EXTRA_OEMAKE = "'GEN_LEX_HASH=${STAGING_BINDIR_NATIVE}/gen_lex_hash'"
>> -
>>   PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} setupdb"
>>   PACKAGECONFIG_class-native = ""
>>   PACKAGECONFIG[pam] = ",-DWITHOUT_AUTH_PAM=TRUE,libpam"
>> @@ -95,6 +91,8 @@ EXTRA_OECMAKE = "-DWITH_EMBEDDED_SERVER=ON \
>>                    -DCAT_EXECUTABLE=`which cat` \
>>                    -DCMAKE_AR:FILEPATH=${AR}"
>>
>> +EXTRA_OECMAKE_prepend_class-target = "-DCMAKE_CROSSCOMPILING_EMULATOR=${WORKDIR}/qemuwrapper "
>> +
>>   # With Ninja it fails with:
>>   # make: *** No rule to make target `install'.  Stop.
>>   OECMAKE_GENERATOR = "Unix Makefiles"
>> @@ -117,12 +115,18 @@ do_generate_toolchain_file_append_class-native () {
>>       sed -i "/set( CMAKE_SYSTEM_PROCESSOR/d" ${WORKDIR}/toolchain.cmake
>>   }
>>
>> -do_compile_prepend_class-target () {
>> -    # These need to be in-tree or make will think they need to be built,
>> -    # and since we're cross-compiling that is disabled
>> -    cp ${STAGING_BINDIR_NATIVE}/comp_err ${S}/extra
>> -    cp ${STAGING_BINDIR_NATIVE}/comp_sql ${S}/scripts
>> +do_configure_prepend_class-target () {
>> +       # Write out a qemu wrapper that will be used by cmake
>> +       # so that it can run target helper binaries through that.
>> +       qemu_binary="${@qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST'), [d.expand('${STAGING_DIR_HOST}${libdir}'),d.expand('${STAGING_DIR_HOST}${base_libdir}')])}"
>> +       cat > ${WORKDIR}/qemuwrapper << EOF
>> +#!/bin/sh
>> +$qemu_binary "\$@"
>> +EOF
>> +       chmod +x ${WORKDIR}/qemuwrapper
>> +}
>>
>> +do_compile_prepend_class-target () {
>>       if [ "${@bb.utils.contains('PACKAGECONFIG', 'krb5', 'yes', 'no', d)}" = "no" ]; then
>>           if ! [ -e ${B}/include/openssl/kssl.h ] ; then
>>               mkdir -p ${B}/include/openssl
>> @@ -132,11 +136,6 @@ do_compile_prepend_class-target () {
>>               echo "#endif" >>${B}/include/openssl/kssl.h
>>           fi
>>       fi
>> -    # workaround to handle out-of-source build from source package
>> -    yacc_files="sql_yacc.hh sql_yacc.cc sql_yacc_ora.hh sql_yacc_ora.cc"
>> -    for yacc_file in ${yacc_files}; do
>> -        cp ${S}/sql/${yacc_file} ${B}/sql/${yacc_file}
>> -    done
>>   }
>>
>>   SYSROOT_PREPROCESS_FUNCS += "mariadb_sysroot_preprocess"
>> diff --git a/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch b/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch
>> deleted file mode 100644
>> index 0f4815b18..000000000
>> --- a/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch
>> +++ /dev/null
>> @@ -1,25 +0,0 @@
>> -This is not needed for OE builds
>> -
>> -building failed since native does not generate import_executables.cmake
>> -In fact, our building system will export the needed commands
>> -
>> -Upstream-Status: Inappropriate [configuration]
>> -
>> -Signed-off-by: Roy Li <rongqing.li@windriver.com>
>> -Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
>> -Signed-off-by: Khem Raj <raj.khem@gmail.com>
>> -
>> ---- a/CMakeLists.txt
>> -+++ b/CMakeLists.txt
>> -@@ -392,11 +392,6 @@ CHECK_PCRE()
>> -
>> - CHECK_SYSTEMD()
>> -
>> --IF(CMAKE_CROSSCOMPILING AND NOT DEFINED CMAKE_CROSSCOMPILING_EMULATOR)
>> --  SET(IMPORT_EXECUTABLES "IMPORTFILE-NOTFOUND" CACHE FILEPATH "Path to import_executables.cmake from a native build")
>> --  INCLUDE(${IMPORT_EXECUTABLES})
>> --ENDIF()
>> --
>> - #
>> - # Setup maintainer mode options. Platform checks are
>> - # not run with the warning options as to not perturb fragile checks
>> diff --git a/meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch b/meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch
>> deleted file mode 100644
>> index 4cb044339..000000000
>> --- a/meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch
>> +++ /dev/null
>> @@ -1,67 +0,0 @@
>> -From cfce1491827e5a581878b5e166bf4d30e6d90e07 Mon Sep 17 00:00:00 2001
>> -From: Mingli Yu <mingli.yu@windriver.com>
>> -Date: Thu, 23 Jul 2020 00:08:16 -0700
>> -Subject: [PATCH] sql/CMakeLists.txt: fix gen_lex_hash not found
>> -
>> -Fix the below do_compile issue in cross-compiling env.
>> -| make[2]: *** No rule to make target '/build/tmp/work/aarch64-poky-linux/mariadb/10.3.13-r0/mariadb-10.3.13/sql/gen_lex_hash', needed by 'sql/lex_hash.h'.  Stop.
>> -| make[2]: *** No rule to make target '/build/tmp/work/aarch64-poky-linux/mariadb/10.3.13-r0/mariadb-10.3.13/sql/gen_lex_token', needed by 'sql/lex_token.h'.  Stop.
>> -
>> -Upstream-Status: Inappropriate [oe build specific]
>> -
>> -Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
>> ----
>> - sql/CMakeLists.txt | 30 ++++++++++++++++++++----------
>> - 1 file changed, 20 insertions(+), 10 deletions(-)
>> -
>> -diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt
>> -index 0dc3caa..616017b 100644
>> ---- a/sql/CMakeLists.txt
>> -+++ b/sql/CMakeLists.txt
>> -@@ -52,11 +52,16 @@ ${CMAKE_BINARY_DIR}/sql
>> - ${CMAKE_SOURCE_DIR}/tpool
>> - )
>> -
>> --ADD_CUSTOM_COMMAND(
>> --  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
>> --  COMMAND gen_lex_token > lex_token.h
>> --  DEPENDS gen_lex_token
>> --)
>> -+IF(NOT CMAKE_CROSSCOMPILING)
>> -+  ADD_CUSTOM_COMMAND(
>> -+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
>> -+   COMMAND gen_lex_token > lex_token.h
>> -+   DEPENDS gen_lex_token)
>> -+ELSE()
>> -+  ADD_CUSTOM_COMMAND(
>> -+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
>> -+   COMMAND gen_lex_token > lex_token.h)
>> -+ENDIF()
>> -
>> - ADD_CUSTOM_COMMAND(
>> -   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/sql_yacc_ora.yy
>> -@@ -345,11 +350,16 @@ IF(NOT CMAKE_CROSSCOMPILING)
>> -   ADD_EXECUTABLE(gen_lex_hash gen_lex_hash.cc)
>> - ENDIF()
>> -
>> --ADD_CUSTOM_COMMAND(
>> --  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
>> --  COMMAND gen_lex_hash > lex_hash.h
>> --  DEPENDS gen_lex_hash
>> --)
>> -+IF(NOT CMAKE_CROSSCOMPILING)
>> -+  ADD_CUSTOM_COMMAND(
>> -+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
>> -+   COMMAND gen_lex_hash > lex_hash.h
>> -+   DEPENDS gen_lex_hash)
>> -+ELSE()
>> -+  ADD_CUSTOM_COMMAND(
>> -+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
>> -+   COMMAND gen_lex_hash > lex_hash.h)
>> -+ENDIF()
>> -
>> - MYSQL_ADD_EXECUTABLE(mariadb-tzinfo-to-sql tztime.cc COMPONENT Server)
>> - SET_TARGET_PROPERTIES(mariadb-tzinfo-to-sql PROPERTIES COMPILE_FLAGS "-DTZINFO2SQL")
>> ---
>> -2.17.1
>> -
>> diff --git a/meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb b/meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb
>> index 8ae8241b0..57d7736ea 100644
>> --- a/meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb
>> +++ b/meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb
>> @@ -1,8 +1,8 @@
>>   require mariadb.inc
>>
>> -EXTRA_OECMAKE += "-DSTACK_DIRECTION=-1"
>> +inherit qemu
>>
>> -DEPENDS += "mariadb-native bison-native boost libpcre2 curl openssl ncurses zlib libaio libedit libevent libxml2"
>> +DEPENDS += "qemu-native bison-native boost libpcre2 curl openssl ncurses zlib libaio libedit libevent libxml2"
>>
>>   PROVIDES += "mysql5 libmysqlclient"
>>
>> --
>> 2.31.1
>>
>>
>>
>> 
>>


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [oe] [meta-oe][PATCH 1/2] mariadb: Use qemu to run cross-compiled binaries
  2021-07-06  9:56   ` [oe] " Zoltan Boszormenyi
@ 2021-07-06 16:52     ` Khem Raj
  0 siblings, 0 replies; 10+ messages in thread
From: Khem Raj @ 2021-07-06 16:52 UTC (permalink / raw)
  To: Böszörményi Zoltán
  Cc: Zoltán Böszörményi, openembeded-devel

On Tue, Jul 6, 2021 at 2:56 AM Böszörményi Zoltán <zboszor@pr.hu> wrote:
>
> 2021. 07. 06. 10:37 keltezéssel, Khem Raj írta:
> > On Mon, Jul 5, 2021 at 11:56 PM Zoltán Böszörményi <zboszor@gmail.com> wrote:
> >>
> >> This way, mariadb does not depend on mariadb-native anymore.
> >>
> >
> > how does build time gets impacted ? you can count that native build is
> > not needed but still it will be good to know.
>
> The build time of mariadb itself does not change significantly,
> it's around 15 minutes either way on our 16-core build machine.
> Same amount of time for mariadb-native, which is saved now.
>

sounds good. poco is perhaps only other usecase for mariadb-native

> > qemu dependency also means that qemu usermode has to be supported for
> > this to work, which maybe troublesome on some
> > newer or lesser known architectures but perhaps thats a fine compromise perhaps.
> >
> >> Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
> >> ---
> >>   meta-oe/recipes-dbs/mysql/mariadb.inc         | 27 ++++----
> >>   .../mysql/mariadb/cross-compiling.patch       | 25 -------
> >>   ...Lists.txt-fix-gen_lex_hash-not-found.patch | 67 -------------------
> >>   meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb  |  4 +-
> >>   4 files changed, 15 insertions(+), 108 deletions(-)
> >>   delete mode 100644 meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch
> >>   delete mode 100644 meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch
> >>
> >> diff --git a/meta-oe/recipes-dbs/mysql/mariadb.inc b/meta-oe/recipes-dbs/mysql/mariadb.inc
> >> index 18b025070..7b1f537fb 100644
> >> --- a/meta-oe/recipes-dbs/mysql/mariadb.inc
> >> +++ b/meta-oe/recipes-dbs/mysql/mariadb.inc
> >> @@ -12,7 +12,6 @@ SRC_URI = "https://downloads.mariadb.org/interstitial/${BP}/source/${BP}.tar.gz
> >>              file://mysql-systemd-start \
> >>              file://configure.cmake-fix-valgrind.patch \
> >>              file://support-files-CMakeLists.txt-fix-do_populate_sysroot.patch \
> >> -           file://sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch \
> >>              file://0001-disable-ucontext-on-musl.patch \
> >>              file://c11_atomics.patch \
> >>              file://clang_version_header_conflict.patch \
> >> @@ -21,7 +20,6 @@ SRC_URI = "https://downloads.mariadb.org/interstitial/${BP}/source/${BP}.tar.gz
> >>              file://0001-innobase-Define-__NR_futex-if-it-does-not-exist.patch \
> >>              file://0001-aio_linux-Check-if-syscall-exists-before-using-it.patch \
> >>              file://sys_futex.patch \
> >> -           file://cross-compiling.patch \
> >>              file://ssize_t.patch \
> >>              file://mm_malloc.patch \
> >>             "
> >> @@ -60,8 +58,6 @@ SYSTEMD_AUTO_ENABLE_${PN}-setupdb ?= "enable"
> >>   ALLOW_EMPTY_${PN}-setupdb ?= "1"
> >>   FILES_${PN}-setupdb = "${sysconfdir}/init.d/install_db"
> >>
> >> -EXTRA_OEMAKE = "'GEN_LEX_HASH=${STAGING_BINDIR_NATIVE}/gen_lex_hash'"
> >> -
> >>   PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} setupdb"
> >>   PACKAGECONFIG_class-native = ""
> >>   PACKAGECONFIG[pam] = ",-DWITHOUT_AUTH_PAM=TRUE,libpam"
> >> @@ -95,6 +91,8 @@ EXTRA_OECMAKE = "-DWITH_EMBEDDED_SERVER=ON \
> >>                    -DCAT_EXECUTABLE=`which cat` \
> >>                    -DCMAKE_AR:FILEPATH=${AR}"
> >>
> >> +EXTRA_OECMAKE_prepend_class-target = "-DCMAKE_CROSSCOMPILING_EMULATOR=${WORKDIR}/qemuwrapper "
> >> +
> >>   # With Ninja it fails with:
> >>   # make: *** No rule to make target `install'.  Stop.
> >>   OECMAKE_GENERATOR = "Unix Makefiles"
> >> @@ -117,12 +115,18 @@ do_generate_toolchain_file_append_class-native () {
> >>       sed -i "/set( CMAKE_SYSTEM_PROCESSOR/d" ${WORKDIR}/toolchain.cmake
> >>   }
> >>
> >> -do_compile_prepend_class-target () {
> >> -    # These need to be in-tree or make will think they need to be built,
> >> -    # and since we're cross-compiling that is disabled
> >> -    cp ${STAGING_BINDIR_NATIVE}/comp_err ${S}/extra
> >> -    cp ${STAGING_BINDIR_NATIVE}/comp_sql ${S}/scripts
> >> +do_configure_prepend_class-target () {
> >> +       # Write out a qemu wrapper that will be used by cmake
> >> +       # so that it can run target helper binaries through that.
> >> +       qemu_binary="${@qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST'), [d.expand('${STAGING_DIR_HOST}${libdir}'),d.expand('${STAGING_DIR_HOST}${base_libdir}')])}"
> >> +       cat > ${WORKDIR}/qemuwrapper << EOF
> >> +#!/bin/sh
> >> +$qemu_binary "\$@"
> >> +EOF
> >> +       chmod +x ${WORKDIR}/qemuwrapper
> >> +}
> >>
> >> +do_compile_prepend_class-target () {
> >>       if [ "${@bb.utils.contains('PACKAGECONFIG', 'krb5', 'yes', 'no', d)}" = "no" ]; then
> >>           if ! [ -e ${B}/include/openssl/kssl.h ] ; then
> >>               mkdir -p ${B}/include/openssl
> >> @@ -132,11 +136,6 @@ do_compile_prepend_class-target () {
> >>               echo "#endif" >>${B}/include/openssl/kssl.h
> >>           fi
> >>       fi
> >> -    # workaround to handle out-of-source build from source package
> >> -    yacc_files="sql_yacc.hh sql_yacc.cc sql_yacc_ora.hh sql_yacc_ora.cc"
> >> -    for yacc_file in ${yacc_files}; do
> >> -        cp ${S}/sql/${yacc_file} ${B}/sql/${yacc_file}
> >> -    done
> >>   }
> >>
> >>   SYSROOT_PREPROCESS_FUNCS += "mariadb_sysroot_preprocess"
> >> diff --git a/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch b/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch
> >> deleted file mode 100644
> >> index 0f4815b18..000000000
> >> --- a/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch
> >> +++ /dev/null
> >> @@ -1,25 +0,0 @@
> >> -This is not needed for OE builds
> >> -
> >> -building failed since native does not generate import_executables.cmake
> >> -In fact, our building system will export the needed commands
> >> -
> >> -Upstream-Status: Inappropriate [configuration]
> >> -
> >> -Signed-off-by: Roy Li <rongqing.li@windriver.com>
> >> -Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
> >> -Signed-off-by: Khem Raj <raj.khem@gmail.com>
> >> -
> >> ---- a/CMakeLists.txt
> >> -+++ b/CMakeLists.txt
> >> -@@ -392,11 +392,6 @@ CHECK_PCRE()
> >> -
> >> - CHECK_SYSTEMD()
> >> -
> >> --IF(CMAKE_CROSSCOMPILING AND NOT DEFINED CMAKE_CROSSCOMPILING_EMULATOR)
> >> --  SET(IMPORT_EXECUTABLES "IMPORTFILE-NOTFOUND" CACHE FILEPATH "Path to import_executables.cmake from a native build")
> >> --  INCLUDE(${IMPORT_EXECUTABLES})
> >> --ENDIF()
> >> --
> >> - #
> >> - # Setup maintainer mode options. Platform checks are
> >> - # not run with the warning options as to not perturb fragile checks
> >> diff --git a/meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch b/meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch
> >> deleted file mode 100644
> >> index 4cb044339..000000000
> >> --- a/meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch
> >> +++ /dev/null
> >> @@ -1,67 +0,0 @@
> >> -From cfce1491827e5a581878b5e166bf4d30e6d90e07 Mon Sep 17 00:00:00 2001
> >> -From: Mingli Yu <mingli.yu@windriver.com>
> >> -Date: Thu, 23 Jul 2020 00:08:16 -0700
> >> -Subject: [PATCH] sql/CMakeLists.txt: fix gen_lex_hash not found
> >> -
> >> -Fix the below do_compile issue in cross-compiling env.
> >> -| make[2]: *** No rule to make target '/build/tmp/work/aarch64-poky-linux/mariadb/10.3.13-r0/mariadb-10.3.13/sql/gen_lex_hash', needed by 'sql/lex_hash.h'.  Stop.
> >> -| make[2]: *** No rule to make target '/build/tmp/work/aarch64-poky-linux/mariadb/10.3.13-r0/mariadb-10.3.13/sql/gen_lex_token', needed by 'sql/lex_token.h'.  Stop.
> >> -
> >> -Upstream-Status: Inappropriate [oe build specific]
> >> -
> >> -Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
> >> ----
> >> - sql/CMakeLists.txt | 30 ++++++++++++++++++++----------
> >> - 1 file changed, 20 insertions(+), 10 deletions(-)
> >> -
> >> -diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt
> >> -index 0dc3caa..616017b 100644
> >> ---- a/sql/CMakeLists.txt
> >> -+++ b/sql/CMakeLists.txt
> >> -@@ -52,11 +52,16 @@ ${CMAKE_BINARY_DIR}/sql
> >> - ${CMAKE_SOURCE_DIR}/tpool
> >> - )
> >> -
> >> --ADD_CUSTOM_COMMAND(
> >> --  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
> >> --  COMMAND gen_lex_token > lex_token.h
> >> --  DEPENDS gen_lex_token
> >> --)
> >> -+IF(NOT CMAKE_CROSSCOMPILING)
> >> -+  ADD_CUSTOM_COMMAND(
> >> -+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
> >> -+   COMMAND gen_lex_token > lex_token.h
> >> -+   DEPENDS gen_lex_token)
> >> -+ELSE()
> >> -+  ADD_CUSTOM_COMMAND(
> >> -+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
> >> -+   COMMAND gen_lex_token > lex_token.h)
> >> -+ENDIF()
> >> -
> >> - ADD_CUSTOM_COMMAND(
> >> -   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/sql_yacc_ora.yy
> >> -@@ -345,11 +350,16 @@ IF(NOT CMAKE_CROSSCOMPILING)
> >> -   ADD_EXECUTABLE(gen_lex_hash gen_lex_hash.cc)
> >> - ENDIF()
> >> -
> >> --ADD_CUSTOM_COMMAND(
> >> --  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
> >> --  COMMAND gen_lex_hash > lex_hash.h
> >> --  DEPENDS gen_lex_hash
> >> --)
> >> -+IF(NOT CMAKE_CROSSCOMPILING)
> >> -+  ADD_CUSTOM_COMMAND(
> >> -+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
> >> -+   COMMAND gen_lex_hash > lex_hash.h
> >> -+   DEPENDS gen_lex_hash)
> >> -+ELSE()
> >> -+  ADD_CUSTOM_COMMAND(
> >> -+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
> >> -+   COMMAND gen_lex_hash > lex_hash.h)
> >> -+ENDIF()
> >> -
> >> - MYSQL_ADD_EXECUTABLE(mariadb-tzinfo-to-sql tztime.cc COMPONENT Server)
> >> - SET_TARGET_PROPERTIES(mariadb-tzinfo-to-sql PROPERTIES COMPILE_FLAGS "-DTZINFO2SQL")
> >> ---
> >> -2.17.1
> >> -
> >> diff --git a/meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb b/meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb
> >> index 8ae8241b0..57d7736ea 100644
> >> --- a/meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb
> >> +++ b/meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb
> >> @@ -1,8 +1,8 @@
> >>   require mariadb.inc
> >>
> >> -EXTRA_OECMAKE += "-DSTACK_DIRECTION=-1"
> >> +inherit qemu
> >>
> >> -DEPENDS += "mariadb-native bison-native boost libpcre2 curl openssl ncurses zlib libaio libedit libevent libxml2"
> >> +DEPENDS += "qemu-native bison-native boost libpcre2 curl openssl ncurses zlib libaio libedit libevent libxml2"
> >>
> >>   PROVIDES += "mysql5 libmysqlclient"
> >>
> >> --
> >> 2.31.1
> >>
> >>
> >>
> >> 
> >>
>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [meta-oe][PATCH 2/2] mariadb: Upgrade to 10.5.11
       [not found] ` <20210706065549.187176-2-zboszor@gmail.com>
@ 2021-07-07 18:05   ` Khem Raj
  0 siblings, 0 replies; 10+ messages in thread
From: Khem Raj @ 2021-07-07 18:05 UTC (permalink / raw)
  To: Zoltán Böszörményi; +Cc: openembeded-devel

it also needed musl patch refresh, since it was straight forward I
took care if it this time. Revised patch is in master-next

On Mon, Jul 5, 2021 at 11:56 PM Zoltán Böszörményi <zboszor@gmail.com> wrote:
>
> Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
> ---
>  .../{mariadb-native_10.5.10.bb => mariadb-native_10.5.11.bb}    | 0
>  meta-oe/recipes-dbs/mysql/mariadb.inc                           | 2 +-
>  .../mysql/{mariadb_10.5.10.bb => mariadb_10.5.11.bb}            | 0
>  3 files changed, 1 insertion(+), 1 deletion(-)
>  rename meta-oe/recipes-dbs/mysql/{mariadb-native_10.5.10.bb => mariadb-native_10.5.11.bb} (100%)
>  rename meta-oe/recipes-dbs/mysql/{mariadb_10.5.10.bb => mariadb_10.5.11.bb} (100%)
>
> diff --git a/meta-oe/recipes-dbs/mysql/mariadb-native_10.5.10.bb b/meta-oe/recipes-dbs/mysql/mariadb-native_10.5.11.bb
> similarity index 100%
> rename from meta-oe/recipes-dbs/mysql/mariadb-native_10.5.10.bb
> rename to meta-oe/recipes-dbs/mysql/mariadb-native_10.5.11.bb
> diff --git a/meta-oe/recipes-dbs/mysql/mariadb.inc b/meta-oe/recipes-dbs/mysql/mariadb.inc
> index 7b1f537fb..71978740b 100644
> --- a/meta-oe/recipes-dbs/mysql/mariadb.inc
> +++ b/meta-oe/recipes-dbs/mysql/mariadb.inc
> @@ -25,7 +25,7 @@ SRC_URI = "https://downloads.mariadb.org/interstitial/${BP}/source/${BP}.tar.gz
>            "
>  SRC_URI_append_libc-musl = " file://ppc-remove-glibc-dep.patch"
>
> -SRC_URI[sha256sum] = "a5ff32f9fcaaf26bf5cba94accc7b246d2d5eb75710d027e40122df6bac0babb"
> +SRC_URI[sha256sum] = "761053605fe30ce393f324852117990350840a93b3e6305ef4d2f8c8305cc47a"
>
>  UPSTREAM_CHECK_URI = "https://github.com/MariaDB/server/releases"
>
> diff --git a/meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb b/meta-oe/recipes-dbs/mysql/mariadb_10.5.11.bb
> similarity index 100%
> rename from meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb
> rename to meta-oe/recipes-dbs/mysql/mariadb_10.5.11.bb
> --
> 2.31.1
>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [oe] [meta-oe][PATCH 1/2] mariadb: Use qemu to run cross-compiled binaries
  2021-07-06  8:37 ` [meta-oe][PATCH 1/2] mariadb: Use qemu to run cross-compiled binaries Khem Raj
  2021-07-06  9:56   ` [oe] " Zoltan Boszormenyi
@ 2022-09-22  7:47   ` Yu, Mingli
  2022-09-22 11:25     ` Ross Burton
       [not found]   ` <17171F2CE99AF5CD.13460@lists.openembedded.org>
  2 siblings, 1 reply; 10+ messages in thread
From: Yu, Mingli @ 2022-09-22  7:47 UTC (permalink / raw)
  To: Khem Raj, Zoltán Böszörményi; +Cc: openembeded-devel

Failed to build for amd64:
| make[2]: Leaving directory 
'/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build'
| qemu: uncaught target signal 4 (Illegal instruction) - core dumped
| [  4%] Built target tpool
| [  8%] Built target skip_all-t
| [  4%] Built target no_plan-t
| [  8%] Built target wsrep-lib
| [  8%] Built target ref10
| [  8%] Built target mariadb_obj
| make  -f libmariadb/libmariadb/CMakeFiles/mariadbclient.dir/build.make 
libmariadb/libmariadb/CMakeFiles/mariadbclient.dir/depend
| make  -f libmariadb/libmariadb/CMakeFiles/libmariadb.dir/build.make 
libmariadb/libmariadb/CMakeFiles/libmariadb.dir/depend
| make[2]: Entering directory 
'/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build'
| cd /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build && 
/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/recipe-sysroot-native/usr/bin/cmake 
-E cmake_depends "Unix Makefiles" 
/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/mariadb-10.7.4 
/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/mariadb-10.7.4/libmariadb/libmariadb 
/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build 
/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build/libmariadb/libmariadb 
/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build/libmariadb/libmariadb/CMakeFiles/mariadbclient.dir/DependInfo.cmake 
--color=
| make[2]: Leaving directory 
'/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build'
| make  -f libmariadb/libmariadb/CMakeFiles/mariadbclient.dir/build.make 
libmariadb/libmariadb/CMakeFiles/mariadbclient.dir/build
| Illegal instruction (core dumped)
| make[2]: *** [sql/CMakeFiles/GenServerSource.dir/build.make:76: 
sql/lex_hash.h] Error 132
| make[2]: *** Deleting file 'sql/lex_hash.h'
| make[2]: Entering directory 
'/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build'
| [  8%] Linking C static library libmariadbclient.a
| cd 
/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build/libmariadb/libmariadb 
&& 
/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/recipe-sysroot-native/usr/bin/cmake 
-P CMakeFiles/mariadbclient.dir/cmake_clean_target.cmake
| Illegal instruction (core dumped)
| Illegal instruction (core dumped)
| make[2]: *** [scripts/CMakeFiles/GenFixPrivs.dir/build.make:78: 
scripts/mysql_fix_privilege_tables_sql.c] Error 132

Thanks,

On 7/6/21 16:37, Khem Raj wrote:
> [Please note: This e-mail is from an EXTERNAL e-mail address]
> 
> On Mon, Jul 5, 2021 at 11:56 PM Zoltán Böszörményi <zboszor@gmail.com> wrote:
>>
>> This way, mariadb does not depend on mariadb-native anymore.
>>
> 
> how does build time gets impacted ? you can count that native build is
> not needed but still it will be good to know.
> qemu dependency also means that qemu usermode has to be supported for
> this to work, which maybe troublesome on some
> newer or lesser known architectures but perhaps thats a fine compromise perhaps.
> 
>> Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
>> ---
>>   meta-oe/recipes-dbs/mysql/mariadb.inc         | 27 ++++----
>>   .../mysql/mariadb/cross-compiling.patch       | 25 -------
>>   ...Lists.txt-fix-gen_lex_hash-not-found.patch | 67 -------------------
>>   meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb  |  4 +-
>>   4 files changed, 15 insertions(+), 108 deletions(-)
>>   delete mode 100644 meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch
>>   delete mode 100644 meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch
>>
>> diff --git a/meta-oe/recipes-dbs/mysql/mariadb.inc b/meta-oe/recipes-dbs/mysql/mariadb.inc
>> index 18b025070..7b1f537fb 100644
>> --- a/meta-oe/recipes-dbs/mysql/mariadb.inc
>> +++ b/meta-oe/recipes-dbs/mysql/mariadb.inc
>> @@ -12,7 +12,6 @@ SRC_URI = "https://downloads.mariadb.org/interstitial/${BP}/source/${BP}.tar.gz
>>              file://mysql-systemd-start \
>>              file://configure.cmake-fix-valgrind.patch \
>>              file://support-files-CMakeLists.txt-fix-do_populate_sysroot.patch \
>> -           file://sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch \
>>              file://0001-disable-ucontext-on-musl.patch \
>>              file://c11_atomics.patch \
>>              file://clang_version_header_conflict.patch \
>> @@ -21,7 +20,6 @@ SRC_URI = "https://downloads.mariadb.org/interstitial/${BP}/source/${BP}.tar.gz
>>              file://0001-innobase-Define-__NR_futex-if-it-does-not-exist.patch \
>>              file://0001-aio_linux-Check-if-syscall-exists-before-using-it.patch \
>>              file://sys_futex.patch \
>> -           file://cross-compiling.patch \
>>              file://ssize_t.patch \
>>              file://mm_malloc.patch \
>>             "
>> @@ -60,8 +58,6 @@ SYSTEMD_AUTO_ENABLE_${PN}-setupdb ?= "enable"
>>   ALLOW_EMPTY_${PN}-setupdb ?= "1"
>>   FILES_${PN}-setupdb = "${sysconfdir}/init.d/install_db"
>>
>> -EXTRA_OEMAKE = "'GEN_LEX_HASH=${STAGING_BINDIR_NATIVE}/gen_lex_hash'"
>> -
>>   PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} setupdb"
>>   PACKAGECONFIG_class-native = ""
>>   PACKAGECONFIG[pam] = ",-DWITHOUT_AUTH_PAM=TRUE,libpam"
>> @@ -95,6 +91,8 @@ EXTRA_OECMAKE = "-DWITH_EMBEDDED_SERVER=ON \
>>                    -DCAT_EXECUTABLE=`which cat` \
>>                    -DCMAKE_AR:FILEPATH=${AR}"
>>
>> +EXTRA_OECMAKE_prepend_class-target = "-DCMAKE_CROSSCOMPILING_EMULATOR=${WORKDIR}/qemuwrapper "
>> +
>>   # With Ninja it fails with:
>>   # make: *** No rule to make target `install'.  Stop.
>>   OECMAKE_GENERATOR = "Unix Makefiles"
>> @@ -117,12 +115,18 @@ do_generate_toolchain_file_append_class-native () {
>>       sed -i "/set( CMAKE_SYSTEM_PROCESSOR/d" ${WORKDIR}/toolchain.cmake
>>   }
>>
>> -do_compile_prepend_class-target () {
>> -    # These need to be in-tree or make will think they need to be built,
>> -    # and since we're cross-compiling that is disabled
>> -    cp ${STAGING_BINDIR_NATIVE}/comp_err ${S}/extra
>> -    cp ${STAGING_BINDIR_NATIVE}/comp_sql ${S}/scripts
>> +do_configure_prepend_class-target () {
>> +       # Write out a qemu wrapper that will be used by cmake
>> +       # so that it can run target helper binaries through that.
>> +       qemu_binary="${@qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST'), [d.expand('${STAGING_DIR_HOST}${libdir}'),d.expand('${STAGING_DIR_HOST}${base_libdir}')])}"
>> +       cat > ${WORKDIR}/qemuwrapper << EOF
>> +#!/bin/sh
>> +$qemu_binary "\$@"
>> +EOF
>> +       chmod +x ${WORKDIR}/qemuwrapper
>> +}
>>
>> +do_compile_prepend_class-target () {
>>       if [ "${@bb.utils.contains('PACKAGECONFIG', 'krb5', 'yes', 'no', d)}" = "no" ]; then
>>           if ! [ -e ${B}/include/openssl/kssl.h ] ; then
>>               mkdir -p ${B}/include/openssl
>> @@ -132,11 +136,6 @@ do_compile_prepend_class-target () {
>>               echo "#endif" >>${B}/include/openssl/kssl.h
>>           fi
>>       fi
>> -    # workaround to handle out-of-source build from source package
>> -    yacc_files="sql_yacc.hh sql_yacc.cc sql_yacc_ora.hh sql_yacc_ora.cc"
>> -    for yacc_file in ${yacc_files}; do
>> -        cp ${S}/sql/${yacc_file} ${B}/sql/${yacc_file}
>> -    done
>>   }
>>
>>   SYSROOT_PREPROCESS_FUNCS += "mariadb_sysroot_preprocess"
>> diff --git a/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch b/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch
>> deleted file mode 100644
>> index 0f4815b18..000000000
>> --- a/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch
>> +++ /dev/null
>> @@ -1,25 +0,0 @@
>> -This is not needed for OE builds
>> -
>> -building failed since native does not generate import_executables.cmake
>> -In fact, our building system will export the needed commands
>> -
>> -Upstream-Status: Inappropriate [configuration]
>> -
>> -Signed-off-by: Roy Li <rongqing.li@windriver.com>
>> -Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
>> -Signed-off-by: Khem Raj <raj.khem@gmail.com>
>> -
>> ---- a/CMakeLists.txt
>> -+++ b/CMakeLists.txt
>> -@@ -392,11 +392,6 @@ CHECK_PCRE()
>> -
>> - CHECK_SYSTEMD()
>> -
>> --IF(CMAKE_CROSSCOMPILING AND NOT DEFINED CMAKE_CROSSCOMPILING_EMULATOR)
>> --  SET(IMPORT_EXECUTABLES "IMPORTFILE-NOTFOUND" CACHE FILEPATH "Path to import_executables.cmake from a native build")
>> --  INCLUDE(${IMPORT_EXECUTABLES})
>> --ENDIF()
>> --
>> - #
>> - # Setup maintainer mode options. Platform checks are
>> - # not run with the warning options as to not perturb fragile checks
>> diff --git a/meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch b/meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch
>> deleted file mode 100644
>> index 4cb044339..000000000
>> --- a/meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch
>> +++ /dev/null
>> @@ -1,67 +0,0 @@
>> -From cfce1491827e5a581878b5e166bf4d30e6d90e07 Mon Sep 17 00:00:00 2001
>> -From: Mingli Yu <mingli.yu@windriver.com>
>> -Date: Thu, 23 Jul 2020 00:08:16 -0700
>> -Subject: [PATCH] sql/CMakeLists.txt: fix gen_lex_hash not found
>> -
>> -Fix the below do_compile issue in cross-compiling env.
>> -| make[2]: *** No rule to make target '/build/tmp/work/aarch64-poky-linux/mariadb/10.3.13-r0/mariadb-10.3.13/sql/gen_lex_hash', needed by 'sql/lex_hash.h'.  Stop.
>> -| make[2]: *** No rule to make target '/build/tmp/work/aarch64-poky-linux/mariadb/10.3.13-r0/mariadb-10.3.13/sql/gen_lex_token', needed by 'sql/lex_token.h'.  Stop.
>> -
>> -Upstream-Status: Inappropriate [oe build specific]
>> -
>> -Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
>> ----
>> - sql/CMakeLists.txt | 30 ++++++++++++++++++++----------
>> - 1 file changed, 20 insertions(+), 10 deletions(-)
>> -
>> -diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt
>> -index 0dc3caa..616017b 100644
>> ---- a/sql/CMakeLists.txt
>> -+++ b/sql/CMakeLists.txt
>> -@@ -52,11 +52,16 @@ ${CMAKE_BINARY_DIR}/sql
>> - ${CMAKE_SOURCE_DIR}/tpool
>> - )
>> -
>> --ADD_CUSTOM_COMMAND(
>> --  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
>> --  COMMAND gen_lex_token > lex_token.h
>> --  DEPENDS gen_lex_token
>> --)
>> -+IF(NOT CMAKE_CROSSCOMPILING)
>> -+  ADD_CUSTOM_COMMAND(
>> -+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
>> -+   COMMAND gen_lex_token > lex_token.h
>> -+   DEPENDS gen_lex_token)
>> -+ELSE()
>> -+  ADD_CUSTOM_COMMAND(
>> -+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
>> -+   COMMAND gen_lex_token > lex_token.h)
>> -+ENDIF()
>> -
>> - ADD_CUSTOM_COMMAND(
>> -   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/sql_yacc_ora.yy
>> -@@ -345,11 +350,16 @@ IF(NOT CMAKE_CROSSCOMPILING)
>> -   ADD_EXECUTABLE(gen_lex_hash gen_lex_hash.cc)
>> - ENDIF()
>> -
>> --ADD_CUSTOM_COMMAND(
>> --  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
>> --  COMMAND gen_lex_hash > lex_hash.h
>> --  DEPENDS gen_lex_hash
>> --)
>> -+IF(NOT CMAKE_CROSSCOMPILING)
>> -+  ADD_CUSTOM_COMMAND(
>> -+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
>> -+   COMMAND gen_lex_hash > lex_hash.h
>> -+   DEPENDS gen_lex_hash)
>> -+ELSE()
>> -+  ADD_CUSTOM_COMMAND(
>> -+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
>> -+   COMMAND gen_lex_hash > lex_hash.h)
>> -+ENDIF()
>> -
>> - MYSQL_ADD_EXECUTABLE(mariadb-tzinfo-to-sql tztime.cc COMPONENT Server)
>> - SET_TARGET_PROPERTIES(mariadb-tzinfo-to-sql PROPERTIES COMPILE_FLAGS "-DTZINFO2SQL")
>> ---
>> -2.17.1
>> -
>> diff --git a/meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb b/meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb
>> index 8ae8241b0..57d7736ea 100644
>> --- a/meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb
>> +++ b/meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb
>> @@ -1,8 +1,8 @@
>>   require mariadb.inc
>>
>> -EXTRA_OECMAKE += "-DSTACK_DIRECTION=-1"
>> +inherit qemu
>>
>> -DEPENDS += "mariadb-native bison-native boost libpcre2 curl openssl ncurses zlib libaio libedit libevent libxml2"
>> +DEPENDS += "qemu-native bison-native boost libpcre2 curl openssl ncurses zlib libaio libedit libevent libxml2"
>>
>>   PROVIDES += "mysql5 libmysqlclient"
>>
>> --
>> 2.31.1
>>
>>
>>
>> -=-=-=-=-=-=-=-=-=-=-=-
>> Links: You receive all messages sent to this group.
>> View/Reply Online (#92109): https://lists.openembedded.org/g/openembedded-devel/message/92109
>> Mute This Topic: https://lists.openembedded.org/mt/84015256/3618448
>> Group Owner: openembedded-devel+owner@lists.openembedded.org
>> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [mingli.yu@windriver.com]
>> -=-=-=-=-=-=-=-=-=-=-=-
>>


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [oe] [meta-oe][PATCH 1/2] mariadb: Use qemu to run cross-compiled binaries
       [not found]   ` <17171F2CE99AF5CD.13460@lists.openembedded.org>
@ 2022-09-22  9:14     ` Yu, Mingli
  0 siblings, 0 replies; 10+ messages in thread
From: Yu, Mingli @ 2022-09-22  9:14 UTC (permalink / raw)
  To: Khem Raj, Zoltán Böszörményi; +Cc: openembeded-devel

# bitbake -cdevshell mariadb
# pwd
/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/mariadb-10.7.4
# cd 
/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build/scripts && 
/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/qemuwrapper 
/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build/scripts/comp_sql 
mysql_fix_privilege_tables mysql_fix_privilege_tables.sql 
mysql_fix_privilege_tables_sql.c
qemu: uncaught target signal 4 (Illegal instruction) - core dumped
Illegal instruction (core dumped)


Thanks,

On 9/22/22 15:47, Yu, Mingli wrote:
> Failed to build for amd64:
> | make[2]: Leaving directory 
> '/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build'
> | qemu: uncaught target signal 4 (Illegal instruction) - core dumped
> | [  4%] Built target tpool
> | [  8%] Built target skip_all-t
> | [  4%] Built target no_plan-t
> | [  8%] Built target wsrep-lib
> | [  8%] Built target ref10
> | [  8%] Built target mariadb_obj
> | make  -f libmariadb/libmariadb/CMakeFiles/mariadbclient.dir/build.make 
> libmariadb/libmariadb/CMakeFiles/mariadbclient.dir/depend
> | make  -f libmariadb/libmariadb/CMakeFiles/libmariadb.dir/build.make 
> libmariadb/libmariadb/CMakeFiles/libmariadb.dir/depend
> | make[2]: Entering directory 
> '/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build'
> | cd /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build && 
> /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/recipe-sysroot-native/usr/bin/cmake 
> -E cmake_depends "Unix Makefiles" 
> /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/mariadb-10.7.4 
> /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/mariadb-10.7.4/libmariadb/libmariadb 
> /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build 
> /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build/libmariadb/libmariadb 
> /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build/libmariadb/libmariadb/CMakeFiles/mariadbclient.dir/DependInfo.cmake 
> --color=
> | make[2]: Leaving directory 
> '/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build'
> | make  -f libmariadb/libmariadb/CMakeFiles/mariadbclient.dir/build.make 
> libmariadb/libmariadb/CMakeFiles/mariadbclient.dir/build
> | Illegal instruction (core dumped)
> | make[2]: *** [sql/CMakeFiles/GenServerSource.dir/build.make:76: 
> sql/lex_hash.h] Error 132
> | make[2]: *** Deleting file 'sql/lex_hash.h'
> | make[2]: Entering directory 
> '/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build'
> | [  8%] Linking C static library libmariadbclient.a
> | cd 
> /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build/libmariadb/libmariadb 
> && 
> /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/recipe-sysroot-native/usr/bin/cmake 
> -P CMakeFiles/mariadbclient.dir/cmake_clean_target.cmake
> | Illegal instruction (core dumped)
> | Illegal instruction (core dumped)
> | make[2]: *** [scripts/CMakeFiles/GenFixPrivs.dir/build.make:78: 
> scripts/mysql_fix_privilege_tables_sql.c] Error 132
> 
> Thanks,
> 
> On 7/6/21 16:37, Khem Raj wrote:
>> [Please note: This e-mail is from an EXTERNAL e-mail address]
>>
>> On Mon, Jul 5, 2021 at 11:56 PM Zoltán Böszörményi <zboszor@gmail.com> 
>> wrote:
>>>
>>> This way, mariadb does not depend on mariadb-native anymore.
>>>
>>
>> how does build time gets impacted ? you can count that native build is
>> not needed but still it will be good to know.
>> qemu dependency also means that qemu usermode has to be supported for
>> this to work, which maybe troublesome on some
>> newer or lesser known architectures but perhaps thats a fine 
>> compromise perhaps.
>>
>>> Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
>>> ---
>>>   meta-oe/recipes-dbs/mysql/mariadb.inc         | 27 ++++----
>>>   .../mysql/mariadb/cross-compiling.patch       | 25 -------
>>>   ...Lists.txt-fix-gen_lex_hash-not-found.patch | 67 -------------------
>>>   meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb  |  4 +-
>>>   4 files changed, 15 insertions(+), 108 deletions(-)
>>>   delete mode 100644 
>>> meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch
>>>   delete mode 100644 
>>> meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch 
>>>
>>>
>>> diff --git a/meta-oe/recipes-dbs/mysql/mariadb.inc 
>>> b/meta-oe/recipes-dbs/mysql/mariadb.inc
>>> index 18b025070..7b1f537fb 100644
>>> --- a/meta-oe/recipes-dbs/mysql/mariadb.inc
>>> +++ b/meta-oe/recipes-dbs/mysql/mariadb.inc
>>> @@ -12,7 +12,6 @@ SRC_URI = 
>>> "https://downloads.mariadb.org/interstitial/${BP}/source/${BP}.tar.gz
>>>              file://mysql-systemd-start \
>>>              file://configure.cmake-fix-valgrind.patch \
>>>              
>>> file://support-files-CMakeLists.txt-fix-do_populate_sysroot.patch \
>>> -           file://sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch \
>>>              file://0001-disable-ucontext-on-musl.patch \
>>>              file://c11_atomics.patch \
>>>              file://clang_version_header_conflict.patch \
>>> @@ -21,7 +20,6 @@ SRC_URI = 
>>> "https://downloads.mariadb.org/interstitial/${BP}/source/${BP}.tar.gz
>>>              
>>> file://0001-innobase-Define-__NR_futex-if-it-does-not-exist.patch \
>>>              
>>> file://0001-aio_linux-Check-if-syscall-exists-before-using-it.patch \
>>>              file://sys_futex.patch \
>>> -           file://cross-compiling.patch \
>>>              file://ssize_t.patch \
>>>              file://mm_malloc.patch \
>>>             "
>>> @@ -60,8 +58,6 @@ SYSTEMD_AUTO_ENABLE_${PN}-setupdb ?= "enable"
>>>   ALLOW_EMPTY_${PN}-setupdb ?= "1"
>>>   FILES_${PN}-setupdb = "${sysconfdir}/init.d/install_db"
>>>
>>> -EXTRA_OEMAKE = "'GEN_LEX_HASH=${STAGING_BINDIR_NATIVE}/gen_lex_hash'"
>>> -
>>>   PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} 
>>> setupdb"
>>>   PACKAGECONFIG_class-native = ""
>>>   PACKAGECONFIG[pam] = ",-DWITHOUT_AUTH_PAM=TRUE,libpam"
>>> @@ -95,6 +91,8 @@ EXTRA_OECMAKE = "-DWITH_EMBEDDED_SERVER=ON \
>>>                    -DCAT_EXECUTABLE=`which cat` \
>>>                    -DCMAKE_AR:FILEPATH=${AR}"
>>>
>>> +EXTRA_OECMAKE_prepend_class-target = 
>>> "-DCMAKE_CROSSCOMPILING_EMULATOR=${WORKDIR}/qemuwrapper "
>>> +
>>>   # With Ninja it fails with:
>>>   # make: *** No rule to make target `install'.  Stop.
>>>   OECMAKE_GENERATOR = "Unix Makefiles"
>>> @@ -117,12 +115,18 @@ do_generate_toolchain_file_append_class-native 
>>> () {
>>>       sed -i "/set( CMAKE_SYSTEM_PROCESSOR/d" ${WORKDIR}/toolchain.cmake
>>>   }
>>>
>>> -do_compile_prepend_class-target () {
>>> -    # These need to be in-tree or make will think they need to be 
>>> built,
>>> -    # and since we're cross-compiling that is disabled
>>> -    cp ${STAGING_BINDIR_NATIVE}/comp_err ${S}/extra
>>> -    cp ${STAGING_BINDIR_NATIVE}/comp_sql ${S}/scripts
>>> +do_configure_prepend_class-target () {
>>> +       # Write out a qemu wrapper that will be used by cmake
>>> +       # so that it can run target helper binaries through that.
>>> +       qemu_binary="${@qemu_wrapper_cmdline(d, 
>>> d.getVar('STAGING_DIR_HOST'), 
>>> [d.expand('${STAGING_DIR_HOST}${libdir}'),d.expand('${STAGING_DIR_HOST}${base_libdir}')])}" 
>>>
>>> +       cat > ${WORKDIR}/qemuwrapper << EOF
>>> +#!/bin/sh
>>> +$qemu_binary "\$@"
>>> +EOF
>>> +       chmod +x ${WORKDIR}/qemuwrapper
>>> +}
>>>
>>> +do_compile_prepend_class-target () {
>>>       if [ "${@bb.utils.contains('PACKAGECONFIG', 'krb5', 'yes', 
>>> 'no', d)}" = "no" ]; then
>>>           if ! [ -e ${B}/include/openssl/kssl.h ] ; then
>>>               mkdir -p ${B}/include/openssl
>>> @@ -132,11 +136,6 @@ do_compile_prepend_class-target () {
>>>               echo "#endif" >>${B}/include/openssl/kssl.h
>>>           fi
>>>       fi
>>> -    # workaround to handle out-of-source build from source package
>>> -    yacc_files="sql_yacc.hh sql_yacc.cc sql_yacc_ora.hh 
>>> sql_yacc_ora.cc"
>>> -    for yacc_file in ${yacc_files}; do
>>> -        cp ${S}/sql/${yacc_file} ${B}/sql/${yacc_file}
>>> -    done
>>>   }
>>>
>>>   SYSROOT_PREPROCESS_FUNCS += "mariadb_sysroot_preprocess"
>>> diff --git a/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch 
>>> b/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch
>>> deleted file mode 100644
>>> index 0f4815b18..000000000
>>> --- a/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch
>>> +++ /dev/null
>>> @@ -1,25 +0,0 @@
>>> -This is not needed for OE builds
>>> -
>>> -building failed since native does not generate import_executables.cmake
>>> -In fact, our building system will export the needed commands
>>> -
>>> -Upstream-Status: Inappropriate [configuration]
>>> -
>>> -Signed-off-by: Roy Li <rongqing.li@windriver.com>
>>> -Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
>>> -Signed-off-by: Khem Raj <raj.khem@gmail.com>
>>> -
>>> ---- a/CMakeLists.txt
>>> -+++ b/CMakeLists.txt
>>> -@@ -392,11 +392,6 @@ CHECK_PCRE()
>>> -
>>> - CHECK_SYSTEMD()
>>> -
>>> --IF(CMAKE_CROSSCOMPILING AND NOT DEFINED CMAKE_CROSSCOMPILING_EMULATOR)
>>> --  SET(IMPORT_EXECUTABLES "IMPORTFILE-NOTFOUND" CACHE FILEPATH "Path 
>>> to import_executables.cmake from a native build")
>>> --  INCLUDE(${IMPORT_EXECUTABLES})
>>> --ENDIF()
>>> -- 
>>> - #
>>> - # Setup maintainer mode options. Platform checks are
>>> - # not run with the warning options as to not perturb fragile checks
>>> diff --git 
>>> a/meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch 
>>> b/meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch 
>>>
>>> deleted file mode 100644
>>> index 4cb044339..000000000
>>> --- 
>>> a/meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch 
>>>
>>> +++ /dev/null
>>> @@ -1,67 +0,0 @@
>>> -From cfce1491827e5a581878b5e166bf4d30e6d90e07 Mon Sep 17 00:00:00 2001
>>> -From: Mingli Yu <mingli.yu@windriver.com>
>>> -Date: Thu, 23 Jul 2020 00:08:16 -0700
>>> -Subject: [PATCH] sql/CMakeLists.txt: fix gen_lex_hash not found
>>> -
>>> -Fix the below do_compile issue in cross-compiling env.
>>> -| make[2]: *** No rule to make target 
>>> '/build/tmp/work/aarch64-poky-linux/mariadb/10.3.13-r0/mariadb-10.3.13/sql/gen_lex_hash', 
>>> needed by 'sql/lex_hash.h'.  Stop.
>>> -| make[2]: *** No rule to make target 
>>> '/build/tmp/work/aarch64-poky-linux/mariadb/10.3.13-r0/mariadb-10.3.13/sql/gen_lex_token', 
>>> needed by 'sql/lex_token.h'.  Stop.
>>> -
>>> -Upstream-Status: Inappropriate [oe build specific]
>>> -
>>> -Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
>>> ----
>>> - sql/CMakeLists.txt | 30 ++++++++++++++++++++----------
>>> - 1 file changed, 20 insertions(+), 10 deletions(-)
>>> -
>>> -diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt
>>> -index 0dc3caa..616017b 100644
>>> ---- a/sql/CMakeLists.txt
>>> -+++ b/sql/CMakeLists.txt
>>> -@@ -52,11 +52,16 @@ ${CMAKE_BINARY_DIR}/sql
>>> - ${CMAKE_SOURCE_DIR}/tpool
>>> - )
>>> -
>>> --ADD_CUSTOM_COMMAND(
>>> --  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
>>> --  COMMAND gen_lex_token > lex_token.h
>>> --  DEPENDS gen_lex_token
>>> --)
>>> -+IF(NOT CMAKE_CROSSCOMPILING)
>>> -+  ADD_CUSTOM_COMMAND(
>>> -+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
>>> -+   COMMAND gen_lex_token > lex_token.h
>>> -+   DEPENDS gen_lex_token)
>>> -+ELSE()
>>> -+  ADD_CUSTOM_COMMAND(
>>> -+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
>>> -+   COMMAND gen_lex_token > lex_token.h)
>>> -+ENDIF()
>>> -
>>> - ADD_CUSTOM_COMMAND(
>>> -   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/sql_yacc_ora.yy
>>> -@@ -345,11 +350,16 @@ IF(NOT CMAKE_CROSSCOMPILING)
>>> -   ADD_EXECUTABLE(gen_lex_hash gen_lex_hash.cc)
>>> - ENDIF()
>>> -
>>> --ADD_CUSTOM_COMMAND(
>>> --  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
>>> --  COMMAND gen_lex_hash > lex_hash.h
>>> --  DEPENDS gen_lex_hash
>>> --)
>>> -+IF(NOT CMAKE_CROSSCOMPILING)
>>> -+  ADD_CUSTOM_COMMAND(
>>> -+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
>>> -+   COMMAND gen_lex_hash > lex_hash.h
>>> -+   DEPENDS gen_lex_hash)
>>> -+ELSE()
>>> -+  ADD_CUSTOM_COMMAND(
>>> -+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
>>> -+   COMMAND gen_lex_hash > lex_hash.h)
>>> -+ENDIF()
>>> -
>>> - MYSQL_ADD_EXECUTABLE(mariadb-tzinfo-to-sql tztime.cc COMPONENT Server)
>>> - SET_TARGET_PROPERTIES(mariadb-tzinfo-to-sql PROPERTIES 
>>> COMPILE_FLAGS "-DTZINFO2SQL")
>>> ---
>>> -2.17.1
>>> -
>>> diff --git a/meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb 
>>> b/meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb
>>> index 8ae8241b0..57d7736ea 100644
>>> --- a/meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb
>>> +++ b/meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb
>>> @@ -1,8 +1,8 @@
>>>   require mariadb.inc
>>>
>>> -EXTRA_OECMAKE += "-DSTACK_DIRECTION=-1"
>>> +inherit qemu
>>>
>>> -DEPENDS += "mariadb-native bison-native boost libpcre2 curl openssl 
>>> ncurses zlib libaio libedit libevent libxml2"
>>> +DEPENDS += "qemu-native bison-native boost libpcre2 curl openssl 
>>> ncurses zlib libaio libedit libevent libxml2"
>>>
>>>   PROVIDES += "mysql5 libmysqlclient"
>>>
>>> -- 
>>> 2.31.1
>>>
>>>
>>>
>>>
>>>
> 
> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#98920): https://lists.openembedded.org/g/openembedded-devel/message/98920
> Mute This Topic: https://lists.openembedded.org/mt/84015256/3618448
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [mingli.yu@windriver.com]
> -=-=-=-=-=-=-=-=-=-=-=-
> 


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [oe] [meta-oe][PATCH 1/2] mariadb: Use qemu to run cross-compiled binaries
  2022-09-22  7:47   ` Yu, Mingli
@ 2022-09-22 11:25     ` Ross Burton
  2022-09-26  4:37       ` [meta-oe][kirkstone][PATCH] mariadb: not use " mingli.yu
       [not found]       ` <17184F1EA11A10CE.15234@lists.openembedded.org>
  0 siblings, 2 replies; 10+ messages in thread
From: Ross Burton @ 2022-09-22 11:25 UTC (permalink / raw)
  To: mingli.yu
  Cc: Khem Raj, Zoltán Böszörményi, openembeded-devel

On 22 Sep 2022, at 08:47, Yu, Mingli via lists.openembedded.org <mingli.yu=windriver.com@lists.openembedded.org> wrote:
> | Illegal instruction (core dumped)

This is _exactly_ why using qemu-user in a build is a _terrible_ idea.

Please, someone revert this patch from 2021.  Yes, CMake is terrible and doesn’t support easily building native tools for use at build time, so we need to build a miniature native package or to hand-compile the binaries which are needed. Plenty of prior art across oe-core for those.

Both of those solutions are better than building the binaries for the target and then just saying LOL OH WELL when qemu doesn’t work.

Mingli’s problem is almost certainly that the target tune is using (relatively) new and shiny x86 instructions (for example, glibc likes to use SSE when it can), which qemu-user can’t emulate.

Ross

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [meta-oe][kirkstone][PATCH] mariadb: not use qemu to run cross-compiled binaries
  2022-09-22 11:25     ` Ross Burton
@ 2022-09-26  4:37       ` mingli.yu
       [not found]       ` <17184F1EA11A10CE.15234@lists.openembedded.org>
  1 sibling, 0 replies; 10+ messages in thread
From: mingli.yu @ 2022-09-26  4:37 UTC (permalink / raw)
  To: openembedded-devel, Ross.Burton

From: Mingli Yu <mingli.yu@windriver.com>

The build fails when use qemu to run build for amd64 as below:

| make  -f libmariadb/libmariadb/CMakeFiles/mariadbclient.dir/build.make libmariadb/libmariadb/CMakeFiles/mariadbclient.dir/depend
| make  -f libmariadb/libmariadb/CMakeFiles/libmariadb.dir/build.make libmariadb/libmariadb/CMakeFiles/libmariadb.dir/depend
| make[2]: Entering directory '/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build'
| cd /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build && /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/recipe-sysroot-native/usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/mariadb-10.7.4 /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/mariadb-10.7.4/libmariadb/libmariadb /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build/libmariadb/libmariadb /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build/libmariadb/libmariadb/CMakeFiles/mariadbclient.dir/DependInfo.cmake --color=
| make[2]: Leaving directory '/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build'
| make  -f libmariadb/libmariadb/CMakeFiles/mariadbclient.dir/build.make libmariadb/libmariadb/CMakeFiles/mariadbclient.dir/build
| Illegal instruction (core dumped)
| make[2]: *** [sql/CMakeFiles/GenServerSource.dir/build.make:76: sql/lex_hash.h] Error 132
| make[2]: *** Deleting file 'sql/lex_hash.h'
| make[2]: Entering directory '/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build'
| [  8%] Linking C static library libmariadbclient.a
| cd /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build/libmariadb/libmariadb && /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/recipe-sysroot-native/usr/bin/cmake -P CMakeFiles/mariadbclient.dir/cmake_clean_target.cmake
| Illegal instruction (core dumped)
| Illegal instruction (core dumped)
| make[2]: *** [scripts/CMakeFiles/GenFixPrivs.dir/build.make:78: scripts/mysql_fix_privilege_tables_sql.c] Error 132

So don't use qemu to run cross-compiled binaries.

Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
---
 .../mysql/mariadb-native_10.7.4.bb            |  4 +-
 meta-oe/recipes-dbs/mysql/mariadb.inc         | 20 +++---
 ...Lists.txt-fix-gen_lex_hash-not-found.patch | 69 +++++++++++++++++++
 .../mysql/mariadb/cross-compiling.patch       | 34 +++++++++
 meta-oe/recipes-dbs/mysql/mariadb_10.7.4.bb   |  4 +-
 5 files changed, 116 insertions(+), 15 deletions(-)
 create mode 100644 meta-oe/recipes-dbs/mysql/mariadb/0001-sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch
 create mode 100644 meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch

diff --git a/meta-oe/recipes-dbs/mysql/mariadb-native_10.7.4.bb b/meta-oe/recipes-dbs/mysql/mariadb-native_10.7.4.bb
index e38726d3f..17a06349b 100644
--- a/meta-oe/recipes-dbs/mysql/mariadb-native_10.7.4.bb
+++ b/meta-oe/recipes-dbs/mysql/mariadb-native_10.7.4.bb
@@ -2,7 +2,9 @@ require mariadb.inc
 inherit native
 
 PROVIDES += "mysql5-native"
-DEPENDS = "ncurses-native zlib-native bison-native libpcre2-native"
+DEPENDS = "ncurses-native zlib-native bison-native libpcre2-native \
+gnutls-native fmt-native \
+"
 
 RDEPENDS:${PN} = ""
 PACKAGES = ""
diff --git a/meta-oe/recipes-dbs/mysql/mariadb.inc b/meta-oe/recipes-dbs/mysql/mariadb.inc
index 922373b63..23322cf74 100644
--- a/meta-oe/recipes-dbs/mysql/mariadb.inc
+++ b/meta-oe/recipes-dbs/mysql/mariadb.inc
@@ -20,6 +20,8 @@ SRC_URI = "https://archive.mariadb.org/${BP}/source/${BP}.tar.gz \
            file://mm_malloc.patch \
            file://sys_futex.patch \
            file://mariadb-openssl3.patch \
+           file://cross-compiling.patch \
+           file://0001-sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch \
           "
 SRC_URI:append:libc-musl = " file://ppc-remove-glibc-dep.patch"
 
@@ -61,6 +63,8 @@ FILES:${PN}-setupdb = "${sysconfdir}/init.d/install_db \
                        ${bindir}/mysql-systemd-start \
                        "
 
+EXTRA_OEMAKE = "'GEN_LEX_HASH=${STAGING_BINDIR_NATIVE}/gen_lex_hash'"
+
 PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} openssl"
 PACKAGECONFIG:class-native = ""
 PACKAGECONFIG[pam] = ",-DWITHOUT_AUTH_PAM=TRUE,libpam"
@@ -95,9 +99,9 @@ EXTRA_OECMAKE = "-DWITH_EMBEDDED_SERVER=ON \
                  -DINSTALL_SYSCONFDIR:PATH=${sysconfdir} \
                  -DMYSQL_DATADIR:PATH=/var/mysql \
                  -DCAT_EXECUTABLE=`which cat` \
+                 -DSTACK_DIRECTION=1 \
                  -DCMAKE_AR:FILEPATH=${AR}"
 
-EXTRA_OECMAKE:prepend:class-target = "-DCMAKE_CROSSCOMPILING_EMULATOR=${WORKDIR}/qemuwrapper "
 
 # With Ninja it fails with:
 # make: *** No rule to make target `install'.  Stop.
@@ -121,18 +125,12 @@ do_generate_toolchain_file:append:class-native () {
     sed -i "/set( CMAKE_SYSTEM_PROCESSOR/d" ${WORKDIR}/toolchain.cmake
 }
 
-do_configure:prepend:class-target () {
-	# Write out a qemu wrapper that will be used by cmake
-	# so that it can run target helper binaries through that.
-	qemu_binary="${@qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST'), [d.expand('${STAGING_DIR_HOST}${libdir}'),d.expand('${STAGING_DIR_HOST}${base_libdir}')])}"
-	cat > ${WORKDIR}/qemuwrapper << EOF
-#!/bin/sh
-$qemu_binary "\$@"
-EOF
-	chmod +x ${WORKDIR}/qemuwrapper
-}
 
 do_compile:prepend:class-target () {
+    # These need to be in-tree or make will think they need to be built,
+    # and since we're cross-compiling that is disabled
+    cp ${STAGING_BINDIR_NATIVE}/comp_err ${S}/extra
+    cp ${STAGING_BINDIR_NATIVE}/comp_sql ${S}/scripts
     if [ "${@bb.utils.contains('PACKAGECONFIG', 'krb5', 'yes', 'no', d)}" = "no" ]; then
         if ! [ -e ${B}/include/openssl/kssl.h ] ; then
             mkdir -p ${B}/include/openssl
diff --git a/meta-oe/recipes-dbs/mysql/mariadb/0001-sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch b/meta-oe/recipes-dbs/mysql/mariadb/0001-sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch
new file mode 100644
index 000000000..456a2bad6
--- /dev/null
+++ b/meta-oe/recipes-dbs/mysql/mariadb/0001-sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch
@@ -0,0 +1,69 @@
+From f92f657973997df30afdb0032c88ad3a14ead46b Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Fri, 23 Sep 2022 15:48:21 +0800
+Subject: [PATCH] sql/CMakeLists.txt: fix gen_lex_hash not found
+
+Fix the below do_compile issue in cross-compiling env.
+| make[2]: *** No rule to make target '/build/tmp/work/aarch64-poky-linux/mariadb/10.3.13-r0/mariadb-10.3.13/sql/gen_lex_hash', needed by 'sql/lex_hash.h'.  Stop.
+| make[2]: *** No rule to make target '/build/tmp/work/aarch64-poky-linux/mariadb/10.3.13-r0/mariadb-10.3.13/sql/gen_lex_token', needed by 'sql/lex_token.h'.  Stop.
+
+Upstream-Status: Inappropriate [oe build specific]
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ sql/CMakeLists.txt | 30 ++++++++++++++++++++++--------
+ 1 file changed, 22 insertions(+), 8 deletions(-)
+
+diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt
+index 241b482..27a3991 100644
+--- a/sql/CMakeLists.txt
++++ b/sql/CMakeLists.txt
+@@ -60,11 +60,18 @@ ${CMAKE_BINARY_DIR}/sql
+ ${CMAKE_SOURCE_DIR}/tpool
+ )
+ 
+-ADD_CUSTOM_COMMAND(
+-  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
+-  COMMAND gen_lex_token > lex_token.h
+-  DEPENDS gen_lex_token
++IF(NOT CMAKE_CROSSCOMPILING)
++  ADD_CUSTOM_COMMAND(
++    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
++    COMMAND gen_lex_token > lex_token.h
++    DEPENDS gen_lex_token
++)
++ELSE()
++  ADD_CUSTOM_COMMAND(
++    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
++    COMMAND gen_lex_token > lex_token.h
+ )
++ENDIF()
+ 
+ FIND_PACKAGE(BISON 2.4)
+ 
+@@ -372,11 +379,18 @@ IF(NOT CMAKE_CROSSCOMPILING OR DEFINED CMAKE_CROSSCOMPILING_EMULATOR)
+   ADD_EXECUTABLE(gen_lex_hash gen_lex_hash.cc)
+ ENDIF()
+ 
+-ADD_CUSTOM_COMMAND(
+-  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
+-  COMMAND gen_lex_hash > lex_hash.h
+-  DEPENDS gen_lex_hash
++IF(NOT CMAKE_CROSSCOMPILING)
++  ADD_CUSTOM_COMMAND(
++    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
++    COMMAND gen_lex_hash > lex_hash.h
++    DEPENDS gen_lex_hash
++)
++ELSE()
++  ADD_CUSTOM_COMMAND(
++    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
++    COMMAND gen_lex_hash > lex_hash.h
+ )
++ENDIF()
+ 
+ MYSQL_ADD_EXECUTABLE(mariadb-tzinfo-to-sql tztime.cc)
+ SET_TARGET_PROPERTIES(mariadb-tzinfo-to-sql PROPERTIES COMPILE_FLAGS "-DTZINFO2SQL")
+-- 
+2.25.1
+
diff --git a/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch b/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch
new file mode 100644
index 000000000..d0d6e3c73
--- /dev/null
+++ b/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch
@@ -0,0 +1,34 @@
+From 80be37351d995654f86b838f6b5ed47e8a90261b Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Fri, 23 Sep 2022 12:05:17 +0800
+Subject: [PATCH] CMakeLists.txt: not include import_executables.cmake
+
+building failed since native does not generate import_executables.cmake
+In fact, our building system will export the needed commands.
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ CMakeLists.txt | 5 -----
+ 1 file changed, 5 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index f9e2b1b..34924ba 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -394,11 +394,6 @@ CHECK_LIBFMT()
+ ADD_SUBDIRECTORY(tpool)
+ CHECK_SYSTEMD()
+ 
+-IF(CMAKE_CROSSCOMPILING AND NOT DEFINED CMAKE_CROSSCOMPILING_EMULATOR)
+-  SET(IMPORT_EXECUTABLES "IMPORTFILE-NOTFOUND" CACHE FILEPATH "Path to import_executables.cmake from a native build")
+-  INCLUDE(${IMPORT_EXECUTABLES})
+-ENDIF()
+-
+ #
+ # Setup maintainer mode options. Platform checks are
+ # not run with the warning options as to not perturb fragile checks
+-- 
+2.25.1
+
diff --git a/meta-oe/recipes-dbs/mysql/mariadb_10.7.4.bb b/meta-oe/recipes-dbs/mysql/mariadb_10.7.4.bb
index c800c4c56..8dba5c858 100644
--- a/meta-oe/recipes-dbs/mysql/mariadb_10.7.4.bb
+++ b/meta-oe/recipes-dbs/mysql/mariadb_10.7.4.bb
@@ -1,8 +1,6 @@
 require mariadb.inc
 
-inherit qemu
-
-DEPENDS += "qemu-native bison-native boost libpcre2 curl ncurses \
+DEPENDS += "mariadb-native bison-native boost libpcre2 curl ncurses \
             zlib libaio libedit libevent libxml2 gnutls fmt lzo"
 
 PROVIDES += "mysql5 libmysqlclient"
-- 
2.25.1



^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [oe] [meta-oe][kirkstone][PATCH] mariadb: not use qemu to run cross-compiled binaries
       [not found]       ` <17184F1EA11A10CE.15234@lists.openembedded.org>
@ 2022-10-17  5:56         ` Yu, Mingli
  2022-10-27 17:06           ` Randy MacLeod
  0 siblings, 1 reply; 10+ messages in thread
From: Yu, Mingli @ 2022-10-17  5:56 UTC (permalink / raw)
  To: openembedded-devel, Ross.Burton

Ping.

Thanks,

On 9/26/22 12:37, Yu, Mingli wrote:
> From: Mingli Yu <mingli.yu@windriver.com>
> 
> The build fails when use qemu to run build for amd64 as below:
> 
> | make  -f libmariadb/libmariadb/CMakeFiles/mariadbclient.dir/build.make libmariadb/libmariadb/CMakeFiles/mariadbclient.dir/depend
> | make  -f libmariadb/libmariadb/CMakeFiles/libmariadb.dir/build.make libmariadb/libmariadb/CMakeFiles/libmariadb.dir/depend
> | make[2]: Entering directory '/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build'
> | cd /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build && /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/recipe-sysroot-native/usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/mariadb-10.7.4 /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/mariadb-10.7.4/libmariadb/libmariadb /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build/libmariadb/libmariadb /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build/libmariadb/libmariadb/CMakeFiles/mariadbclient.dir/DependInfo.cmake --color=
> | make[2]: Leaving directory '/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build'
> | make  -f libmariadb/libmariadb/CMakeFiles/mariadbclient.dir/build.make libmariadb/libmariadb/CMakeFiles/mariadbclient.dir/build
> | Illegal instruction (core dumped)
> | make[2]: *** [sql/CMakeFiles/GenServerSource.dir/build.make:76: sql/lex_hash.h] Error 132
> | make[2]: *** Deleting file 'sql/lex_hash.h'
> | make[2]: Entering directory '/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build'
> | [  8%] Linking C static library libmariadbclient.a
> | cd /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build/libmariadb/libmariadb && /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/recipe-sysroot-native/usr/bin/cmake -P CMakeFiles/mariadbclient.dir/cmake_clean_target.cmake
> | Illegal instruction (core dumped)
> | Illegal instruction (core dumped)
> | make[2]: *** [scripts/CMakeFiles/GenFixPrivs.dir/build.make:78: scripts/mysql_fix_privilege_tables_sql.c] Error 132
> 
> So don't use qemu to run cross-compiled binaries.
> 
> Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
> ---
>   .../mysql/mariadb-native_10.7.4.bb            |  4 +-
>   meta-oe/recipes-dbs/mysql/mariadb.inc         | 20 +++---
>   ...Lists.txt-fix-gen_lex_hash-not-found.patch | 69 +++++++++++++++++++
>   .../mysql/mariadb/cross-compiling.patch       | 34 +++++++++
>   meta-oe/recipes-dbs/mysql/mariadb_10.7.4.bb   |  4 +-
>   5 files changed, 116 insertions(+), 15 deletions(-)
>   create mode 100644 meta-oe/recipes-dbs/mysql/mariadb/0001-sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch
>   create mode 100644 meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch
> 
> diff --git a/meta-oe/recipes-dbs/mysql/mariadb-native_10.7.4.bb b/meta-oe/recipes-dbs/mysql/mariadb-native_10.7.4.bb
> index e38726d3f..17a06349b 100644
> --- a/meta-oe/recipes-dbs/mysql/mariadb-native_10.7.4.bb
> +++ b/meta-oe/recipes-dbs/mysql/mariadb-native_10.7.4.bb
> @@ -2,7 +2,9 @@ require mariadb.inc
>   inherit native
>   
>   PROVIDES += "mysql5-native"
> -DEPENDS = "ncurses-native zlib-native bison-native libpcre2-native"
> +DEPENDS = "ncurses-native zlib-native bison-native libpcre2-native \
> +gnutls-native fmt-native \
> +"
>   
>   RDEPENDS:${PN} = ""
>   PACKAGES = ""
> diff --git a/meta-oe/recipes-dbs/mysql/mariadb.inc b/meta-oe/recipes-dbs/mysql/mariadb.inc
> index 922373b63..23322cf74 100644
> --- a/meta-oe/recipes-dbs/mysql/mariadb.inc
> +++ b/meta-oe/recipes-dbs/mysql/mariadb.inc
> @@ -20,6 +20,8 @@ SRC_URI = "https://archive.mariadb.org/${BP}/source/${BP}.tar.gz \
>              file://mm_malloc.patch \
>              file://sys_futex.patch \
>              file://mariadb-openssl3.patch \
> +           file://cross-compiling.patch \
> +           file://0001-sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch \
>             "
>   SRC_URI:append:libc-musl = " file://ppc-remove-glibc-dep.patch"
>   
> @@ -61,6 +63,8 @@ FILES:${PN}-setupdb = "${sysconfdir}/init.d/install_db \
>                          ${bindir}/mysql-systemd-start \
>                          "
>   
> +EXTRA_OEMAKE = "'GEN_LEX_HASH=${STAGING_BINDIR_NATIVE}/gen_lex_hash'"
> +
>   PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} openssl"
>   PACKAGECONFIG:class-native = ""
>   PACKAGECONFIG[pam] = ",-DWITHOUT_AUTH_PAM=TRUE,libpam"
> @@ -95,9 +99,9 @@ EXTRA_OECMAKE = "-DWITH_EMBEDDED_SERVER=ON \
>                    -DINSTALL_SYSCONFDIR:PATH=${sysconfdir} \
>                    -DMYSQL_DATADIR:PATH=/var/mysql \
>                    -DCAT_EXECUTABLE=`which cat` \
> +                 -DSTACK_DIRECTION=1 \
>                    -DCMAKE_AR:FILEPATH=${AR}"
>   
> -EXTRA_OECMAKE:prepend:class-target = "-DCMAKE_CROSSCOMPILING_EMULATOR=${WORKDIR}/qemuwrapper "
>   
>   # With Ninja it fails with:
>   # make: *** No rule to make target `install'.  Stop.
> @@ -121,18 +125,12 @@ do_generate_toolchain_file:append:class-native () {
>       sed -i "/set( CMAKE_SYSTEM_PROCESSOR/d" ${WORKDIR}/toolchain.cmake
>   }
>   
> -do_configure:prepend:class-target () {
> -	# Write out a qemu wrapper that will be used by cmake
> -	# so that it can run target helper binaries through that.
> -	qemu_binary="${@qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST'), [d.expand('${STAGING_DIR_HOST}${libdir}'),d.expand('${STAGING_DIR_HOST}${base_libdir}')])}"
> -	cat > ${WORKDIR}/qemuwrapper << EOF
> -#!/bin/sh
> -$qemu_binary "\$@"
> -EOF
> -	chmod +x ${WORKDIR}/qemuwrapper
> -}
>   
>   do_compile:prepend:class-target () {
> +    # These need to be in-tree or make will think they need to be built,
> +    # and since we're cross-compiling that is disabled
> +    cp ${STAGING_BINDIR_NATIVE}/comp_err ${S}/extra
> +    cp ${STAGING_BINDIR_NATIVE}/comp_sql ${S}/scripts
>       if [ "${@bb.utils.contains('PACKAGECONFIG', 'krb5', 'yes', 'no', d)}" = "no" ]; then
>           if ! [ -e ${B}/include/openssl/kssl.h ] ; then
>               mkdir -p ${B}/include/openssl
> diff --git a/meta-oe/recipes-dbs/mysql/mariadb/0001-sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch b/meta-oe/recipes-dbs/mysql/mariadb/0001-sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch
> new file mode 100644
> index 000000000..456a2bad6
> --- /dev/null
> +++ b/meta-oe/recipes-dbs/mysql/mariadb/0001-sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch
> @@ -0,0 +1,69 @@
> +From f92f657973997df30afdb0032c88ad3a14ead46b Mon Sep 17 00:00:00 2001
> +From: Mingli Yu <mingli.yu@windriver.com>
> +Date: Fri, 23 Sep 2022 15:48:21 +0800
> +Subject: [PATCH] sql/CMakeLists.txt: fix gen_lex_hash not found
> +
> +Fix the below do_compile issue in cross-compiling env.
> +| make[2]: *** No rule to make target '/build/tmp/work/aarch64-poky-linux/mariadb/10.3.13-r0/mariadb-10.3.13/sql/gen_lex_hash', needed by 'sql/lex_hash.h'.  Stop.
> +| make[2]: *** No rule to make target '/build/tmp/work/aarch64-poky-linux/mariadb/10.3.13-r0/mariadb-10.3.13/sql/gen_lex_token', needed by 'sql/lex_token.h'.  Stop.
> +
> +Upstream-Status: Inappropriate [oe build specific]
> +
> +Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
> +---
> + sql/CMakeLists.txt | 30 ++++++++++++++++++++++--------
> + 1 file changed, 22 insertions(+), 8 deletions(-)
> +
> +diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt
> +index 241b482..27a3991 100644
> +--- a/sql/CMakeLists.txt
> ++++ b/sql/CMakeLists.txt
> +@@ -60,11 +60,18 @@ ${CMAKE_BINARY_DIR}/sql
> + ${CMAKE_SOURCE_DIR}/tpool
> + )
> +
> +-ADD_CUSTOM_COMMAND(
> +-  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
> +-  COMMAND gen_lex_token > lex_token.h
> +-  DEPENDS gen_lex_token
> ++IF(NOT CMAKE_CROSSCOMPILING)
> ++  ADD_CUSTOM_COMMAND(
> ++    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
> ++    COMMAND gen_lex_token > lex_token.h
> ++    DEPENDS gen_lex_token
> ++)
> ++ELSE()
> ++  ADD_CUSTOM_COMMAND(
> ++    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
> ++    COMMAND gen_lex_token > lex_token.h
> + )
> ++ENDIF()
> +
> + FIND_PACKAGE(BISON 2.4)
> +
> +@@ -372,11 +379,18 @@ IF(NOT CMAKE_CROSSCOMPILING OR DEFINED CMAKE_CROSSCOMPILING_EMULATOR)
> +   ADD_EXECUTABLE(gen_lex_hash gen_lex_hash.cc)
> + ENDIF()
> +
> +-ADD_CUSTOM_COMMAND(
> +-  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
> +-  COMMAND gen_lex_hash > lex_hash.h
> +-  DEPENDS gen_lex_hash
> ++IF(NOT CMAKE_CROSSCOMPILING)
> ++  ADD_CUSTOM_COMMAND(
> ++    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
> ++    COMMAND gen_lex_hash > lex_hash.h
> ++    DEPENDS gen_lex_hash
> ++)
> ++ELSE()
> ++  ADD_CUSTOM_COMMAND(
> ++    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
> ++    COMMAND gen_lex_hash > lex_hash.h
> + )
> ++ENDIF()
> +
> + MYSQL_ADD_EXECUTABLE(mariadb-tzinfo-to-sql tztime.cc)
> + SET_TARGET_PROPERTIES(mariadb-tzinfo-to-sql PROPERTIES COMPILE_FLAGS "-DTZINFO2SQL")
> +--
> +2.25.1
> +
> diff --git a/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch b/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch
> new file mode 100644
> index 000000000..d0d6e3c73
> --- /dev/null
> +++ b/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch
> @@ -0,0 +1,34 @@
> +From 80be37351d995654f86b838f6b5ed47e8a90261b Mon Sep 17 00:00:00 2001
> +From: Mingli Yu <mingli.yu@windriver.com>
> +Date: Fri, 23 Sep 2022 12:05:17 +0800
> +Subject: [PATCH] CMakeLists.txt: not include import_executables.cmake
> +
> +building failed since native does not generate import_executables.cmake
> +In fact, our building system will export the needed commands.
> +
> +Upstream-Status: Inappropriate [oe specific]
> +
> +Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
> +---
> + CMakeLists.txt | 5 -----
> + 1 file changed, 5 deletions(-)
> +
> +diff --git a/CMakeLists.txt b/CMakeLists.txt
> +index f9e2b1b..34924ba 100644
> +--- a/CMakeLists.txt
> ++++ b/CMakeLists.txt
> +@@ -394,11 +394,6 @@ CHECK_LIBFMT()
> + ADD_SUBDIRECTORY(tpool)
> + CHECK_SYSTEMD()
> +
> +-IF(CMAKE_CROSSCOMPILING AND NOT DEFINED CMAKE_CROSSCOMPILING_EMULATOR)
> +-  SET(IMPORT_EXECUTABLES "IMPORTFILE-NOTFOUND" CACHE FILEPATH "Path to import_executables.cmake from a native build")
> +-  INCLUDE(${IMPORT_EXECUTABLES})
> +-ENDIF()
> +-
> + #
> + # Setup maintainer mode options. Platform checks are
> + # not run with the warning options as to not perturb fragile checks
> +--
> +2.25.1
> +
> diff --git a/meta-oe/recipes-dbs/mysql/mariadb_10.7.4.bb b/meta-oe/recipes-dbs/mysql/mariadb_10.7.4.bb
> index c800c4c56..8dba5c858 100644
> --- a/meta-oe/recipes-dbs/mysql/mariadb_10.7.4.bb
> +++ b/meta-oe/recipes-dbs/mysql/mariadb_10.7.4.bb
> @@ -1,8 +1,6 @@
>   require mariadb.inc
>   
> -inherit qemu
> -
> -DEPENDS += "qemu-native bison-native boost libpcre2 curl ncurses \
> +DEPENDS += "mariadb-native bison-native boost libpcre2 curl ncurses \
>               zlib libaio libedit libevent libxml2 gnutls fmt lzo"
>   
>   PROVIDES += "mysql5 libmysqlclient"
> 
> 
> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#98949): https://lists.openembedded.org/g/openembedded-devel/message/98949
> Mute This Topic: https://lists.openembedded.org/mt/93920978/3618448
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [mingli.yu@windriver.com]
> -=-=-=-=-=-=-=-=-=-=-=-
> 


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [oe] [meta-oe][kirkstone][PATCH] mariadb: not use qemu to run cross-compiled binaries
  2022-10-17  5:56         ` [oe] " Yu, Mingli
@ 2022-10-27 17:06           ` Randy MacLeod
  0 siblings, 0 replies; 10+ messages in thread
From: Randy MacLeod @ 2022-10-27 17:06 UTC (permalink / raw)
  To: Yu, Mingli, openembedded-devel, Ross.Burton, Armin Kuster

On 2022-10-17 01:56, Yu, Mingli wrote:
> Ping.

Armin,

Did you miss this one since it was threaded?

../Randy

>
> Thanks,
>
> On 9/26/22 12:37, Yu, Mingli wrote:
>> From: Mingli Yu <mingli.yu@windriver.com>
>>
>> The build fails when use qemu to run build for amd64 as below:
>>
>> | make  -f 
>> libmariadb/libmariadb/CMakeFiles/mariadbclient.dir/build.make 
>> libmariadb/libmariadb/CMakeFiles/mariadbclient.dir/depend
>> | make  -f libmariadb/libmariadb/CMakeFiles/libmariadb.dir/build.make 
>> libmariadb/libmariadb/CMakeFiles/libmariadb.dir/depend
>> | make[2]: Entering directory 
>> '/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build'
>> | cd /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build && 
>> /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/recipe-sysroot-native/usr/bin/cmake 
>> -E cmake_depends "Unix Makefiles" 
>> /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/mariadb-10.7.4 
>> /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/mariadb-10.7.4/libmariadb/libmariadb 
>> /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build 
>> /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build/libmariadb/libmariadb 
>> /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build/libmariadb/libmariadb/CMakeFiles/mariadbclient.dir/DependInfo.cmake 
>> --color=
>> | make[2]: Leaving directory 
>> '/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build'
>> | make  -f 
>> libmariadb/libmariadb/CMakeFiles/mariadbclient.dir/build.make 
>> libmariadb/libmariadb/CMakeFiles/mariadbclient.dir/build
>> | Illegal instruction (core dumped)
>> | make[2]: *** [sql/CMakeFiles/GenServerSource.dir/build.make:76: 
>> sql/lex_hash.h] Error 132
>> | make[2]: *** Deleting file 'sql/lex_hash.h'
>> | make[2]: Entering directory 
>> '/build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build'
>> | [  8%] Linking C static library libmariadbclient.a
>> | cd 
>> /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/build/libmariadb/libmariadb 
>> && 
>> /build/tmp-glibc/work/dbfp5-wrs-linux/mariadb/10.7.4-r0/recipe-sysroot-native/usr/bin/cmake 
>> -P CMakeFiles/mariadbclient.dir/cmake_clean_target.cmake
>> | Illegal instruction (core dumped)
>> | Illegal instruction (core dumped)
>> | make[2]: *** [scripts/CMakeFiles/GenFixPrivs.dir/build.make:78: 
>> scripts/mysql_fix_privilege_tables_sql.c] Error 132
>>
>> So don't use qemu to run cross-compiled binaries.
>>
>> Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
>> ---
>>   .../mysql/mariadb-native_10.7.4.bb            |  4 +-
>>   meta-oe/recipes-dbs/mysql/mariadb.inc         | 20 +++---
>>   ...Lists.txt-fix-gen_lex_hash-not-found.patch | 69 +++++++++++++++++++
>>   .../mysql/mariadb/cross-compiling.patch       | 34 +++++++++
>>   meta-oe/recipes-dbs/mysql/mariadb_10.7.4.bb   |  4 +-
>>   5 files changed, 116 insertions(+), 15 deletions(-)
>>   create mode 100644 
>> meta-oe/recipes-dbs/mysql/mariadb/0001-sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch
>>   create mode 100644 
>> meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch
>>
>> diff --git a/meta-oe/recipes-dbs/mysql/mariadb-native_10.7.4.bb 
>> b/meta-oe/recipes-dbs/mysql/mariadb-native_10.7.4.bb
>> index e38726d3f..17a06349b 100644
>> --- a/meta-oe/recipes-dbs/mysql/mariadb-native_10.7.4.bb
>> +++ b/meta-oe/recipes-dbs/mysql/mariadb-native_10.7.4.bb
>> @@ -2,7 +2,9 @@ require mariadb.inc
>>   inherit native
>>     PROVIDES += "mysql5-native"
>> -DEPENDS = "ncurses-native zlib-native bison-native libpcre2-native"
>> +DEPENDS = "ncurses-native zlib-native bison-native libpcre2-native \
>> +gnutls-native fmt-native \
>> +"
>>     RDEPENDS:${PN} = ""
>>   PACKAGES = ""
>> diff --git a/meta-oe/recipes-dbs/mysql/mariadb.inc 
>> b/meta-oe/recipes-dbs/mysql/mariadb.inc
>> index 922373b63..23322cf74 100644
>> --- a/meta-oe/recipes-dbs/mysql/mariadb.inc
>> +++ b/meta-oe/recipes-dbs/mysql/mariadb.inc
>> @@ -20,6 +20,8 @@ SRC_URI = 
>> "https://archive.mariadb.org/${BP}/source/${BP}.tar.gz \
>>              file://mm_malloc.patch \
>>              file://sys_futex.patch \
>>              file://mariadb-openssl3.patch \
>> +           file://cross-compiling.patch \
>> + file://0001-sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch \
>>             "
>>   SRC_URI:append:libc-musl = " file://ppc-remove-glibc-dep.patch"
>>   @@ -61,6 +63,8 @@ FILES:${PN}-setupdb = 
>> "${sysconfdir}/init.d/install_db \
>>                          ${bindir}/mysql-systemd-start \
>>                          "
>>   +EXTRA_OEMAKE = "'GEN_LEX_HASH=${STAGING_BINDIR_NATIVE}/gen_lex_hash'"
>> +
>>   PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} 
>> openssl"
>>   PACKAGECONFIG:class-native = ""
>>   PACKAGECONFIG[pam] = ",-DWITHOUT_AUTH_PAM=TRUE,libpam"
>> @@ -95,9 +99,9 @@ EXTRA_OECMAKE = "-DWITH_EMBEDDED_SERVER=ON \
>>                    -DINSTALL_SYSCONFDIR:PATH=${sysconfdir} \
>>                    -DMYSQL_DATADIR:PATH=/var/mysql \
>>                    -DCAT_EXECUTABLE=`which cat` \
>> +                 -DSTACK_DIRECTION=1 \
>>                    -DCMAKE_AR:FILEPATH=${AR}"
>>   -EXTRA_OECMAKE:prepend:class-target = 
>> "-DCMAKE_CROSSCOMPILING_EMULATOR=${WORKDIR}/qemuwrapper "
>>     # With Ninja it fails with:
>>   # make: *** No rule to make target `install'.  Stop.
>> @@ -121,18 +125,12 @@ do_generate_toolchain_file:append:class-native 
>> () {
>>       sed -i "/set( CMAKE_SYSTEM_PROCESSOR/d" ${WORKDIR}/toolchain.cmake
>>   }
>>   -do_configure:prepend:class-target () {
>> -    # Write out a qemu wrapper that will be used by cmake
>> -    # so that it can run target helper binaries through that.
>> -    qemu_binary="${@qemu_wrapper_cmdline(d, 
>> d.getVar('STAGING_DIR_HOST'), 
>> [d.expand('${STAGING_DIR_HOST}${libdir}'),d.expand('${STAGING_DIR_HOST}${base_libdir}')])}"
>> -    cat > ${WORKDIR}/qemuwrapper << EOF
>> -#!/bin/sh
>> -$qemu_binary "\$@"
>> -EOF
>> -    chmod +x ${WORKDIR}/qemuwrapper
>> -}
>>     do_compile:prepend:class-target () {
>> +    # These need to be in-tree or make will think they need to be 
>> built,
>> +    # and since we're cross-compiling that is disabled
>> +    cp ${STAGING_BINDIR_NATIVE}/comp_err ${S}/extra
>> +    cp ${STAGING_BINDIR_NATIVE}/comp_sql ${S}/scripts
>>       if [ "${@bb.utils.contains('PACKAGECONFIG', 'krb5', 'yes', 
>> 'no', d)}" = "no" ]; then
>>           if ! [ -e ${B}/include/openssl/kssl.h ] ; then
>>               mkdir -p ${B}/include/openssl
>> diff --git 
>> a/meta-oe/recipes-dbs/mysql/mariadb/0001-sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch 
>> b/meta-oe/recipes-dbs/mysql/mariadb/0001-sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch 
>>
>> new file mode 100644
>> index 000000000..456a2bad6
>> --- /dev/null
>> +++ 
>> b/meta-oe/recipes-dbs/mysql/mariadb/0001-sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch
>> @@ -0,0 +1,69 @@
>> +From f92f657973997df30afdb0032c88ad3a14ead46b Mon Sep 17 00:00:00 2001
>> +From: Mingli Yu <mingli.yu@windriver.com>
>> +Date: Fri, 23 Sep 2022 15:48:21 +0800
>> +Subject: [PATCH] sql/CMakeLists.txt: fix gen_lex_hash not found
>> +
>> +Fix the below do_compile issue in cross-compiling env.
>> +| make[2]: *** No rule to make target 
>> '/build/tmp/work/aarch64-poky-linux/mariadb/10.3.13-r0/mariadb-10.3.13/sql/gen_lex_hash', 
>> needed by 'sql/lex_hash.h'.  Stop.
>> +| make[2]: *** No rule to make target 
>> '/build/tmp/work/aarch64-poky-linux/mariadb/10.3.13-r0/mariadb-10.3.13/sql/gen_lex_token', 
>> needed by 'sql/lex_token.h'.  Stop.
>> +
>> +Upstream-Status: Inappropriate [oe build specific]
>> +
>> +Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
>> +---
>> + sql/CMakeLists.txt | 30 ++++++++++++++++++++++--------
>> + 1 file changed, 22 insertions(+), 8 deletions(-)
>> +
>> +diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt
>> +index 241b482..27a3991 100644
>> +--- a/sql/CMakeLists.txt
>> ++++ b/sql/CMakeLists.txt
>> +@@ -60,11 +60,18 @@ ${CMAKE_BINARY_DIR}/sql
>> + ${CMAKE_SOURCE_DIR}/tpool
>> + )
>> +
>> +-ADD_CUSTOM_COMMAND(
>> +-  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
>> +-  COMMAND gen_lex_token > lex_token.h
>> +-  DEPENDS gen_lex_token
>> ++IF(NOT CMAKE_CROSSCOMPILING)
>> ++  ADD_CUSTOM_COMMAND(
>> ++    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
>> ++    COMMAND gen_lex_token > lex_token.h
>> ++    DEPENDS gen_lex_token
>> ++)
>> ++ELSE()
>> ++  ADD_CUSTOM_COMMAND(
>> ++    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
>> ++    COMMAND gen_lex_token > lex_token.h
>> + )
>> ++ENDIF()
>> +
>> + FIND_PACKAGE(BISON 2.4)
>> +
>> +@@ -372,11 +379,18 @@ IF(NOT CMAKE_CROSSCOMPILING OR DEFINED 
>> CMAKE_CROSSCOMPILING_EMULATOR)
>> +   ADD_EXECUTABLE(gen_lex_hash gen_lex_hash.cc)
>> + ENDIF()
>> +
>> +-ADD_CUSTOM_COMMAND(
>> +-  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
>> +-  COMMAND gen_lex_hash > lex_hash.h
>> +-  DEPENDS gen_lex_hash
>> ++IF(NOT CMAKE_CROSSCOMPILING)
>> ++  ADD_CUSTOM_COMMAND(
>> ++    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
>> ++    COMMAND gen_lex_hash > lex_hash.h
>> ++    DEPENDS gen_lex_hash
>> ++)
>> ++ELSE()
>> ++  ADD_CUSTOM_COMMAND(
>> ++    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
>> ++    COMMAND gen_lex_hash > lex_hash.h
>> + )
>> ++ENDIF()
>> +
>> + MYSQL_ADD_EXECUTABLE(mariadb-tzinfo-to-sql tztime.cc)
>> + SET_TARGET_PROPERTIES(mariadb-tzinfo-to-sql PROPERTIES 
>> COMPILE_FLAGS "-DTZINFO2SQL")
>> +--
>> +2.25.1
>> +
>> diff --git a/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch 
>> b/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch
>> new file mode 100644
>> index 000000000..d0d6e3c73
>> --- /dev/null
>> +++ b/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch
>> @@ -0,0 +1,34 @@
>> +From 80be37351d995654f86b838f6b5ed47e8a90261b Mon Sep 17 00:00:00 2001
>> +From: Mingli Yu <mingli.yu@windriver.com>
>> +Date: Fri, 23 Sep 2022 12:05:17 +0800
>> +Subject: [PATCH] CMakeLists.txt: not include import_executables.cmake
>> +
>> +building failed since native does not generate import_executables.cmake
>> +In fact, our building system will export the needed commands.
>> +
>> +Upstream-Status: Inappropriate [oe specific]
>> +
>> +Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
>> +---
>> + CMakeLists.txt | 5 -----
>> + 1 file changed, 5 deletions(-)
>> +
>> +diff --git a/CMakeLists.txt b/CMakeLists.txt
>> +index f9e2b1b..34924ba 100644
>> +--- a/CMakeLists.txt
>> ++++ b/CMakeLists.txt
>> +@@ -394,11 +394,6 @@ CHECK_LIBFMT()
>> + ADD_SUBDIRECTORY(tpool)
>> + CHECK_SYSTEMD()
>> +
>> +-IF(CMAKE_CROSSCOMPILING AND NOT DEFINED CMAKE_CROSSCOMPILING_EMULATOR)
>> +-  SET(IMPORT_EXECUTABLES "IMPORTFILE-NOTFOUND" CACHE FILEPATH "Path 
>> to import_executables.cmake from a native build")
>> +-  INCLUDE(${IMPORT_EXECUTABLES})
>> +-ENDIF()
>> +-
>> + #
>> + # Setup maintainer mode options. Platform checks are
>> + # not run with the warning options as to not perturb fragile checks
>> +--
>> +2.25.1
>> +
>> diff --git a/meta-oe/recipes-dbs/mysql/mariadb_10.7.4.bb 
>> b/meta-oe/recipes-dbs/mysql/mariadb_10.7.4.bb
>> index c800c4c56..8dba5c858 100644
>> --- a/meta-oe/recipes-dbs/mysql/mariadb_10.7.4.bb
>> +++ b/meta-oe/recipes-dbs/mysql/mariadb_10.7.4.bb
>> @@ -1,8 +1,6 @@
>>   require mariadb.inc
>>   -inherit qemu
>> -
>> -DEPENDS += "qemu-native bison-native boost libpcre2 curl ncurses \
>> +DEPENDS += "mariadb-native bison-native boost libpcre2 curl ncurses \
>>               zlib libaio libedit libevent libxml2 gnutls fmt lzo"
>>     PROVIDES += "mysql5 libmysqlclient"
>>
>>
>>
>>
>>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#99188): https://lists.openembedded.org/g/openembedded-devel/message/99188
> Mute This Topic: https://lists.openembedded.org/mt/94378750/3616765
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [randy.macleod@windriver.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>

-- 
# Randy MacLeod
# Wind River Linux



^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2022-10-27 17:06 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20210706065549.187176-1-zboszor@gmail.com>
2021-07-06  8:37 ` [meta-oe][PATCH 1/2] mariadb: Use qemu to run cross-compiled binaries Khem Raj
2021-07-06  9:56   ` [oe] " Zoltan Boszormenyi
2021-07-06 16:52     ` Khem Raj
2022-09-22  7:47   ` Yu, Mingli
2022-09-22 11:25     ` Ross Burton
2022-09-26  4:37       ` [meta-oe][kirkstone][PATCH] mariadb: not use " mingli.yu
     [not found]       ` <17184F1EA11A10CE.15234@lists.openembedded.org>
2022-10-17  5:56         ` [oe] " Yu, Mingli
2022-10-27 17:06           ` Randy MacLeod
     [not found]   ` <17171F2CE99AF5CD.13460@lists.openembedded.org>
2022-09-22  9:14     ` [oe] [meta-oe][PATCH 1/2] mariadb: Use " Yu, Mingli
     [not found] ` <20210706065549.187176-2-zboszor@gmail.com>
2021-07-07 18:05   ` [meta-oe][PATCH 2/2] mariadb: Upgrade to 10.5.11 Khem Raj

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.