diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 18:07:29 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 18:07:29 +0000 |
commit | 82a6365993a3c6650c39a1bca3ec3ccba827b763 (patch) | |
tree | 5c5987626fe4696f54de9cdedfa95e0251e4e7b4 /debian/rules | |
parent | Adding upstream version 1:10.5.12. (diff) | |
download | mariadb-10.5-dbcad6a0686830235bf595bc3a2ac5211098858f.tar.xz mariadb-10.5-dbcad6a0686830235bf595bc3a2ac5211098858f.zip |
Adding debian version 1:10.5.12-1.debian/1%10.5.12-1debian
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rwxr-xr-x | debian/rules | 188 |
1 files changed, 188 insertions, 0 deletions
diff --git a/debian/rules b/debian/rules new file mode 100755 index 00000000..3fa8e6a5 --- /dev/null +++ b/debian/rules @@ -0,0 +1,188 @@ +#!/usr/bin/make -f + +# Enable Debian Hardening +# https://wiki.debian.org/Hardening +export DEB_BUILD_MAINT_OPTIONS = hardening=+all +DPKG_EXPORT_BUILDFLAGS = 1 +# Include all defaults, including buildflags.mk +include /usr/share/dpkg/default.mk +# CPPFLAGS are nor read by CMake, so copy them to CXXFLAGS +# See why at https://cmake.org/Bug/view.php?id=12928 +# This is needed for e.g. all automatic Debian hardening flags to apply on all cmake builds. +CFLAGS+=$(CPPFLAGS) +CXXFLAGS+=$(CPPFLAGS) + +# Only do a strict symbol checking on Linux +ifneq (,$(filter linux,$(DEB_HOST_ARCH_OS))) + DPKG_GENSYMBOLS_CHECK_LEVEL := 4 +endif + +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 + +# According to Debian Policy version 4.2.0 builds should be as verbose as +# possible unless 'terse' is specifically passed. +ifeq (,$(filter terse,$(DEB_BUILD_OPTIONS))) + export DH_VERBOSE=1 +endif + +# 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 'auto'. + NUMJOBS = auto +endif + +# RocksDB cannot build on 32-bit platforms +ifeq (32,$(DEB_HOST_ARCH_BITS)) + CMAKEFLAGS += -DPLUGIN_ROCKSDB=NO +endif + +ifneq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH)) + ifneq (,$(filter $(DEB_HOST_ARCH_CPU),alpha amd64 arm arm64 i386 ia64 m68k mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sh4 sparc64)) + CMAKEFLAGS += -DSTACK_DIRECTION=-1 + endif + ifneq (,$(filter $(DEB_HOST_ARCH_CPU),hppa)) + CMAKEFLAGS += -DSTACK_DIRECTION=1 + endif +endif + +# Add support for verbose builds +MAKEFLAGS += VERBOSE=1 + +override_dh_auto_clean: + @echo "RULES.$@" + dh_testdir + dh_testroot + rm -rf $(BUILDDIR) builddir-native extra/readline extra/wolfssl storage/columnstore + + [ ! -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 + +ifneq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH)) + dpkg-architecture -a$(DEB_BUILD_ARCH) -f -c dh_auto_configure --builddirectory=builddir-native + dh_auto_build --builddirectory=builddir-native -- import_executables +endif + + # Don't build ColumnStore, not mature enough for Debian yet. + PATH=$${MYSQL_BUILD_PATH:-"/usr/lib/ccache:/usr/local/bin:/usr/bin:/bin"} \ + dh_auto_configure --builddirectory=$(BUILDDIR) -- \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + $(CMAKEFLAGS) \ + $(if $(filter $(DEB_BUILD_ARCH),$(DEB_HOST_ARCH)),,-DIMPORT_EXECUTABLES=$(CURDIR)/builddir-native/import_executables.cmake) \ + -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 \ + -DCONC_DEFAULT_CHARSET=utf8mb4 \ + -DPLUGIN_TOKUDB=NO \ + -DPLUGIN_CASSANDRA=NO \ + -DPLUGIN_AWS_KEY_MANAGEMENT=NO \ + -DPLUGIN_COLUMNSTORE=NO \ + -DWITH_INNODB_SNAPPY=ON \ + -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))) + # Don't use --mem here as official Debian builders and most Docker systems don't have a large mem device available and + # would fail with errors on lack of disk space. + cd $(BUILDDIR)/mysql-test && \ + ./mtr --force --testcase-timeout=120 --suite-timeout=540 --retry=3 \ + --parallel=$(NUMJOBS) --skip-rpl --suite=main \ + --skip-test-list=unstable-tests +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.5.mariadb.service + cp $(BUILDDIR)/support-files/mariadb@.service debian/mariadb-server-10.5.mariadb@.service +endif + + # 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 private files from libraries so they don't get shipped in the -dev packages + rm -r $(TMP)/usr/include/mariadb/server/private + + # Don't ship sql-bench at all, just delete it completely even though it builds + rm -r $(TMP)/usr/sql-bench + + # nm numeric soft is not enough, therefore extra sort in command + # to satisfy Debian reproducible build requirements + nm --defined-only $(BUILDDIR)/sql/mariadbd | LC_ALL=C sort | gzip -n -9 > $(TMP)/usr/share/doc/mariadb-server-10.5/mariadbd.sym.gz + + # Rename and install AppArmor profile + install -D -m 644 debian/apparmor-profile $(TMP)/etc/apparmor.d/usr.sbin.mariadbd + + # Install mariadb.pc as a symlink for the client library, + # use -f to override the existing server mariadb.pc file + ln -sf libmariadb.pc $(TMP)/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig/mariadb.pc + + # Install libmariadbclient18 compatibility links + ln -s libmariadb.so.3 $(TMP)/usr/lib/$(DEB_HOST_MULTIARCH)/libmariadbclient.so + + # Install libmariadbclient.a compatibility link + ln -s libmariadb.a $(TMP)/usr/lib/$(DEB_HOST_MULTIARCH)/libmariadbclient.a + + # Symlink plugins that are used by both server and client and thus need to + # load from the libmariadb path as well + ln -s ../../../mysql/plugin/auth_test_plugin.so $(TMP)/usr/lib/$(DEB_HOST_MULTIARCH)/libmariadb3/plugin/auth_test_plugin.so + ln -s ../../../mysql/plugin/qa_auth_interface.so $(TMP)/usr/lib/$(DEB_HOST_MULTIARCH)/libmariadb3/plugin/qa_auth_interface.so + ln -s ../../../mysql/plugin/test_sql_service.so $(TMP)/usr/lib/$(DEB_HOST_MULTIARCH)/libmariadb3/plugin/test_sql_service.so + # Move test plugins that are only needed by the client to the libmariadb path + mv -v $(TMP)/usr/lib/mysql/plugin/qa_auth_client.so $(TMP)/usr/lib/$(DEB_HOST_MULTIARCH)/libmariadb3/plugin/ + +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=mariadb --no-start -- defaults 19 21 + dh_systemd_start --restart-after-upgrade + + +# If a file is not supposed to be included anywhere, add it to the not-installed +# file and document the reason. Note that dh_install supports the above mentioned +# white list file only starting from Debian Stretch and Ubuntu Xenial. +# To find more, grep build logs for 'but is not installed to anywhere'. +%: + dh $@ --fail-missing + +# vim: ts=8 |