[Buildroot] Cross-compile mariadb-connector-c for MySQL use
Peter Seiderer
ps.report at gmx.net
Wed Jun 3 11:49:37 UTC 2020
Hello Todd,
On Tue, 2 Jun 2020 18:12:07 -0400, Todd Sampson <sampsonats at gmail.com> wrote:
> Thanks for your quick reply. Another person set up the environment. I'm
> trying to update the mariadb-connector-c. It uses an out of buildroot
> source tree as below: Towards the bottom, you'll see packages that have
> been added. mariadb-connector-c was added because the connector wasn't
> part of mariadb. m9k-poco was added. I don't know why the built-in poco
> wasn't used. m9kservd is our app that uses poco to connect to MySQL
> server. Buildroot is started with:
>
> export MCU=~/m9k2/MCU/firmware/m9000/buildroot
> > make BR2_EXTERNAL='$(MCU)/' m9000_defconfig
>
>
> I've done *make clean all*. Hopefully that's the same as: *make clean &&
> make*
>
> mariadb-connector-c comes from:
>
> MARIADB_CONNECTOR_C_VERSION = 3.1.8
> > #MARIADB_CONNECTOR_C_SITE =
> > https://downloads.mariadb.org/interstitial/connector-c-$(MARIADB_CONNECTOR_C_VERSION)
> > <--- 2.3.7
> > MARIADB_CONNECTOR_C_SITE =
> > https://downloads.mariadb.com/Connectors/c/connector-c-$(MARIADB_CONNECTOR_C_VERSION)
> > <--- 3.1.8
> > MARIADB_CONNECTOR_C_SOURCE =
> > mariadb-connector-c-$(MARIADB_CONNECTOR_C_VERSION)-src.tar.gz
> > MARIADB_CONNECTOR_C_LICENSE = LGPL-2.0
> > MARIADB_CONNECTOR_C_LICENSE_FILES = README COPYING.LIB
> > MARIADB_CONNECTOR_C_INSTALL_STAGING = YES
>
>
> MySQL 8 is not involved in the target. It is run in another linux host.
> MySQL 8 comes from: sudo apt install mysql-server
>
> So, it looks like I need to build mariadb for the connector, *but I don't
> want it to be installed in the target*.
>
> The project is somewhat complex. I'm not sure how I could send you a
> complete project to try. Do you have a suggestion? Maybe I can pare it
> down to the minimum.
>
> Can you tell me how I should proceed? Should I abandon the add-on m9kpoco
> and mariadb-connector-c packages and:
> 1. Use the built-in poco
> 2. Somehow get poco to use the connector in mariadb
> 3. Somehow get mariadb to be available for poco to link to but not be
> installed in the target
Thanks for your defconfig, as expected only the client tools/libs from mariadb
are build and installed, e.g.:
$ find target/usr/bin -name "mysql*"
target/usr/bin/mysqltest
target/usr/bin/mysql
target/usr/bin/mysqlcheck
target/usr/bin/mysqldump
target/usr/bin/mysqlimport
target/usr/bin/mysqlshow
target/usr/bin/mysql_plugin
target/usr/bin/mysqlbinlog
target/usr/bin/mysqladmin
target/usr/bin/mysqlslap
target/usr/bin/mysql_waitpid
target/usr/bin/mysqlaccess
target/usr/bin/mysql_find_rows
Thirteen binaries, each one ca. 3.5-4.0M of size...
If I understand your use case right the mysql libraries (or a selection of it
for maridb-connector-c/poco) would be enough? You an trim down your
target with a post-build script...
Yes, I would try the buildroot-poco (BR2_PACKAGE_POCO=y, BR2_PACKAGE_POCO_DATA_MYSQL=y)
in the best case your application builds/runs without further problems with the
provided versions ;-)
Regards,
Peter
>
> Thanks. Very much appreciated.
>
> > dfr at cmake:~/m9k2/MCU/firmware/m9000/buildroot$ tree
> > .
> > ├── board
> > │ └── usi
> > │ ├── m9000
> > │ │ ├── configs
> > │ │ │ ├── busybox.config
> > │ │ │ ├── linux.config
> > │ │ │ ├── uboot.config
> > │ │ │ └── user_table.txt
> > │ │ ├── debian_package
> > │ │ │ ├── DEBIAN
> > │ │ │ │ ├── config
> > │ │ │ │ ├── control
> > │ │ │ │ ├── postinst
> > │ │ │ │ └── preinst
> > │ │ │ └── var
> > │ │ │ └── tmp
> > │ │ │ └── m9kfirmware
> > │ │ │ └── update.sh
> > │ │ ├── images
> > │ │ │ ├── boot.its
> > │ │ │ ├── m9000.dts
> > │ │ │ ├── override.env
> > │ │ │ ├── preboot.scr
> > │ │ │ └── update.its
> > │ │ ├── m9000.mk
> > │ │ ├── patches
> > │ │ │ ├── dropbear
> > │ │ │ │ └── 0001-dropbear-allow-legacy-key-exchange.patch
> > │ │ │ ├── e2fsprogs
> > │ │ │ │ └── 0002-e2fsprogs-nodiscard-default.patch
> > │ │ │ ├── linux
> > │ │ │ │ └── 001-add-m9000.patch
> > │ │ │ ├── uboot
> > │ │ │ │ ├── 0001-uboot-m9000-modify.patch
> > │ │ │ │ ├── 0002-uboot-m9000-add.patch
> > │ │ │ │ ├── 0003-uboot-disable-tools.patch
> > │ │ │ │ ├── 0004-uboot-fix-gcc-inline.patch
> > │ │ │ │ ├── 0005-uboot-add-update-to-kconfig.patch
> > │ │ │ │ └── 0006-uboot-fix-fit-update.patch
> > │ │ │ └── uboot-tools
> > │ │ │ ├──
> > 0001-uboot-tools-fw_printenv-dont-use-gnu-sscanf-m.patch
> > │ │ │ └── 0002-uboot-tools-m9000-defaults.patch
> > │ │ ├── rootfs_overlay
> > │ │ │ ├── etc
> > │ │ │ │ ├── default
> > │ │ │ │ │ ├── dropbear
> > │ │ │ │ │ └── ntpd
> > │ │ │ │ ├── dropbear
> > │ │ │ │ │ └── dropbear_rsa_host_key
> > │ │ │ │ ├── fw_env.config
> > │ │ │ │ ├── init.d
> > │ │ │ │ │ ├── S49ntp
> > │ │ │ │ │ ├── S50dropbear
> > │ │ │ │ │ ├── S70modules
> > │ │ │ │ │ └── S90m9000
> > │ │ │ │ └── profile
> > │ │ │ ├── fl
> > │ │ │ │ ├── app
> > │ │ │ │ │ └── init.sh
> > │ │ │ │ └── config
> > │ │ │ │ ├── config.xml
> > │ │ │ │ ├── default.xml
> > │ │ │ │ └── verbose.txt
> > │ │ │ ├── hd
> > │ │ │ │ └── dat
> > │ │ │ └── sbin
> > │ │ │ └── watchdog
> > │ │ └── scripts
> > │ │ ├── post_build.sh
> > │ │ └── post_image.sh
> > │ └── usi.mk
> > ├── Config.in
> > ├── configs
> > │ └── m9000_defconfig
> > ├── external.desc
> > ├── external.mk
> > ├── local.mk
> > ├── package
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > *│ └── usi│ ├── Config.in│ ├── m9kbootstrap│ │ ├──
> > Config.in│ │ └── m9kbootstrap.mk <http://m9kbootstrap.mk>│
> > ├── m9kdriver│ │ ├── Config.in│ │ └── m9kdriver.mk
> > <http://m9kdriver.mk>│ ├── m9kfpga│ │ ├── Config.in│
> > │ └── m9kfpga.mk <http://m9kfpga.mk>│ ├── m9k-poco│ │ ├──
> > Config.in│ │ └── m9k-poco.mk <http://m9k-poco.mk>│ ├──
> > m9kservd│ │ ├── Config.in│ │ └── m9kservd.mk
> > <http://m9kservd.mk>│ ├── mariadb-connector-c│ │ ├──
> > Config.in│ │ └── mariadb-connector-c.mk
> > <http://mariadb-connector-c.mk>**│ └── usi.mk <http://usi.mk>*
> > ├── version
> > └── version.txt
>
>
>
>
>
> On Tue, Jun 2, 2020 at 4:33 PM Peter Seiderer <ps.report at gmx.net> wrote:
>
> > Hello Todd,
> >
> > On Tue, 2 Jun 2020 15:47:34 -0400, Todd Sampson <sampsonats at gmail.com>
> > wrote:
> >
> > > I want to cross-compile mariadb-connector-c to link with the Poco library
> > > to create a MySQL client.
> > >
> > > Everything was working with mariadb-connector-c version 2.3.7. I need to
> > > update to 3.1.8 for compatibility with MySQL version 8. When I changed
> > the
> > > mariadb-connector-c buildroot target to 3.1.8, the build failed because
> > > mariadb-connector-c had more dependencies.
> > >
> > > It seems like mariadb-connector-c depends on the mariadb server to be
> > > built. If I build the server, mariadb-connector-c is happy. The problem
> > > is, the mariadb server is installed on the target and there is no room
> > for
> > > it.
> > >
> > > I tried putting:
> > >
> > > > MARIADB_INSTALL_TARGET = NO
> > >
> > > in the mariadb server .mk file but it still was installed.
> > >
> > > If I don't select mariadb server, I get these errors and lots more
> > similar:
> > >
> > >
> > home/dfr/m9k2/buildroot/output/host/lib/gcc/powerpc-buildroot-linux-gnu/8.4.0/../../../../powerpc-buildroot-linux-gnu/bin/ld:
> > > >
> > /home/dfr/m9k2/buildroot/output/host/powerpc-buildroot-linux-gnu/sysroot/usr/lib/mariadb/libmariadbclient.a(openssl.c.o):
> > > > in function `ma_tls_set_error':
> > > > openssl.c:(.text+0x28): undefined reference to `ERR_get_error'
> > > >
> > /home/dfr/m9k2/buildroot/output/host/lib/gcc/powerpc-buildroot-linux-gnu/8.4.0/../../../../powerpc-buildroot-linux-gnu/bin/ld:
> > > > openssl.c:(.text+0x64): undefined reference to
> > `ERR_reason_error_string'
> > >
> > >
> > > *buildroot version 2020.05*
> > > *QUESTIONS*
> > > 1. Is there a better way to approach this?
> > > 2. How do I let mariadb server be built but *not *installed in the
> > target?
> > > 3. Should I be able to use the Poco library built into buildroot? It
> > seems
> > > like there should be an option in Poco to build the mariadb-connector-c
> > > library and just work.
> > > 4. Is anyone else in the world besides me trying to do this?
> > >
> > > I've been working on this for over two weeks now. I sure would
> > appreciate
> > > any help!
> >
> > First thing to do is support the buildroot people by providing your config
> > (or defconfig)
> > file which produces your problem (against a vanilla buildroot release or
> > git tree, so
> > other people can try to re-produce your problem)...
> >
> > Try to reproduce your problem with an complete re-build (make clean &&
> > make), see [1]
> >
> > As far as I can see in the builroot-2020.05 source mariadb is at version
> > 10.3.23,
> > where does your 2.3.7, 3.1.8 and MySQL version 8 come from?
> >
> > According to [2] mariadb-connector-c is included in mariadb-10.3.23 and
> > the buildroot package poco mysql component (BR2_PACKAGE_POCO_DATA_MYSQL)
> > simple
> > selects BR2_PACKAGE_MYSQL....do your try to build some packages outside of
> > buildroot? If yes...why?
> >
> > Regards,
> > Peter
> >
> > [1] https://buildroot.org/downloads/manual/manual.html#full-rebuild
> > [2] https://mariadb.com/kb/en/mariadb-connector-c-318-release-notes/
> >
> > > Thanks
> >
> >
More information about the buildroot
mailing list