Source: mariadb-10.5 Version: 1:10.5.5-1 Tags: patch User: debian-cr...@lists.debian.org Usertags: ftcbfs Control: tags 920365 + wontfix Control: close 920365
Hi Otto, great news. I managed to make mariadb cross buildable. It wasn't that hard in the end, I just got a number of things wrong on the road, which made it take a little longer. Instead of detailing on the problems encountered, I'm attaching a patch with a descriptive changelog. If you have any questions on why a particular change is needed, don't hesitate to ask. Integrating this may not be entirely trivial as you already cherry picked the dh_auto_configure part into git, but this patch is against the unstable version. One aspect I'd like to highlight is that mariadb wants to know the stack direction and you cannot determine this during cross compilation. For that reason, mariadb includes the stack direction for each architecture. Updating it will be required for new architectures from time to time. Hope this works for you. Do note however that making mariadb cross buildable implies not turning mariadb_config into a shell script. Doing so would require running mariadb_config during build, which we cannot do during cross builds. It was only ever meant as s stop-gap solution and the real solution is using pkg-config. So I'll have to send a lot of patches to mariadb users to make them stop using mariadb_config, which is fundamentally incompatible with cross compilation. Thus closing that bug. There is nothing we can do about that on the mariadb side anymore. Thanks for your cooperation with this matter Helmut
diff --minimal -Nru mariadb-10.5-10.5.5/debian/changelog mariadb-10.5-10.5.5/debian/changelog --- mariadb-10.5-10.5.5/debian/changelog 2020-09-25 18:56:59.000000000 +0200 +++ mariadb-10.5-10.5.5/debian/changelog 2020-09-26 08:00:12.000000000 +0200 @@ -1,3 +1,15 @@ +mariadb-10.5 (1:10.5.5-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Fix FTCBFS: (Closes: #-1) + + Add native dependencies on gnutls, libedit and ncurses. + + Use a native perl interpreter during build. + + Let dh_auto_configure pass -DCMAKE_SYSTEM_NAME to cmake. + + Keep default CMAKE_BUILD_TYPE=RelWithDebInfo instead of debhelper's None. + + Cache the per-architecture stack direction. + + -- Helmut Grohne <hel...@subdivi.de> Sat, 26 Sep 2020 08:00:12 +0200 + mariadb-10.5 (1:10.5.5-1) unstable; urgency=medium * New upstream version 10.5.5 (Closes: #968895) diff --minimal -Nru mariadb-10.5-10.5.5/debian/control mariadb-10.5-10.5.5/debian/control --- mariadb-10.5-10.5.5/debian/control 2020-09-24 00:19:37.000000000 +0200 +++ mariadb-10.5-10.5.5/debian/control 2020-09-26 08:00:12.000000000 +0200 @@ -17,12 +17,15 @@ libcrack2-dev (>= 2.9.0), libcurl4-openssl-dev | libcurl4-dev, libedit-dev, + libedit-dev:native, libgnutls28-dev (>= 3.3.24), + libgnutls28-dev:native (>= 3.3.24), libjemalloc-dev [linux-any], libjudy-dev, libkrb5-dev, liblz4-dev, libncurses5-dev (>= 5.0-6~), + libncurses5-dev:native (>= 5.0-6~), libnuma-dev [!armhf], libpam0g-dev, libpcre2-dev, @@ -31,7 +34,7 @@ libxml2-dev, libzstd-dev (>= 1.3.3), lsb-release, - perl, + perl:any, po-debconf, psmisc, unixodbc-dev, diff --minimal -Nru mariadb-10.5-10.5.5/debian/rules mariadb-10.5-10.5.5/debian/rules --- mariadb-10.5-10.5.5/debian/rules 2020-09-17 22:17:28.000000000 +0200 +++ mariadb-10.5-10.5.5/debian/rules 2020-09-26 08:00:12.000000000 +0200 @@ -22,8 +22,7 @@ RELEASE := $(shell lsb_release -r -s) # Use changelog based DEB_DISTRIBUTION instead? TMP:=$(CURDIR)/debian/tmp -CC := $(DEB_HOST_GNU_TYPE)-gcc -CXX := $(DEB_HOST_GNU_TYPE)-g++ +-include /usr/share/dpkg/buildtools.mk # According to Debian Policy version 4.2.0 builds should be as verbose as # possible unless 'terse' is specifically passed. @@ -53,6 +52,15 @@ CMAKEFLAGS += -DPLUGIN_ROCKSDB=NO endif +ifneq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH)) +ifneq (,$(filter $(DEB_HOST_ARCH_CPU),alpha amd64 arm arm64 i386 ia64 m68k mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sh4 sparc64)) +CMAKEFLAGS += -DSTACK_DIRECTION=-1 +endif +ifneq (,$(filter $(DEB_HOST_ARCH_CPU),hppa)) +CMAKEFLAGS += -DSTACK_DIRECTION=1 +endif +endif + ifeq ($(DEB_HOST_ARCH),riscv64) # riscv64 is currently very slow. TESTCASE_TIMEOUT=120 @@ -75,7 +83,7 @@ @echo "RULES.$@" dh_testdir dh_testroot - rm -rf $(BUILDDIR) builddir-native + rm -rf $(BUILDDIR) builddir-native extra/readline [ ! -f debian/mysql-test-unstable-tests.orig ] || \ mv debian/mysql-test-unstable-tests.orig mysql-test/unstable-tests @@ -94,12 +102,10 @@ # Remove -DWITH_SSL=bundle if you want to use system OpenSSL, otherwise # the server will use YaSSL and Connector/C will use GnuTLS. # Don't build ColumnStore, not mature enough for Debian yet. - mkdir -p $(BUILDDIR) && cd $(BUILDDIR) && \ - sh -c 'PATH=$${MYSQL_BUILD_PATH:-"/usr/lib/ccache:/usr/local/bin:/usr/bin:/bin"} \ - CC=${CC} \ - CXX=${CXX} \ - NO_UPDATE_BUILD_VERSION=1 \ - cmake -DCMAKE_INSTALL_PREFIX=/usr \ + PATH=$${MYSQL_BUILD_PATH:-"/usr/lib/ccache:/usr/local/bin:/usr/bin:/bin"} \ + NO_UPDATE_BUILD_VERSION=1 \ + dh_auto_configure --builddirectory=$(BUILDDIR) -- \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ $(CMAKEFLAGS) \ $(if $(filter $(DEB_BUILD_ARCH),$(DEB_HOST_ARCH)),,-DIMPORT_EXECUTABLES=$(CURDIR)/builddir-native/import_executables.cmake) \ -DCOMPILATION_COMMENT="$(DEB_VENDOR) $(RELEASE)" \ @@ -113,7 +119,7 @@ -DPLUGIN_AWS_KEY_MANAGEMENT=NO \ -DPLUGIN_COLUMNSTORE=NO \ -DWITH_INNODB_SNAPPY=ON \ - -DDEB=$(DEB_VENDOR) ..' + -DDEB=$(DEB_VENDOR) # This is needed, otherwise 'make test' will run before binaries have been built override_dh_auto_build: