mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 05:22:25 +01:00
325c9ce9b3
The Debian packaging build was failing on Travis-CI due to timeouts. These changes make it faster by skipping less relevant parts of the build, like the test suite, RocksDB, TokuDB and Mroonga. Also fix the usage of the 'make -j' flag to not have any spaces as recommended in an example in the Debian policy.
197 lines
7.7 KiB
Makefile
Executable file
197 lines
7.7 KiB
Makefile
Executable file
#!/usr/bin/make -f
|
|
|
|
export DH_VERBOSE=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
|
|
|
|
# Skip TokuDB if arch is not amd64
|
|
ifneq ($(ARCH), amd64)
|
|
CMAKEFLAGS += -DWITHOUT_TOKUDB=true
|
|
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 \
|
|
-DINSTALL_LIBDIR=lib/$(DEB_HOST_MULTIARCH) \
|
|
-DINSTALL_PLUGINDIR=lib/mysql/plugin \
|
|
-DINSTALL_MYSQLTESTDIR=share/mysql/mysql-test \
|
|
-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
|
|
|
|
# If TokuDB plugin was not built skip the package
|
|
[ -f $(BUILDDIR)/storage/tokudb/ha_tokudb.so ] || sed -i -e "/Package: mariadb-plugin-tokudb/,+16d" debian/control
|
|
|
|
# If Mroonga plugin was not built skip the package
|
|
[ -f $(BUILDDIR)/storage/mroonga/ha_mroonga.so ] || sed -i -e "/Package: mariadb-plugin-mroonga/,+15d" debian/control
|
|
|
|
# If libthrift-dev was available (manually installed, as it is
|
|
# not in Debian) and ha_cassandra.so was thus built, create package,
|
|
# otherwise skip it.
|
|
[ -f $(BUILDDIR)/storage/cassandra/ha_cassandra.so ] || sed -i -e "/Package: mariadb-plugin-cassandra/,+18d" debian/control
|
|
|
|
# If Spider plugin was not built skip the package
|
|
[ -f $(BUILDDIR)/storage/spider/ha_spider.so ] || sed -i -e "/Package: mariadb-plugin-spider/,+16d" debian/control
|
|
|
|
# Copy systemd files to a location available for dh_installinit
|
|
cp $(BUILDDIR)/support-files/mariadb.service debian/mariadb-server-10.3.mariadb.service
|
|
cp $(BUILDDIR)/support-files/mariadb@.service debian/mariadb-server-10.3.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
|
|
|
|
# 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.3/mysqld.sym.gz
|
|
|
|
# For 5.0 -> 10.3 transition
|
|
d=$(TMP)/usr/share/mysql-common/internal-use-only/; \
|
|
mkdir -p $$d; \
|
|
cp debian/mariadb-server-10.3.mysql.init $$d/_etc_init.d_mysql; \
|
|
cp debian/mariadb-server-10.3.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.3.py $(TMP)/usr/share/apport/package-hooks/source_mariadb-10.3.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
|