Newer
Older
#!/usr/bin/make -f
export DH_VERBOSE=1
Otto Kekäläinen
committed
# enable Debian Hardening
# see: https://wiki.debian.org/Hardening
export DEB_BUILD_MAINT_OPTIONS = hardening=+all,-pie
DPKG_EXPORT_BUILDFLAGS = 1

Ondrej Sury
committed
include /usr/share/dpkg/default.mk
BUILDDIR := builddir
DEB_VERSION_REVISION := $(shell echo $(DEB_VERSION) | sed -e 's/^.*-//')

Ondrej Sury
committed
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.
# 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:
mkdir -p $(BUILDDIR) && cd $(BUILDDIR) && \
sh -c 'PATH=$${MYSQL_BUILD_PATH:-"/usr/local/bin:/usr/bin:/bin"} \
CC=${CC} \
CXX=${CXX} \
$(CMAKEFLAGS) \
-DWITH_SSL=bundled \

Ondrej Sury
committed
-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) \
Otto Kekäläinen
committed
-DINSTALL_PLUGINDIR=lib/$(DEB_HOST_MULTIARCH)/mariadb18/plugin \
-DINSTALL_MYSQLTESTDIR=share/mysql/mysql-test \
-DPLUGIN_AUTH_SOCKET=STATIC \

Ondrej Sury
committed
-DDEB=$(DEB_VENDOR) ..'
# This is needed, otherwise 'make test' will run before binaries have been built
override_dh_auto_build:
# 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) ;
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
# 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
# Delete useless systemd files introduced in upstream commit
# https://github.com/MariaDB/server/commit/7bbc6c14d1e8fcf1f4737e0a5fcf6237fe18bd23
# They have no function in Debian systems and their path and usage is unstandardized.
rm -rf $(TMP)/usr/lib/sysusers.d/sysusers.conf
rm -rf $(TMP)/usr/lib/tmpfiles.d/tmpfiles.conf
# 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
Otto Kekäläinen
committed
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@
# 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:

Ondrej Sury
committed
dh_installinit --name=mysql --no-start -- defaults 19 21
dh_systemd_start --no-restart-after-upgrade
override_dh_installcron-arch:
dh_installcron --name mysql-server
get-orig-source:
uscan --force-download --verbose

Ondrej Sury
committed
dh $@ --parallel --with systemd --fail-missing