#!/usr/bin/make -f export DH_VERBOSE=1 export DEB_BUILD_HARDENING=1 # enable Debian Hardening # see: https://wiki.debian.org/Hardening export DEB_BUILD_MAINT_OPTIONS = hardening=+all,-pie DPKG_EXPORT_BUILDFLAGS = 1 include /usr/share/dpkg/buildflags.mk ARCH := $(shell dpkg-architecture -qDEB_BUILD_ARCH) ARCH_OS := $(shell dpkg-architecture -qDEB_BUILD_ARCH_OS) BUILDDIR := builddir DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) DEB_BUILD_GNU_SYSTEM ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_SYSTEM) DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH) DEBVERSION := $(shell dpkg-parsechangelog | awk '/^Version: / { print $$2 }' | sed 's/^.*-//' ) DEB_SOURCE_PACKAGE ?= $(strip $(shell egrep '^Source: ' debian/control | cut -f 2 -d ':')) DEB_VERSION ?= $(shell dpkg-parsechangelog | egrep '^Version:' | cut -f 2 -d ' ') DEB_NOEPOCH_VERSION ?= $(shell echo $(DEB_VERSION) | cut -d: -f2-) DEB_UPSTREAM_VERSION ?= $(shell echo $(DEB_NOEPOCH_VERSION) | sed 's/-[^-]*$$//') DEB_UPSTREAM_VERSION_MAJOR_MINOR := $(shell echo $(DEB_UPSTREAM_VERSION) | sed -r -n 's/^([0-9]+\.[0-9]+).*/\1/p') DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) DISTRIBUTION := $(shell lsb_release -i -s) RELEASE := $(shell lsb_release -r -s) 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 ifneq (,$(filter $(ARCH), mips mipsel)) TESTSUITE_FAIL_CMD:=true else TESTSUITE_FAIL_CMD:=exit 1 endif # Add support for verbose builds MAKEFLAGS += VERBOSE=1 override_dh_auto_clean: @echo "RULES.$@" dh_testdir dh_testroot [ ! -d mysql-test/var ] || rm -rf mysql-test/var rm -rf $(BUILDDIR) debconf-updatepo # Update po-files when clean runs before each build override_dh_prep: # Don't clean /tmp/ away, it is needed by all binary packages override_dh_auto_configure: @echo "RULES.$@" dh_testdir # Versioned symbols are only available on Linux. # Remove symbols file on kFreeBSD builds so that # dpkg-gensymbols will not fail the build. ifneq (,$(filter $(ARCH), kfreebsd-i386 kfreebsd-amd64)) rm debian/libmariadb3.symbols endif mkdir -p $(BUILDDIR) && cd $(BUILDDIR) && \ sh -c 'PATH=$${MYSQL_BUILD_PATH:-"/usr/lib/ccache:/usr/local/bin:/usr/bin:/bin"} \ CC=${CC} \ CXX=${CXX} \ cmake -DCMAKE_INSTALL_PREFIX=/usr \ $(CMAKEFLAGS) \ -DCOMPILATION_COMMENT="mariadb.org binary distribution" \ -DMYSQL_SERVER_SUFFIX="-$(DEBVERSION)" \ -DSYSTEM_TYPE="debian-$(DEB_BUILD_GNU_SYSTEM)" \ $${MYSQL_BUILD_CXX:+-DCMAKE_CXX_COMPILER=$${MYSQL_BUILD_CXX}} \ $${MYSQL_BUILD_CC:+-DCMAKE_C_COMPILER=$${MYSQL_BUILD_CC}} \ $${MYSQL_COMPILER_LAUNCHER:+-DCMAKE_CXX_COMPILER_LAUNCHER=${MYSQL_COMPILER_LAUNCHER}} \ $${MYSQL_COMPILER_LAUNCHER:+-DCMAKE_C_COMPILER_LAUNCHER=${MYSQL_COMPILER_LAUNCHER}} \ -DCMAKE_SYSTEM_PROCESSOR=$(DEB_BUILD_ARCH) \ -DBUILD_CONFIG=mysql_release \ -DDEB=$(DISTRIBUTION) ..' touch $@ # 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) touch $@ override_dh_auto_test: @echo "RULES.$@" dh_testdir # Skip unstable tests if such are defined for arch [ ! -f debian/unstable-tests.$(ARCH) ] || cat debian/unstable-tests.$(ARCH) >> mysql-test/unstable-tests # Run testsuite ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) cd $(BUILDDIR)/mysql-test && ./mtr --force --mem --parallel=$(NUMJOBS) --skip-rpl --suite=main --skip-test-list=unstable-tests || $(TESTSUITE_FAIL_CMD) ; endif override_dh_auto_install: @echo "RULES.$@" dh_testdir dh_testroot # Skip TokuDB if arch is not amd64 ifneq ($(ARCH), amd64) sed -i -e "/Package: mariadb-plugin-tokudb/,+16d" debian/control endif # Copy systemd files to a location available for dh_installinit cp $(BUILDDIR)/support-files/mariadb.service debian/mariadb-server-10.2.mariadb.service cp $(BUILDDIR)/support-files/mariadb@.service debian/mariadb-server-10.2.mariadb@.service # Run 'make install' without output since it is uninteresting and # silencing it helps to make overall build log shorter and more readable @echo "Running $(MAKE) install DESTDIR=$(TMP) ..." cd $(BUILDDIR) && $(MAKE) install DESTDIR=$(TMP) > /dev/null # If mariadb-test package is removed, also remove most of it's files grep --quiet "Package: mariadb-test" debian/control || rm -rf $(TMP)/usr/share/mysql/mysql-test # 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.2/mysqld.sym.gz # For 5.0 -> 10.2 transition d=$(TMP)/usr/share/mysql-common/internal-use-only/; \ mkdir -p $$d; \ cp debian/mariadb-server-10.2.mysql.init $$d/_etc_init.d_mysql; \ cp debian/mariadb-server-10.2.mysql-server.logrotate $$d/_etc_logrotate.d_mysql-server; \ cp debian/additions/debian-start $$d/_etc_mysql_debian-start; # rename and install AppArmor profile install -D -m 644 debian/apparmor-profile $(TMP)/etc/apparmor.d/usr.sbin.mysqld # install Apport hook install -D -m 644 debian/mariadb-server-10.2.py $(TMP)/usr/share/apport/package-hooks/source_mariadb-10.2.py # Install libmariadbclient18 compatibility links ln -s /usr/lib/$(DEB_HOST_MULTIARCH)/libmariadb.so.3 $(TMP)/usr/lib/$(DEB_HOST_MULTIARCH)/libmariadbclient.so ln -s /usr/lib/$(DEB_HOST_MULTIARCH)/libmariadb.so.3 $(TMP)/usr/lib/$(DEB_HOST_MULTIARCH)/libmariadbclient.so.18 # Install libmysqlclientclientXX compatibility links ln -s /usr/lib/$(DEB_HOST_MULTIARCH)/libmariadb.so.3 $(TMP)/usr/lib/$(DEB_HOST_MULTIARCH)/libmysqlclient.so.18 ln -s /usr/lib/$(DEB_HOST_MULTIARCH)/libmariadb.so.3 $(TMP)/usr/lib/$(DEB_HOST_MULTIARCH)/libmysqlclient.so.19 ln -s /usr/lib/$(DEB_HOST_MULTIARCH)/libmariadb.so.3 $(TMP)/usr/lib/$(DEB_HOST_MULTIARCH)/libmysqlclient.so.20 touch $@ 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@ # 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 -- defaults 19 21 dh_systemd_start --restart-after-upgrade override_dh_installcron-arch: dh_installcron --name mysql-server get-orig-source: uscan --force-download --verbose %: dh $@ --parallel --with dpatch --with systemd # vim: ts=8