mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-06-15 06:10:02 +00:00
mariadb: Use qemu to run cross-compiled binaries
This way, mariadb does not depend on mariadb-native anymore.
Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
(cherry picked from commit 6f05b2463a)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
This commit is contained in:
committed by
Armin Kuster
parent
a6ec992b3f
commit
48a84cb8a1
@@ -12,7 +12,6 @@ SRC_URI = "https://downloads.mariadb.org/interstitial/${BP}/source/${BP}.tar.gz
|
|||||||
file://mysql-systemd-start \
|
file://mysql-systemd-start \
|
||||||
file://configure.cmake-fix-valgrind.patch \
|
file://configure.cmake-fix-valgrind.patch \
|
||||||
file://support-files-CMakeLists.txt-fix-do_populate_sysroot.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://0001-disable-ucontext-on-musl.patch \
|
||||||
file://c11_atomics.patch \
|
file://c11_atomics.patch \
|
||||||
file://clang_version_header_conflict.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-innobase-Define-__NR_futex-if-it-does-not-exist.patch \
|
||||||
file://0001-aio_linux-Check-if-syscall-exists-before-using-it.patch \
|
file://0001-aio_linux-Check-if-syscall-exists-before-using-it.patch \
|
||||||
file://sys_futex.patch \
|
file://sys_futex.patch \
|
||||||
file://cross-compiling.patch \
|
|
||||||
file://ssize_t.patch \
|
file://ssize_t.patch \
|
||||||
file://mm_malloc.patch \
|
file://mm_malloc.patch \
|
||||||
"
|
"
|
||||||
@@ -60,8 +58,6 @@ SYSTEMD_AUTO_ENABLE_${PN}-setupdb ?= "enable"
|
|||||||
ALLOW_EMPTY_${PN}-setupdb ?= "1"
|
ALLOW_EMPTY_${PN}-setupdb ?= "1"
|
||||||
FILES_${PN}-setupdb = "${sysconfdir}/init.d/install_db"
|
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 ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} setupdb"
|
||||||
PACKAGECONFIG_class-native = ""
|
PACKAGECONFIG_class-native = ""
|
||||||
PACKAGECONFIG[pam] = ",-DWITHOUT_AUTH_PAM=TRUE,libpam"
|
PACKAGECONFIG[pam] = ",-DWITHOUT_AUTH_PAM=TRUE,libpam"
|
||||||
@@ -95,6 +91,8 @@ EXTRA_OECMAKE = "-DWITH_EMBEDDED_SERVER=ON \
|
|||||||
-DCAT_EXECUTABLE=`which cat` \
|
-DCAT_EXECUTABLE=`which cat` \
|
||||||
-DCMAKE_AR:FILEPATH=${AR}"
|
-DCMAKE_AR:FILEPATH=${AR}"
|
||||||
|
|
||||||
|
EXTRA_OECMAKE_prepend_class-target = "-DCMAKE_CROSSCOMPILING_EMULATOR=${WORKDIR}/qemuwrapper "
|
||||||
|
|
||||||
# With Ninja it fails with:
|
# With Ninja it fails with:
|
||||||
# make: *** No rule to make target `install'. Stop.
|
# make: *** No rule to make target `install'. Stop.
|
||||||
OECMAKE_GENERATOR = "Unix Makefiles"
|
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
|
sed -i "/set( CMAKE_SYSTEM_PROCESSOR/d" ${WORKDIR}/toolchain.cmake
|
||||||
}
|
}
|
||||||
|
|
||||||
do_compile_prepend_class-target () {
|
do_configure_prepend_class-target () {
|
||||||
# These need to be in-tree or make will think they need to be built,
|
# Write out a qemu wrapper that will be used by cmake
|
||||||
# and since we're cross-compiling that is disabled
|
# so that it can run target helper binaries through that.
|
||||||
cp ${STAGING_BINDIR_NATIVE}/comp_err ${S}/extra
|
qemu_binary="${@qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST'), [d.expand('${STAGING_DIR_HOST}${libdir}'),d.expand('${STAGING_DIR_HOST}${base_libdir}')])}"
|
||||||
cp ${STAGING_BINDIR_NATIVE}/comp_sql ${S}/scripts
|
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 [ "${@bb.utils.contains('PACKAGECONFIG', 'krb5', 'yes', 'no', d)}" = "no" ]; then
|
||||||
if ! [ -e ${B}/include/openssl/kssl.h ] ; then
|
if ! [ -e ${B}/include/openssl/kssl.h ] ; then
|
||||||
mkdir -p ${B}/include/openssl
|
mkdir -p ${B}/include/openssl
|
||||||
@@ -132,11 +136,6 @@ do_compile_prepend_class-target () {
|
|||||||
echo "#endif" >>${B}/include/openssl/kssl.h
|
echo "#endif" >>${B}/include/openssl/kssl.h
|
||||||
fi
|
fi
|
||||||
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"
|
SYSROOT_PREPROCESS_FUNCS += "mariadb_sysroot_preprocess"
|
||||||
|
|||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
require mariadb.inc
|
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"
|
PROVIDES += "mysql5 libmysqlclient"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user