mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
da64ec1ede
Cassandra has deprecated their Thrift interface years ago (a few months after Cassandra SE was released). The new way to access Cassandra is to use the CQL Connector, which does not use Thrift. There have been talks to make a CassandraSE V2 but no usable code have been produced. The motivation to keep CassandraSE in the MariaDB source code is to have it as an example for such future attempts. It can stay in the source code but it should be removed from packaging to avoid Debian packaging maintenance work around trying to compile it and have tests pass on new platform. If somebody wants Cassandra, they can use the 10.4 branch.
185 lines
7.1 KiB
Makefile
Executable file
185 lines
7.1 KiB
Makefile
Executable file
#!/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
|
|
DPKG_EXPORT_BUILDFLAGS = 1
|
|
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)
|
|
|
|
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
|
|
|
|
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 mips64el alpha powerpc sh4 hurd-i386 sparc64 kfreebsd-i386 kfreebsd-amd64))
|
|
TESTSUITE_FAIL_CMD:=true
|
|
else
|
|
TESTSUITE_FAIL_CMD:=exit 1
|
|
endif
|
|
|
|
ifeq (32,$(DEB_HOST_ARCH_BITS))
|
|
CMAKEFLAGS += -DWITHOUT_ROCKSDB=true
|
|
endif
|
|
|
|
# Add extra flag to avoid WolfSSL code crashing the entire mysqld on s390x. This
|
|
# can be removed once upstream has made the code s390x compatible, see
|
|
# https://jira.mariadb.org/browse/MDEV-21705 and
|
|
# https://github.com/wolfSSL/wolfssl/issues/2828
|
|
ifeq ($(DEB_HOST_ARCH),s390x)
|
|
CFLAGS += -DWC_NO_CACHE_RESISTANT
|
|
endif
|
|
|
|
# Add support for verbose builds
|
|
MAKEFLAGS += VERBOSE=1
|
|
|
|
override_dh_auto_clean:
|
|
@echo "RULES.$@"
|
|
dh_testdir
|
|
dh_testroot
|
|
rm -rf $(BUILDDIR) builddir-native
|
|
|
|
[ ! -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
|
|
|
|
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="-$(DEB_VERSION_REVISION)" \
|
|
-DSYSTEM_TYPE="debian-$(DEB_HOST_GNU_SYSTEM)" \
|
|
-DCMAKE_SYSTEM_PROCESSOR=$(DEB_HOST_ARCH) \
|
|
-DBUILD_CONFIG=mysql_release \
|
|
-DWITHOUT_TOKUDB=true \
|
|
-DWITHOUT_CASSANDRA=true \
|
|
-DPLUGIN_AWS_KEY_MANAGEMENT=NO \
|
|
-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)))
|
|
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
|
|
|
|
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 pacakges
|
|
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/mysqld | LC_ALL=C sort | gzip -n -9 > $(TMP)/usr/share/doc/mariadb-server-10.5/mysqld.sym.gz
|
|
|
|
# rename and install AppArmor profile
|
|
install -D -m 644 debian/apparmor-profile $(TMP)/etc/apparmor.d/usr.sbin.mysqld
|
|
|
|
# Install libmariadbclient18 compatibility links
|
|
ln -s libmariadb.so.3 $(TMP)/usr/lib/$(DEB_HOST_MULTIARCH)/libmariadbclient.so
|
|
ln -s libmariadb.so.3 $(TMP)/usr/lib/$(DEB_HOST_MULTIARCH)/libmariadbclient.so.18
|
|
|
|
# Install libmysqlclientclientXX compatibility links
|
|
ln -s libmariadb.so.3 $(TMP)/usr/lib/$(DEB_HOST_MULTIARCH)/libmysqlclient.so.18
|
|
ln -s libmariadb.so.3 $(TMP)/usr/lib/$(DEB_HOST_MULTIARCH)/libmysqlclient.so.19
|
|
ln -s libmariadb.so.3 $(TMP)/usr/lib/$(DEB_HOST_MULTIARCH)/libmysqlclient.so.20
|
|
|
|
# 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
|
|
# 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_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
|
|
|
|
# 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 $@ --parallel --with systemd --list-missing
|
|
|
|
# vim: ts=8
|