mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-30 02:16:32 +01:00 
			
		
		
		
	 eded6243bc
			
		
	
	
	eded6243bc
	
	
	
		
			
			Compatibility links ended up looking like this: libmysqlclient.so.18 -> /tmp/buildd/mariadb-10.2-10.2.0/debian/tmp/usr/lib/i386-linux-gnu/libmariadb.so.3 This change fixes ln syntax to create links with correct target paths.
		
			
				
	
	
		
			196 lines
		
	
	
	
		
			7.6 KiB
		
	
	
	
		
			Makefile
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			196 lines
		
	
	
	
		
			7.6 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/,+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/$(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
 |