[MDEV-20999] mysql_config does not work when cross compiling Created: 2019-11-06  Updated: 2021-09-27

Status: Open
Project: MariaDB Server
Component/s: None
Affects Version/s: 10.4.8
Fix Version/s: None

Type: Bug Priority: Major
Reporter: Jared Bents Assignee: Unassigned
Resolution: Unresolved Votes: 1
Labels: None
Environment:

Buildroot



 Description   

When trying to build rsyslog with mysql support via mariadb, the build will fail because it can not get the cflags from mysql_config. It fails to get the cflags because mysql_config is calling mariadb_config which is compiled for the target architecture and not the host that is performing the build.

Error shown by mysql_config

jmbents@bacon:~/rclinux/target_build/apm86290_common_platform_debug_defconfig$ /accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mysql_config --cflags
/accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mariadb_config: 1: /accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mariadb_config: Syntax error: "(" unexpected
/accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mariadb_config: 1: /accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mariadb_config: Syntax error: "(" unexpected
/accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mariadb_config: 1: /accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mariadb_config: Syntax error: "(" unexpected
/accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mariadb_config: 1: /accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mariadb_config: Syntax error: "(" unexpected
/accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mariadb_config: 1: /accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mariadb_config: Syntax error: "(" unexpected
/accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mariadb_config: 1: /accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mariadb_config: Syntax error: "(" unexpected
/accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mariadb_config: 1: /accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mariadb_config: Syntax error: "(" unexpected

Error shown by mysql_config when run as bash

jmbents@bacon:~/rclinux/target_build/apm86290_common_platform_debug_defconfig$ bash /accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mysql_config --cflags
/accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mysql_config: line 100: /accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mariadb_config: cannot execute binary file: Exec format error
/accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mysql_config: line 101: /accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mariadb_config: cannot execute binary file: Exec format error
/accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mysql_config: line 102: /accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mariadb_config: cannot execute binary file: Exec format error
/accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mysql_config: line 103: /accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mariadb_config: cannot execute binary file: Exec format error
/accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mysql_config: line 104: /accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mariadb_config: cannot execute binary file: Exec format error
/accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mysql_config: line 105: /accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mariadb_config: cannot execute binary file: Exec format error
/accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mysql_config: line 106: /accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mariadb_config: cannot execute binary file: Exec format error

output showing mariadb_config is compiled for powerpc (host is x86)

jmbents@bacon:~/rclinux/target_build/apm86290_common_platform_debug_defconfig$ file /accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mariadb_config
/accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mariadb_config: ELF 32-bit MSB shared object, PowerPC or cisco 4500, version 1 (SYSV), dynamically linked, interpreter /lib/ld., for GNU/Linux 4.9.0, not stripped

Makefile of rsyslog missing mysql_cflags due to error

jmbents@bacon:~/rclinux/target_build/apm86290_common_platform_debug_defconfig$ grep -r -n "MYSQL" build/rsyslog-8.22.0/Makefile
411:MYSQL_CFLAGS =
412:MYSQL_CONFIG = /accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot/usr/bin/mysql_config
413:MYSQL_LIBS =

This issue is avoided in oracle mysql by having mysql_config be a standalone script instead of wrapping around a c app that's been compiled for the target.



 Comments   
Comment by Jared Bents [ 2019-11-06 ]

If I replace the mysql_config.sh in mariadb with this one from oracle mysql, I am able to build and rsyslog gets the cflags it needs from mysql_config

https://github.com/mysql/mysql-server/blob/5.5/scripts/mysql_config.sh

Comment by Dennis [ 2021-09-27 ]

Issue still present in 10.5.11-1, /usr/bin/mysql_config is a symlink to /usr/bin/mariadb_config of arch <target> which cannot run on arch <build>.

Generated at Thu Feb 08 09:03:50 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.