[exim-dev] [Bug 2165] Compile error against MariaDB 10.2.8+

Top Page
Delete this message
Reply to this message
Author: admin
Date:  
To: exim-dev
Subject: [exim-dev] [Bug 2165] Compile error against MariaDB 10.2.8+
https://bugs.exim.org/show_bug.cgi?id=2165

Phil Pennock <pdp@???> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
           Assignee|nigel@???              |pdp@???


--- Comment #6 from Phil Pennock <pdp@???> ---
Choosing a repo from https://downloads.mariadb.org/mariadb/repositories/ we
get:

% vagrant up stretch
% vagrant ssh stretch
$ sudo apt-get install software-properties-common dirmngr
$ sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com
0xF1656F24C74CD1D8
$ sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el]
http://mirrors.syringanetworks.net/mariadb/repo/10.2/debian stretch main'
$ sudo apt update
$ sudo apt install mariadb-server
$ mysql --version
mysql Ver 15.1 Distrib 10.2.8-MariaDB, for debian-linux-gnu (x86_64) using
readline 5.2

So far, no client headers.
$ sudo apt install libmariadb-dev

Confirmed. More, this package claims to "Provides"
"libmariadbclient-dev-compat", so it is asserting itself to be a compatibility
package. I think their idea of compatibility is not compatible with my idea of
compatibility.

At this point, half-assing it with tinkering with include paths is no longer
tenable. If things keep changing like this then clearly we're not using the
supported public APIs.

I am struggling to find any documentation aimed at client developers on how to
use the API, to figure out what we should be doing.

Can someone find / point us at documentation please?

Failing that, I _think_ that the correct solution is:

#include <mysql.h>
#ifdef LIBMARIADB
# include <mariadb_version.h>
#else
# include <mysql_version.h>
#endif

and then in mysql_version_report(), which is the only place we're using this,
to let sysadmins see what's actually being used, switch again on LIBMARIADB,
report MARIADB_CLIENT_VERSION_STR and not the compilation comment. We can
change the wording to mention MariaDB.

Is it plausible that this is a bug in the MariaDB version of mysql_config
(*not* mariadb_config) which should have added the server/ sub-directory to
--cflags when the content was moved?

Since we don't actually use mysql_config (I never use MySQL and I think I'm the
only one who has done pkgconf-style migration work) ... is it plausible that
instead of pulling in server/, we should just change src/EDITME and the
examples for LOOKUP_INCLUDE to say something like:

## If using MariaDB 10.2.8 or newer, then:
# LOOKUP_INCLUDE=-I/usr/include/mysql -I/usr/include/mysql/server

ie the API expects the server dir to have been added to the search-path, rather
than to appear in import statements? This hypothesis seems to be borne out by
"grep include *" inside /usr/include/mysql/server, where none of the imports
include "server/".

--
You are receiving this mail because:
You are on the CC list for the bug.