[debian-mysql] More on Multi-Arch and MariaDB
Helmut Grohne
helmut at subdivi.de
Wed Nov 16 06:21:55 UTC 2016
Hi Otto,
On Tue, Nov 15, 2016 at 05:48:58PM +0200, Otto Kekäläinen wrote:
> Multi-arch seems now to be fixed for the shared libraries. However,
> the -dev library issues remain.
Thank you. I do note that working on the -dev packages has much less
impact than the libraries. If you look at the conflicts table of
https://bootstrap.debian.net/cross_all.html, you see that they are not
involved in many packages.
> Now multi-arch linter complains about the fact that the
> libmariadbclient-dev and libmariadb-dev packages are not Multi-Arch.
> Actually, they cannot even be because they contain binaries like
> mysql_config:
Can you show a reference to those complaints? I cannot find them atm.
Note that it takes most buildd builds plus a day for the hints to
stabilize. Maybe you looked too early?
> libmariadbclient-dev:
> usr/bin/mysql_config
This is hard and probably is a blocker to cross building. It is
equivalent to #794103 (worthy a read, elaborate explanation of the
problem and approaches).
Basically, the problem with it is that it needs to be run during build
(thus the binary needs to be a build architecture executable), but it
needs to tell things about the host architecture library. Thus we'd need
(number of release architectures)^2 number of mysql_configs. That's not
gonna work.
The only workable solution (long term) is to switch to pkg-config
(strongly preferred) or to an implementation in a scripting language.
> usr/include/mysql/*.h
> usr/include/mysql/psi/*.h
If these really conflicts (did you check?), just move them to
/usr/include/$(DEB_HOST_MULTIARCH). It works equivalent to
/usr/lib/$(DEB_HOST_MULTIARCH). gcc and clang search it by default. You
may still have to update mysql_config to emit it and test reverse
dependencies, but this is a rather simple matter.
> usr/lib/*/libmariadbclient.a
> usr/lib/*/libmariadbclient.so
> usr/lib/*/libmariadbclient_r.a
> usr/lib/*/libmariadbclient_r.so*
> usr/lib/*/libmysqlservices.a
Your "*" indicates a multiarch triplet. Thus these paths are different
per architecture and thus not a problem to multiarch. In fact moving
stuff to multiarch paths is the primary tool to allow coinstallability.
> usr/share/aclocal/mysql.m4
Does this vary across architectures? I suppose no. Thus not a problem.
> Should I maybe remove the "Multi-Arch: same" from
> libmariadb-dev-compat package so it maches it's dependencies are so
> too?
I'd argue "no". You are correct that it kinda is useless when
dependencies are not ready, but it helps analyzing the whole situation
to know that libmariadb-dev-compat is ready in principle. Dependency
resolvers know how to cope with such situations.
If you intend to work on multiarching -dev packages, focus on
mysql_config. The remainders are much simpler.
Hope this helps.
Helmut
More information about the pkg-mysql-maint
mailing list