summaryrefslogtreecommitdiff
path: root/debian/rules
diff options
context:
space:
mode:
Diffstat (limited to 'debian/rules')
-rwxr-xr-xdebian/rules158
1 files changed, 158 insertions, 0 deletions
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..707c3b5
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,158 @@
+#!/usr/bin/make -f
+
+export DH_VERBOSE=1
+
+# enable Debian Hardening
+# see: https://wiki.debian.org/Hardening
+export DEB_BUILD_MAINT_OPTIONS = hardening=+all
+DPKG_EXPORT_BUILDFLAGS = 1
+include /usr/share/dpkg/default.mk
+
+BUILDDIR := builddir
+DEB_VERSION_REVISION := $(shell echo $(DEB_VERSION) | sed -e 's/^.*-//')
+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++
+
+# Parallel build support as advised
+# at https://www.debian.org/doc/debian-policy/ch-source.html#s-debianrules-options
+ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+ NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+ MAKEFLAGS += -j $(NUMJOBS)
+else
+ # NUMJOBS cannot be empty as it is used as a parameter to mtr, default to 1.
+ NUMJOBS = 1
+endif
+
+# Ignore test suite exit code on unstable platforms
+ifeq ($(DEB_HOST_ARCH),$(filter $(DEB_HOST_ARCH),mips mipsel alpha powerpc sh4 hurd-i386))
+ TESTSUITE_FAIL_CMD:=true
+else
+ TESTSUITE_FAIL_CMD:=exit 1
+endif
+
+# Skip TokuDB if arch is not amd64 (also disable for kfreebsd-amd64 as it FTBFS)
+# Skipped on the x32 ABI too; untested, but unlikely to work given i386 is not
+# supported.
+ifneq ($(DEB_HOST_ARCH),amd64)
+ CMAKEFLAGS += -DWITHOUT_TOKUDB=true
+endif
+
+# Disable jemalloc on mips* due to #843926
+ifneq (,$(filter $(DEB_HOST_ARCH), mips mipsel mips64 mips64el))
+ CMAKEFLAGS += -DWITH_JEMALLOC=no
+endif
+
+# Add support for verbose builds
+MAKEFLAGS += VERBOSE=1
+
+override_dh_auto_clean:
+ @echo "RULES.$@"
+ dh_testdir
+ dh_testroot
+ rm -rf mysql-test/var
+ rm -f storage/mroonga/mysql-test/mroonga/storage/r/information_schema_plugins.result
+ rm -f storage/mroonga/mysql-test/mroonga/storage/r/variable_version.result
+ rm -f debian/mariadb-server-10.1.mariadb.service
+ rm -f debian/mariadb-server-10.1.mariadb@.service
+ rm -rf $(BUILDDIR)
+
+ [ ! -f debian/mysql-test-unstable-tests.orig ] || \
+ mv debian/mysql-test-unstable-tests.orig mysql-test/unstable-tests
+
+ debconf-updatepo # Update po-files when clean runs before each build
+
+override_dh_auto_configure:
+ @echo "RULES.$@"
+ dh_testdir
+
+ mkdir -p $(BUILDDIR) && cd $(BUILDDIR) && \
+ sh -c 'PATH=$${MYSQL_BUILD_PATH:-"/usr/local/bin:/usr/bin:/bin"} \
+ CC=${CC} \
+ CXX=${CXX} \
+ cmake -DCMAKE_INSTALL_PREFIX=/usr \
+ $(CMAKEFLAGS) \
+ -DWITH_SSL=bundled \
+ -DCOMPILATION_COMMENT="$(DEB_VENDOR) $(RELEASE)" \
+ -DMYSQL_SERVER_SUFFIX="-$(DEB_VERSION_REVISION)" \
+ -DSYSTEM_TYPE="debian-$(DEB_HOST_GNU_SYSTEM)" \
+ -DCMAKE_SYSTEM_PROCESSOR=$(DEB_HOST_ARCH) \
+ -DBUILD_CONFIG=mysql_release \
+ -DINSTALL_LIBDIR=lib/$(DEB_HOST_MULTIARCH) \
+ -DINSTALL_PLUGINDIR=lib/$(DEB_HOST_MULTIARCH)/mariadb18/plugin \
+ -DINSTALL_MYSQLTESTDIR=share/mysql/mysql-test \
+ -DPLUGIN_AUTH_SOCKET=STATIC \
+ -DDEB=$(DEB_VENDOR) ..'
+
+# This is needed, otherwise 'make test' will run before binaries have been built
+override_dh_auto_build:
+ @echo "RULES.$@"
+ # Print build env info to help debug builds on different platforms
+ dpkg-architecture
+ cd $(BUILDDIR) && $(MAKE)
+
+override_dh_auto_test:
+ @echo "RULES.$@"
+ dh_testdir
+ # Skip unstable tests if such are defined for arch
+ cp mysql-test/unstable-tests debian/mysql-test-unstable-tests.orig
+ [ ! -f debian/unstable-tests.$(DEB_HOST_ARCH) ] || cat debian/unstable-tests.$(DEB_HOST_ARCH) >> mysql-test/unstable-tests
+ # Run testsuite
+ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
+ cd $(BUILDDIR)/mysql-test && ./mtr --force --testcase-timeout=30 --suite-timeout=540 --retry=3 --parallel=$(NUMJOBS) --skip-test-list=unstable-tests || $(TESTSUITE_FAIL_CMD) ;
+endif
+
+override_dh_auto_install:
+ @echo "RULES.$@"
+ dh_testdir
+ dh_testroot
+
+ifneq (,$(filter linux,$(DEB_HOST_ARCH_OS)))
+ # Copy systemd files to a location available for dh_installinit
+ cp $(BUILDDIR)/support-files/mariadb.service debian/mariadb-server-10.1.mariadb.service
+ cp $(BUILDDIR)/support-files/mariadb@.service debian/mariadb-server-10.1.mariadb@.service
+endif
+
+ # make install
+ cd $(BUILDDIR) && $(MAKE) install DESTDIR=$(TMP)
+
+ # Delete runnable files we don't want to have in the test data package.
+ # This avoids triggering multiple Lintian errors.
+ rm -rf $(TMP)/usr/share/mysql/mysql-test/plugin/tokudb/tokudb/*.py
+ rm -rf $(TMP)/usr/share/mysql/mysql-test/plugin/tokudb/tokudb/t/*.py
+
+ # nm numeric soft is not enough, therefore extra sort in command
+ # to satisfy Debian reproducible build requirements
+ nm --defined-only $(BUILDDIR)/sql/mysqld | LC_ALL=C sort | gzip -n -9 > $(TMP)/usr/share/doc/mariadb-server-10.1/mysqld.sym.gz
+
+ # rename and install AppArmor profile
+ install -D -m 644 debian/apparmor-profile $(TMP)/etc/apparmor.d/usr.sbin.mysqld
+
+override_dh_installlogrotate-arch:
+ dh_installlogrotate --name mysql-server
+
+override_dh_systemd_enable:
+ dh_systemd_enable --name=mariadb
+ dh_systemd_enable --no-enable --name=mariadb@
+
+# Disable dh_systemd_start due /etc/init.d/mysql messing with the automatic snippets
+override_dh_systemd_start:
+ :
+
+# Start mysql at sequence number 19 before 20 where apache, proftpd etc gets
+# started which might depend on a running database server.
+override_dh_installinit-arch:
+ dh_installinit --name=mysql --no-start -- defaults 19 21
+
+override_dh_installcron-arch:
+ dh_installcron --name mysql-server
+
+get-orig-source:
+ uscan --force-download --verbose
+
+%:
+ dh $@ --parallel --with systemd --fail-missing
+
+# vim: ts=8