[Buildroot] [PATCH 1/1] package/libodb-mysql: don't use mysql_config outside static build

Fabrice Fontaine fontaine.fabrice at gmail.com
Sun Nov 14 14:26:16 UTC 2021


Hello Thomas,

Le dim. 14 nov. 2021 à 15:21, Thomas Petazzoni
<thomas.petazzoni at bootlin.com> a écrit :
>
> Hello Fabrice,
>
> On Sat, 13 Nov 2021 11:51:30 +0100
> Fabrice Fontaine <fontaine.fabrice at gmail.com> wrote:
>
> > uclibc (and glibc) installs the following ld script in
> > $(STAGING_DIR)/usr/lib/libc.so in addition to the 'standard' library
> > installed in $(STAGING_DIR)/lib:
> >
> > /* GNU ld script
> >  * Use the shared library, but some functions are only in
> >  * the static library, so try that secondarily. */
> > OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc",
> >             "elf32-powerpc")
> > GROUP ( /lib/libc.so.1 /usr/lib/uclibc_nonshared.a libpthread_nonshared.a AS_NEEDED ( /lib/ld-uClibc.so.1 ) )
> >
> > For an unknown reason, if this script is used, this will result in
> > the following build failure:
> >
> > configure:3286: /home/giuliobenetti/autobuild/run/instance-3/output-1/per-package/libodb-mysql/host/bin/powerpc-buildroot-linux-uclibc-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -Os -g0  -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -rdynamic -L/home/giuliobenetti/autobuild/run/instance-3/output-1/per-package/libodb-mysql/host/powerpc-buildroot-linux-uclibc/sysroot/usr/lib/mysql -lmysqlclient -L/home/giuliobenetti/autobuild/run/instance-3/output-1/per-package/oracle-mysql/host/powerpc-buildroot-linux-uclibc/sysroot/usr/lib -lz -lnsl -lm >&5
> > /home/giuliobenetti/autobuild/run/instance-3/output-1/per-package/libodb-mysql/host/bin/../lib/gcc/powerpc-buildroot-linux-uclibc/10.3.0/../../../../powerpc-buildroot-linux-uclibc/bin/ld: cannot find /lib/libc.so.1
> > /home/giuliobenetti/autobuild/run/instance-3/output-1/per-package/libodb-mysql/host/bin/../lib/gcc/powerpc-buildroot-linux-uclibc/10.3.0/../../../../powerpc-buildroot-linux-uclibc/bin/ld: cannot find /usr/lib/uclibc_nonshared.a
> > /home/giuliobenetti/autobuild/run/instance-3/output-1/per-package/libodb-mysql/host/bin/../lib/gcc/powerpc-buildroot-linux-uclibc/10.3.0/../../../../powerpc-buildroot-linux-uclibc/bin/ld: cannot find /lib/ld-uClibc.so.1
> >
> > To fix this build failure, don't use mysql_config outside of static
> > builds.
>
> Do you have a minimal defconfig to reproduce the build failure? Indeed,
> I remember already seeing and fixing similar issues arising when
> BR2_PER_PACKAGE_DIRECTORIES=y (which is enabled in the failing
> configuration). And for I remember, this was due to incorrect -L flags.
> In the example here, you have two -L:
>
> -L/home/giuliobenetti/autobuild/run/instance-3/output-1/per-package/libodb-mysql/host/powerpc-buildroot-linux-uclibc/sysroot/usr/lib/mysql
> -L/home/giuliobenetti/autobuild/run/instance-3/output-1/per-package/oracle-mysql/host/powerpc-buildroot-linux-uclibc/sysroot/usr/lib
>
> The former is correct, the latter is not, and it does cause this kind
> of linker issue. So the real fix (I think!) is not understand why we
> have this bogus second -L option, and get rid of it.
The second -L option is "hard-coded" in mysql_config which is itself
generated by oracle-mysql-5.1.73/scripts/mysql_config.pl.in.
I'll investigate how to fix it.
>
> You can read the commit log of a18c828bed99d7e0db5128224ffcda4897cd8e80
> which explains what is going on.
>
> Best regards,
>
> Thomas
> --
> Thomas Petazzoni, co-owner and CEO, Bootlin
> Embedded Linux and Kernel engineering and training
> https://bootlin.com
Best Regards,

Fabrice


More information about the buildroot mailing list