mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 13:02:28 +01:00
f977709b65
For backwards compatibility reasons.
E.g. innotop builds against libmysqlclient.so and expects to find
a libmysqlclient.so.18 library and does not use libmariadb.so.3 even
when built from our own sources.
This commit mimics to dcfe6cb834
192 lines
7.2 KiB
Makefile
Executable file
192 lines
7.2 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)" \
|
|
-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/,+14d" 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/,+13d" 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/,+16d" 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/,+14d" debian/control
|
|
|
|
# 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
|
|
|
|
# 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.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/mariadb/libmariadb.so.3 $(TMP)/usr/lib/$(DEB_HOST_MULTIARCH)/libmariadbclient.so.18
|
|
|
|
# Install libmysqlclientclientXX compatibility links
|
|
ln -s /usr/lib/mariadb/libmariadb.so.3 $(TMP)/usr/lib/$(DEB_HOST_MULTIARCH)/libmysqlclient.so.18
|
|
ln -s /usr/lib/mariadb/libmariadb.so.3 $(TMP)/usr/lib/$(DEB_HOST_MULTIARCH)/libmysqlclient.so.19
|
|
ln -s /usr/lib/mariadb/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
|