[debian-mysql] Bug#930314: mariadb-10.3 FTCBFS: multiple reasons

Helmut Grohne helmut at subdivi.de
Mon Jun 10 12:59:57 BST 2019


Source: mariadb-10.3
Version: 1:10.3.15-2
Tags: patch
User: debian-cross at lists.debian.org
Usertags: ftcbfs

mariadb-10.3 fails to cross build from source. The immediate reason is
that its perl dependency is not satisfiable. I'm not quite sure what it
needs perl for, so I'm uneasy about annotating it :native. Let's defer
that part for now.

Once the dependency issue is ignored, a cross build gets quite far until
it tries to execute host tools. A little research on the web quickly
yields https://mariadb.com/kb/en/library/cross-compiling-mariadb/. There
we read that we should perform a native build pass with a make target of
import_executables first. The attached patch implements that.
Unfortunately, it seems like mariadb cannot be built without libreadline
at all (even for the import_executables), so we'll have to depend on the
build architecture libreadline-gplv2-dev. At this point, we'll get stuck
as installing multiple libreadline-gplv2-dev is currently broken
(#707750).

While getting there, I also ran into a small problem where
cmake/systemd.cmake would use CHECK_LIBRARY_EXISTS without
INCLUDE(CheckLibraryExists) and fail. This looks like a simple upstream
bug.

So the attached patch will not make mariadb-10.3 cross buildable, but it
will be a little closer to that goal. Can you apply it and close this
bug when doing so?

Helmut
-------------- next part --------------
diff --minimal -Nru mariadb-10.3-10.3.15/debian/changelog mariadb-10.3-10.3.15/debian/changelog
--- mariadb-10.3-10.3.15/debian/changelog	2019-06-07 08:13:35.000000000 +0200
+++ mariadb-10.3-10.3.15/debian/changelog	2019-06-10 06:34:40.000000000 +0200
@@ -1,3 +1,14 @@
+mariadb-10.3 (1:10.3.15-2.1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Improve cross building. (Closes: #-1)
+    + Perform a native build of import_executables first.
+    + cross.patch: Fix missing include in cmake/systemd.cmake.
+    + Build-Depends: libreadline-gplv2-dev:native for the native pass.
+    + Forward IMPORT_EXECUTABLES to the cross build pass.
+
+ -- Helmut Grohne <helmut at subdivi.de>  Mon, 10 Jun 2019 06:34:40 +0200
+
 mariadb-10.3 (1:10.3.15-2) unstable; urgency=medium
 
   [ Julien Muchembled ]
diff --minimal -Nru mariadb-10.3-10.3.15/debian/control mariadb-10.3-10.3.15/debian/control
--- mariadb-10.3-10.3.15/debian/control	2019-05-21 09:45:30.000000000 +0200
+++ mariadb-10.3-10.3.15/debian/control	2019-06-10 06:34:40.000000000 +0200
@@ -24,6 +24,7 @@
                libpam0g-dev,
                libpcre3-dev (>= 2:8.35-3.2~),
                libreadline-gplv2-dev,
+               libreadline-gplv2-dev:native,
                libsnappy-dev,
                libsystemd-dev [linux-any],
                libxml2-dev,
diff --minimal -Nru mariadb-10.3-10.3.15/debian/patches/cross.patch mariadb-10.3-10.3.15/debian/patches/cross.patch
--- mariadb-10.3-10.3.15/debian/patches/cross.patch	1970-01-01 01:00:00.000000000 +0100
+++ mariadb-10.3-10.3.15/debian/patches/cross.patch	2019-06-10 06:34:40.000000000 +0200
@@ -0,0 +1,10 @@
+--- mariadb-10.3-10.3.15.orig/cmake/systemd.cmake
++++ mariadb-10.3-10.3.15/cmake/systemd.cmake
+@@ -19,6 +19,7 @@
+     # http://www.cmake.org/cmake/help/v3.0/module/FindPkgConfig.html
+     INCLUDE(CheckFunctionExists)
+     INCLUDE(CheckIncludeFiles)
++    INCLUDE(CheckLibraryExists)
+ 
+     SET(WITH_SYSTEMD "auto" CACHE STRING "Enable systemd scripts and notification support")
+     IF(WITH_SYSTEMD STREQUAL "yes" OR WITH_SYSTEMD STREQUAL "auto")
diff --minimal -Nru mariadb-10.3-10.3.15/debian/patches/series mariadb-10.3-10.3.15/debian/patches/series
--- mariadb-10.3-10.3.15/debian/patches/series	2019-05-03 16:05:31.000000000 +0200
+++ mariadb-10.3-10.3.15/debian/patches/series	2019-06-10 06:34:40.000000000 +0200
@@ -17,3 +17,4 @@
 tokudb-libjemalloc.patch
 MDEV-18768-automate-auth_socket-to_unix_socket-upgrade.patch
 928230-mysql_config---libmysqld-libs.patch
+cross.patch
diff --minimal -Nru mariadb-10.3-10.3.15/debian/rules mariadb-10.3-10.3.15/debian/rules
--- mariadb-10.3-10.3.15/debian/rules	2019-05-21 09:45:30.000000000 +0200
+++ mariadb-10.3-10.3.15/debian/rules	2019-06-10 06:34:40.000000000 +0200
@@ -66,7 +66,7 @@
 	rm -f storage/mroonga/mysql-test/mroonga/storage/r/variable_version.result
 	rm -f debian/mariadb-server-10.3.mariadb.service
 	rm -f debian/mariadb-server-10.3.mariadb at .service
-	rm -rf $(BUILDDIR)
+	rm -rf $(BUILDDIR) builddir-native
 
 	[ ! -f debian/mysql-test-unstable-tests.orig ] || \
 	    mv debian/mysql-test-unstable-tests.orig mysql-test/unstable-tests
@@ -84,6 +84,11 @@
 	rm debian/libmariadb3.symbols
 endif
 
+ifneq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH))
+	dpkg-architecture -a$(DEB_BUILD_ARCH) -f -c dh_auto_configure --builddirectory=builddir-native
+	dh_auto_build --builddirectory=builddir-native -- import_executables
+endif
+
 	# Remove -DWITH_SSL=bundle if you want to use system OpenSSL, otherwise
 	# the server will use YaSSL and Connector/C will use GnuTLS
 	mkdir -p $(BUILDDIR) && cd $(BUILDDIR) && \
@@ -92,6 +97,7 @@
 	    	CXX=${CXX} \
 	    cmake -DCMAKE_INSTALL_PREFIX=/usr \
 	    $(CMAKEFLAGS) \
+	    $(if $(filter $(DEB_BUILD_ARCH),$(DEB_HOST_ARCH)),,-DIMPORT_EXECUTABLES=$(CURDIR)/builddir-native/import_executables.cmake) \
 	    -DCOMPILATION_COMMENT="$(DEB_VENDOR) $(RELEASE)" \
 	    -DMYSQL_SERVER_SUFFIX="-$(DEB_VERSION_REVISION)" \
 	    -DSYSTEM_TYPE="debian-$(DEB_HOST_GNU_SYSTEM)" \


More information about the pkg-mysql-maint mailing list