4
export DEB_BUILD_HARDENING=1
8
include /usr/share/dpatch/dpatch.make
10
TMP=$(CURDIR)/debian/tmp/
12
ARCH = $(shell dpkg-architecture -qDEB_BUILD_ARCH)
13
ARCH_OS = $(shell dpkg-architecture -qDEB_BUILD_ARCH_OS)
14
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
15
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
16
DEBVERSION = $(shell dpkg-parsechangelog | awk '/^Version: / { print $$2 }' | sed 's/^.*-//' )
18
DEB_SOURCE_PACKAGE ?= $(strip $(shell egrep '^Source: ' debian/control | cut -f 2 -d ':'))
19
DEB_VERSION ?= $(shell dpkg-parsechangelog | egrep '^Version:' | cut -f 2 -d ' ')
20
DEB_NOEPOCH_VERSION ?= $(shell echo $(DEB_VERSION) | cut -d: -f2-)
21
DEB_UPSTREAM_VERSION ?= $(shell echo $(DEB_NOEPOCH_VERSION) | sed 's/-[^-]*$$//')
22
DEB_UPSTREAM_VERSION_MAJOR_MINOR := $(shell echo $(DEB_UPSTREAM_VERSION) | sed -r -n 's/^([0-9]+\.[0-9]+).*/\1/p')
24
DISTRIBUTION = $(shell lsb_release -i -s)
26
MAKE_J = -j$(shell if [ -f /proc/cpuinfo ] ; then grep -c processor.* /proc/cpuinfo ; else echo 1 ; fi)
31
MAKE_TEST_TARGET=test-force
32
ifneq ($(findstring $(DEB_BUILD_OPTIONS),fulltest),)
33
# make test-bt is the testsuite run by the MySQL build team
34
# before a release, but it is long
35
MAKE_TEST_TARGET=test-bt
38
USE_ASSEMBLER=--enable-assembler
41
MYSQL_BUILD_CC = gcc -static-libgcc
42
MYSQL_BUILD_CXX = gcc -static-libgcc
43
MYSQL_BUILD_CFLAGS = -O2 -fno-omit-frame-pointer -g -pipe -Wall
44
MYSQL_BUILD_CXXFLAGS = -O2 -fno-omit-frame-pointer -g -pipe -Wall
46
ifneq (,$(filter $(ARCH), amd64 i386 ia64 s390))
47
TESTSUITE_FAIL_CMD=exit 1
49
TESTSUITE_FAIL_CMD=true
53
builddir = $(BUILDDIR)
55
# This causes seg11 crashes if LDAP is used for groups in /etc/nsswitch.conf
56
# so it is disabled by default although, according to MySQL, it brings >10%
57
# performance gain if enabled. See #299382.
58
ifeq ($(STATIC_MYSQLD), 1)
59
USE_STATIC_MYSQLD=--with-mysqld-ldflags=-all-static
63
configure: patch configure-stamp
68
ifneq ($(ARCH_OS),hurd)
69
if [ ! -d /proc/self ]; then echo "/proc IS NEEDED" 1>&2; exit 1; fi
72
( test -d $(builddir) || mkdir $(builddir) ) && cd $(builddir) && \
73
sh -c 'PATH=$${MYSQL_BUILD_PATH:-"/bin:/usr/bin"} \
74
CC=$${MYSQL_BUILD_CC:-"gcc -static-libgcc"} \
75
CFLAGS=$${MYSQL_BUILD_CFLAGS:-"-O2 -fno-omit-frame-pointer -g -pipe -Wall"} \
76
CXX=$${MYSQL_BUILD_CXX:-"gcc -static-libgcc"} \
77
CXXFLAGS=$${MYSQL_BUILD_CXXFLAGS:-"-O2 -fno-omit-frame-pointer -g -pipe -Wall"} \
79
--build=${DEB_BUILD_GNU_TYPE} \
80
--host=${DEB_HOST_GNU_TYPE} \
84
--libexecdir=/usr/sbin \
85
--datadir=/usr/share \
86
--localstatedir=/var/lib/mysql \
87
--includedir=/usr/include \
88
--infodir=/usr/share/info \
89
--mandir=/usr/share/man \
91
--with-server-suffix="-$(DEBVERSION)" \
92
--with-comment="(OurDelta - http://ourdelta.org/)" \
93
--with-system-type="debian-linux-gnu" \
97
--enable-thread-safe-client \
98
--enable-local-infile \
100
--with-unix-socket-path=/var/run/mysqld/mysqld.sock \
101
--with-mysqld-user=mysql \
105
--with-extra-charsets=all \
110
--with-zlib-dir=bundled \
111
--with-embedded-server \
112
--with-plugins=max-no-ndb \
113
--without-plugin-innodb_plugin'
119
build-stamp: configure
123
cd $(builddir) && $(MAKE) $(MAKE_J)
125
ifeq ($(findstring $(DEB_BUILD_OPTIONS),nocheck),)
126
# Don't know why the following is necessary...
127
cp unittest/unit.pl $(builddir)/unittest/
128
cp -r mysql-test/* $(builddir)/mysql-test/
129
cp -r sql/share/* $(builddir)/sql/share/
130
cp -r scripts/*sql $(builddir)/scripts/
131
if [ ! -f testsuite-stamp ] ; then \
132
cd $(builddir) && $(MAKE) $(MAKE_TEST_TARGET) || $(TESTSUITE_FAIL_CMD) ; \
136
touch testsuite-stamp
140
clean: clean-patched unpatch
141
rm -rf debian/patched
143
@echo "RULES.clean-patched"
146
rm -f configure-stamp*
148
rm -f testsuite-stamp
150
[ ! -f Makefile ] || $(MAKE) clean
151
[ ! -d mysql-test/var ] || rm -rf mysql-test/var
166
# some self written manpages which hopefully
167
# gets overwritten sooner or later with upstreams
168
mkdir -p $(TMP)/usr/share/man/man1/
169
mkdir -p $(TMP)/usr/share/man/man8/
170
cp debian/additions/*.1 $(TMP)/usr/share/man/man1/
171
mkdir -p $(TMP)/etc/mysql/conf.d/
172
cp debian/additions/mysqld_safe_syslog.cnf $(TMP)/etc/mysql/conf.d/
174
# make install (trailing slash needed for innobase)
175
cd $(builddir) && $(MAKE) install DESTDIR=$(TMP)/
177
# After installing, remove rpath to make lintian happy.
179
find ./debian/tmp/ -type f -print0 \
180
| xargs -0 --no-run-if-empty chrpath -k 2>/dev/null \
183
| xargs --no-run-if-empty chrpath -d; \
186
# libmariadbclient: move shared libraries (but not the rest like libheap.a & co)
187
mv $(TMP)/usr/lib/mysql/libmysqlclient* $(TMP)/usr/lib
188
perl -pi -e 's#/usr/lib/mysql#/usr/lib#' $(TMP)/usr/lib/libmysqlclient.la
189
perl -pi -e 's#/usr/lib/mysql#/usr/lib#' $(TMP)/usr/lib/libmysqlclient_r.la
190
# Check if our beloved versioned symbols are really there
191
if [ "`objdump -T $(TMP)/usr/lib/libmysqlclient.so.16.0.0 | grep -c libmysqlclient_16`" -lt 500 ]; then \
192
echo "ERROR: versioned symbols are absent"; \
196
# libmysqlclient-dev: forgotten header file since 3.23.25?
197
cp $(BUILDDIR)/include/my_config.h $(TMP)/usr/include/mysql/
198
cp include/my_dir.h $(TMP)/usr/include/mysql/
200
# mysql-common: We now provide our own config file.
201
# can't be mariadb-common, other packages insist
202
install -d $(TMP)/etc/mysql
203
install -m 0644 debian/additions/my.cnf $(TMP)/etc/mysql/my.cnf
206
install -m 0755 debian/additions/mysqlreport $(TMP)/usr/bin/
207
install -m 0755 debian/additions/innotop/innotop $(TMP)/usr/bin/
208
install -m 0644 debian/additions/innotop/innotop.1 $(TMP)/usr/share/man/man1/
211
install -m 0755 $(BUILDDIR)/scripts/mysqld_safe $(TMP)/usr/bin/mysqld_safe
212
mkdir -p $(TMP)/usr/share/doc/mariadb-server-5.1/examples
213
# We have a sane my.cnf, cruft not needed (remove my-*.cnf and config-*.cnf)
214
# $(TMP)/usr/share/mysql/*cnf $(TMP)/usr/share/doc/mariadb-server-5.1/examples/
215
rm -vf $(TMP)/usr/share/mysql/my-*.cnf \
216
$(TMP)/usr/share/mysql/config-*.cnf \
217
$(TMP)/usr/share/mysql/mi_test_all* \
218
$(TMP)/usr/share/mysql/mysql-log-rotate \
219
$(TMP)/usr/share/mysql/mysql.server \
220
$(TMP)/usr/share/mysql/binary-configure
221
nm -n $(BUILDDIR)/sql/mysqld |gzip -9 > $(TMP)/usr/share/doc/mariadb-server-5.1/mysqld.sym.gz
222
install -m 0755 debian/additions/echo_stderr $(TMP)/usr/share/mysql/
223
install -m 0755 debian/additions/debian-start $(TMP)/etc/mysql/
224
install -m 0755 debian/additions/debian-start.inc.sh $(TMP)/usr/share/mysql/
227
mv $(TMP)/usr/mysql-test $(TMP)/usr/share/mysql
230
mkdir -p $(TMP)/usr/share/lintian/overrides/
231
cp debian/mysql-common.lintian-overrides $(TMP)/usr/share/lintian/overrides/mysql-common
232
cp debian/mariadb-server-5.1.lintian-overrides $(TMP)/usr/share/lintian/overrides/mariadb-server-5.1
233
cp debian/mariadb-client-5.1.lintian-overrides $(TMP)/usr/share/lintian/overrides/mariadb-client-5.1
235
# For 5.0 -> 5.1 transition
236
d=$(TMP)/usr/share/mysql-common/internal-use-only/; \
238
cp debian/mariadb-server-5.1.mysql.init $$d/_etc_init.d_mysql; \
239
cp debian/mariadb-server-5.1.mysql-server.logrotate $$d/_etc_logrotate.d_mysql-server; \
240
cp debian/additions/debian-start $$d/_etc_mysql_debian-start;
242
# install AppArmor profile
243
install -D -m 644 debian/apparmor-profile $(TMP)/etc/apparmor.d/usr.sbin.mysqld
244
# install Apport hook
245
install -D -m 644 debian/mariadb-server-5.1.py $(TMP)/usr/share/apport/package-hooks/source_mariadb-5.1.py
249
# Build architecture-independent files here.
250
binary-indep: build install
251
@echo "RULES.binary-indep"
256
dh_installexamples -i
258
dh_installlogrotate -i
263
dh_installlogcheck -i
264
dh_installchangelogs -i
274
# Build architecture-dependent files here.
275
binary-arch: build install
276
@echo "RULES.binary-arch"
282
dh_installexamples -a
284
dh_installlogrotate -a --name mysql-server
285
# Start mysql in runlevel 19 before 20 where apache, proftpd etc gets
286
# started which might depend on a running database server.
287
dh_installinit -a --name=mysql -- defaults 19 21
288
dh_installcron -a --name mysql-server
291
dh_installlogcheck -a
292
dh_installchangelogs -a
298
dh_makeshlibs -plibmariadbclient16 -V'libmariadbclient16 (>= 5.1.21-1)'
301
dh_shlibdeps -a -l debian/libmariadbclient16/usr/lib -L libmariadbclient16
307
@echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
309
binary: binary-indep binary-arch
313
-O /tmp/mysql-$(DEB_UPSTREAM_VERSION).tar.gz \
314
http://ftp.gwdg.de/pub/misc/mysql/Downloads/MySQL-$(DEB_UPSTREAM_VERSION_MAJOR_MINOR)/mysql-$(DEB_UPSTREAM_VERSION).tar.gz
315
@tar xfz /tmp/mysql-$(DEB_UPSTREAM_VERSION).tar.gz -C /tmp
316
@rm -rf /tmp/mysql-$(DEB_UPSTREAM_VERSION)/Docs
317
@rm -rf /tmp/mysql-$(DEB_UPSTREAM_VERSION)/debian
318
@mv /tmp/mysql-$(DEB_UPSTREAM_VERSION) /tmp/$(DEB_SOURCE_PACKAGE)-$(DEB_UPSTREAM_VERSION).orig
319
@cd /tmp ; tar czf $(DEB_SOURCE_PACKAGE)_$(DEB_UPSTREAM_VERSION).orig.tar.gz $(DEB_SOURCE_PACKAGE)-$(DEB_UPSTREAM_VERSION).orig
320
@rm -f /tmp/mysql-$(DEB_UPSTREAM_VERSION).tar.gz
321
@rm -rf /tmp/$(DEB_SOURCE_PACKAGE)-$(DEB_UPSTREAM_VERSION).orig
323
.PHONY: clean clean-patched configure build binary binary-indep binary-arch install patch unpatch