All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Seiderer <ps.report@gmx.net>
To: buildroot@busybox.net
Subject: [Buildroot] Cross-compile mariadb-connector-c for MySQL use
Date: Wed, 3 Jun 2020 13:49:37 +0200	[thread overview]
Message-ID: <20200603134937.52dfe2ab@gmx.net> (raw)
In-Reply-To: <CADJjDh8aS9LK2GT6z1wXipURHrPtm1jF7av4WCgdm8Q5pLerzg@mail.gmail.com>

Hello Todd,

On Tue, 2 Jun 2020 18:12:07 -0400, Todd Sampson <sampsonats@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@gmx.net> wrote:
> 
> > Hello Todd,
> >
> > On Tue, 2 Jun 2020 15:47:34 -0400, Todd Sampson <sampsonats@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  
> >
> >  

      reply	other threads:[~2020-06-03 11:49 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-02 19:47 [Buildroot] Cross-compile mariadb-connector-c for MySQL use Todd Sampson
2020-06-02 20:33 ` Peter Seiderer
2020-06-02 22:12   ` Todd Sampson
2020-06-03 11:49     ` Peter Seiderer [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200603134937.52dfe2ab@gmx.net \
    --to=ps.report@gmx.net \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.