~ubuntu-branches/ubuntu/saucy/mysql-5.5/saucy-security

2 by Clint Byrum, Norbert Tretkowski, Clint Byrum
[Norbert Tretkowski]
1
#!/usr/bin/make -f
2
3
export DH_VERBOSE=1
4
export DEB_BUILD_HARDENING=1
5
6
PACKAGE=mysql-5.5
7
8
TMP=$(CURDIR)/debian/tmp/
9
10
ARCH = $(shell dpkg-architecture -qDEB_BUILD_ARCH)
11
ARCH_OS = $(shell dpkg-architecture -qDEB_BUILD_ARCH_OS)
12
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
13
DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
14
DEBVERSION = $(shell dpkg-parsechangelog | awk '/^Version: / { print $$2 }' | sed 's/^.*-//' )
15
19 by Clint Byrum, Clint Byrum, Matthieu Baerts (matttbe)
[ Clint Byrum ]
16
ifneq (,$(filter $(ARCH), i386 kfreebsd-i386 hurd-i386))
36 by Robie Basak
* d/rules, d/control: remove gcc-4.4 dependency and disable X86 assembly in
17
    TAOCRYPT_OPT="-DTAOCRYPT_DISABLE_X86ASM"
19 by Clint Byrum, Clint Byrum, Matthieu Baerts (matttbe)
[ Clint Byrum ]
18
endif
19
36 by Robie Basak
* d/rules, d/control: remove gcc-4.4 dependency and disable X86 assembly in
20
export MYSQL_BUILD_CC=$(DEB_HOST_GNU_TYPE)-gcc
21
export MYSQL_BUILD_CXX=$(DEB_HOST_GNU_TYPE)-g++
19 by Clint Byrum, Clint Byrum, Matthieu Baerts (matttbe)
[ Clint Byrum ]
22
3 by Clint Byrum
d/control: Pre-Depend on multiarch-support and misc:Pre-Depends.
23
2 by Clint Byrum, Norbert Tretkowski, Clint Byrum
[Norbert Tretkowski]
24
DEB_SOURCE_PACKAGE ?= $(strip $(shell egrep '^Source: ' debian/control | cut -f 2 -d ':'))
25
DEB_VERSION ?= $(shell dpkg-parsechangelog | egrep '^Version:' | cut -f 2 -d ' ')
26
DEB_NOEPOCH_VERSION ?= $(shell echo $(DEB_VERSION) | cut -d: -f2-)
27
DEB_UPSTREAM_VERSION ?= $(shell echo $(DEB_NOEPOCH_VERSION) | sed 's/-[^-]*$$//')
28
DEB_UPSTREAM_VERSION_MAJOR_MINOR := $(shell echo $(DEB_UPSTREAM_VERSION) | sed -r -n 's/^([0-9]+\.[0-9]+).*/\1/p')
3 by Clint Byrum
d/control: Pre-Depend on multiarch-support and misc:Pre-Depends.
29
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
2 by Clint Byrum, Norbert Tretkowski, Clint Byrum
[Norbert Tretkowski]
30
31
EXPORTED_SOURCE_TARBALL = debian/mysql-source-5.5.tar.gz
32
33
DISTRIBUTION = $(shell lsb_release -i -s)
34
35
MAKE_J = -j$(shell if [ -f /proc/cpuinfo ] ; then grep -c processor.* /proc/cpuinfo ; else echo 1 ; fi)
36
ifeq (${MAKE_J}, -j0)
37
  MAKE_J = -j1
38
endif
39
40
MAKE_TEST_TARGET=test-force
41
ifneq ($(findstring fulltest,$(DEB_BUILD_OPTIONS)),)
42
# make test-bt is the testsuite run by the MySQL build team 
43
# before a release, but it is long
44
    MAKE_TEST_TARGET=test-bt
45
endif
46
47
USE_ASSEMBLER=--enable-assembler 
48
49
ifneq (,$(filter $(ARCH), amd64 i386))
50
    TESTSUITE_FAIL_CMD=exit 1
51
else
52
    TESTSUITE_FAIL_CMD=true
53
endif
54
55
BUILDDIR = builddir
56
BUILDDIR_PIC = builddir-pic
57
builddir = $(if $(findstring -pic,$@),$(BUILDDIR_PIC),$(BUILDDIR))
58
59
# This causes seg11 crashes if LDAP is used for groups in /etc/nsswitch.conf
60
# so it is disabled by default although, according to MySQL, it brings >10%
61
# performance gain if enabled. See #299382.
62
ifeq ($(STATIC_MYSQLD), 1)
63
    USE_STATIC_MYSQLD=--with-mysqld-ldflags=-all-static
64
endif
65
		
21.1.1 by James Page
* Fix mysqlhotcopy for databases containing views (LP: #1015033):
66
# See http://blogs.innodb.com/wp/2010/04/innodb-performance-aio-linux/
67
# Also #659565
68
ifneq (,$(findstring linux-gnu,$(DEB_HOST_GNU_TYPE)))
69
    USE_LINUX_NATIVE_AIO:=-DLINUX_NATIVE_AIO=ON
70
endif
2 by Clint Byrum, Norbert Tretkowski, Clint Byrum
[Norbert Tretkowski]
71
72
configure-stamp-pic: FORCE_FPIC_CFLAGS=-fPIC
73
configure-stamp-pic: FORCE_FPIC=-DWITH_PIC=On -DINSTALL_LIBDIR=lib/mysql
74
75
configure: patch configure-stamp
76
configure-pic: patch configure-stamp-pic
77
configure-stamp configure-stamp-pic:
78
	@echo "RULES.$@"
79
	dh_testdir
80
81
ifneq ($(ARCH_OS),hurd)
82
	if [ ! -d /proc/self ]; then echo "/proc IS NEEDED" 1>&2; exit 1; fi 
83
endif
84
85
	( test -d $(builddir) || mkdir $(builddir) ) && cd $(builddir) && \
86
	sh -c  'PATH=$${MYSQL_BUILD_PATH:-"/bin:/usr/bin"} \
87
	    	CC=$${MYSQL_BUILD_CC:-gcc} \
36 by Robie Basak
* d/rules, d/control: remove gcc-4.4 dependency and disable X86 assembly in
88
		CFLAGS=$${MYSQL_BUILD_CFLAGS:-"-O2 -DBIG_JOINS=1 ${FORCE_FPIC_CFLAGS} -fno-strict-aliasing ${TAOCRYPT_OPT}"} \
2 by Clint Byrum, Norbert Tretkowski, Clint Byrum
[Norbert Tretkowski]
89
	    	CXX=$${MYSQL_BUILD_CXX:-g++} \
36 by Robie Basak
* d/rules, d/control: remove gcc-4.4 dependency and disable X86 assembly in
90
	    	CXXFLAGS=$${MYSQL_BUILD_CXXFLAGS:-"-O3 -DBIG_JOINS=1 -felide-constructors -fno-exceptions -fno-rtti ${FORCE_FPIC_CFLAGS} -fno-strict-aliasing ${TAOCRYPT_OPT}"} \
2 by Clint Byrum, Norbert Tretkowski, Clint Byrum
[Norbert Tretkowski]
91
	    cmake -DCMAKE_INSTALL_PREFIX=/usr \
92
		\
93
		$(FORCE_FPIC) \
94
		-DMYSQL_UNIX_ADDR=/var/run/mysqld/mysqld.sock \
95
	       	-DMYSQL_USER=mysql \
24 by Clint Byrum
Set CMAKE_BUILD_TYPE to RelWithDebInfo instead of Debug so
96
		-DCMAKE_BUILD_TYPE=RelWithDebInfo \
2 by Clint Byrum, Norbert Tretkowski, Clint Byrum
[Norbert Tretkowski]
97
		-DWITH_LIBWRAP=ON \
10 by Clint Byrum
* New upstream release.
98
		-DWITH_READLINE=OFF \
99
		-DWITH_LIBEDIT=OFF \
2 by Clint Byrum, Norbert Tretkowski, Clint Byrum
[Norbert Tretkowski]
100
		$(USE_STATIC_MYSQLD) \
21.1.1 by James Page
* Fix mysqlhotcopy for databases containing views (LP: #1015033):
101
		$(USE_LINUX_NATIVE_AIO) \
19 by Clint Byrum, Clint Byrum, Matthieu Baerts (matttbe)
[ Clint Byrum ]
102
		-DWITH_SSL=bundled \
2 by Clint Byrum, Norbert Tretkowski, Clint Byrum
[Norbert Tretkowski]
103
	    -DCOMPILATION_COMMENT="($(DISTRIBUTION))" \
104
	    -DMYSQL_SERVER_SUFFIX="-$(DEBVERSION)" \
105
	    -DSYSTEM_TYPE="debian-linux-gnu" \
106
	    -DINSTALL_LAYOUT=RPM \
3 by Clint Byrum
d/control: Pre-Depend on multiarch-support and misc:Pre-Depends.
107
	    -DINSTALL_LIBDIR=lib/$(DEB_HOST_MULTIARCH) \
2 by Clint Byrum, Norbert Tretkowski, Clint Byrum
[Norbert Tretkowski]
108
	    -DINSTALL_PLUGINDIR=lib/mysql/plugin \
109
        -DWITH_EMBEDDED_SERVER=ON \
110
        -DHAVE_EMBEDDED_PRIVILEGE_CONTROL=ON \
4 by Clint Byrum, Guillaume Plessis, Clint Byrum
* Merge from debian experimental. (LP: #690925) Remaining changes from
111
	    -DWITH_ARCHIVE_STORAGE_ENGINE=ON \
112
	    -DWITH_BLACKHOLE_STORAGE_ENGINE=ON \
113
	    -DWITH_FEDERATED_STORAGE_ENGINE=ON \
2 by Clint Byrum, Norbert Tretkowski, Clint Byrum
[Norbert Tretkowski]
114
		-DWITH_EXTRA_CHARSETS=all ..'
115
		
116
	#       --sysconfdir=/etc/mysql  -- Appends /etc/mysql after ~/ in the my.cnf search patch!
117
	#
118
	#	--with-debug
119
	
120
	touch $@
121
122
123
build: build-stamp build-stamp-pic
124
125
build-stamp: configure
126
	@echo "RULES.$@"
127
	dh_testdir
128
	
129
	[ -f $(EXPORTED_SOURCE_TARBALL) ] || tar -zcf $(EXPORTED_SOURCE_TARBALL) \
130
	--exclude=debian . \
131
	--transform="s,^\./,mysql-5.5/,"
132
133
	cd $(builddir) && $(MAKE) $(MAKE_J)
134
135
ifeq ($(findstring nocheck,$(DEB_BUILD_OPTIONS)),)
136
	# Don't know why the following is necessary...
137
	cp unittest/unit.pl $(builddir)/unittest/
138
	cp -r mysql-test/* $(builddir)/mysql-test/
139
	cp -r sql/share/* $(builddir)/sql/share/
140
	cp -r scripts/*sql $(builddir)/scripts/
141
	if [ ! -f testsuite-stamp ] ; then \
142
	  cd $(builddir) && $(MAKE) $(MAKE_TEST_TARGET) || $(TESTSUITE_FAIL_CMD) ; \
143
	fi
144
endif
145
146
	touch testsuite-stamp
147
148
	touch build-stamp
149
150
MAKE_PIC = cd $(builddir) && $(MAKE) $(MAKE_J)
151
152
build-stamp-pic: configure-pic
153
	@echo "RULES.$@"
154
	# Build libmysqld dependencies
155
	#(MAKE_PIC) -C include
156
	#(MAKE_PIC) -C sql link_sources
157
	#(MAKE_PIC) -C libmysql link_sources
158
	#(MAKE_PIC) -C strings
159
	#(MAKE_PIC) -C regex
160
	#(MAKE_PIC) -C mysys
161
	#(MAKE_PIC) -C dbug
162
	#(MAKE_PIC) -C vio
163
	#(MAKE_PIC) -C storage
164
	#(MAKE_PIC) -C extra/yassl
165
	#(MAKE_PIC) -C cmd-line-utils
166
	#(MAKE_PIC) -C sql lex_hash.h
167
	$(MAKE_PIC) -C scripts
168
	# Build libmysqld itself
169
	$(MAKE_PIC) -C libmysqld
170
	
171
	touch $@
172
173
clean: clean-patched unpatch
174
	rm -rf debian/patched
175
clean-patched:
176
	@echo "RULES.clean-patched"
177
	dh_testdir 
178
	dh_testroot
179
	rm -f configure-stamp*
180
	rm -f build-stamp*
181
	rm -f testsuite-stamp
182
	
183
	[ ! -f Makefile ] || $(MAKE) clean
184
	[ ! -d mysql-test/var ] || rm -rf mysql-test/var
185
	
186
	rm -rf $(BUILDDIR) $(BUILDDIR_PIC)
187
188
	debconf-updatepo
189
	rm -f $(EXPORTED_SOURCE_TARBALL)
190
	dh_clean -v
191
192
193
install:
194
install install-pic: build
195
	@echo "RULES.$@"
196
	dh_testdir
197
	dh_testroot
198
	dh_prep
199
	dh_installdirs
200
201
	# some self written manpages which hopefully
202
	# gets overwritten sooner or later with upstreams
203
	mkdir -p $(TMP)/usr/share/man/man1/
204
	mkdir -p $(TMP)/usr/share/man/man8/
205
	cp debian/additions/*.1 $(TMP)/usr/share/man/man1/
206
	mkdir -p $(TMP)/etc/mysql/conf.d/
207
	cp debian/additions/mysqld_safe_syslog.cnf $(TMP)/etc/mysql/conf.d/
208
209
	# make install (trailing slash needed for innobase)
210
	cd $(builddir) && $(MAKE) install DESTDIR=$(TMP)/
211
		
212
	# After installing, remove rpath to make lintian happy.
213
	set +e; \
214
	find ./debian/tmp/ -type f -print0 \
215
		| xargs -0 --no-run-if-empty chrpath -k 2>/dev/null \
216
		| fgrep RPATH= \
217
		| cut -d: -f 1 \
218
		| xargs --no-run-if-empty chrpath -d; \
219
	set -e
220
221
	# libmysqlclient: move shared libraries (but not the rest like libheap.a & co)
222
	#mv $(TMP)/usr/lib/mysql/libmysqlclient* $(TMP)/usr/lib
223
	#perl -pi -e 's#/usr/lib/mysql#/usr/lib#' $(TMP)/usr/lib/libmysqlclient.la
224
	#perl -pi -e 's#/usr/lib/mysql#/usr/lib#' $(TMP)/usr/lib/libmysqlclient_r.la
225
	# Check if our beloved versioned symbols are really there
226
	#if [ "`objdump -T $(TMP)/usr/lib/libmysqlclient.so.16.0.0 | grep -c libmysqlclient_16`" -lt 500 ]; then \
227
	#  echo "ERROR: versioned symbols are absent"; \
228
	#  exit 1; \
229
	#fi     
6 by Clint Byrum
* d/mysql-client-5.5.files: add missing mysql_plugin
230
	# libmysqlclient_r is now a symlink to libmysqlclient. But it is
231
	# created wrong by the cmake build system and points at
232
	# libmysqlclient.so instead of the corresponding versioned lib.
233
	for i in `ls $(TMP)/usr/lib/$(DEB_HOST_MULTIARCH)/libmysqlclient.so*` ; do \
234
		rlib=`basename $$i | sed -e 's/libmysqlclient\./libmysqlclient_r./'` ;\
235
		ln -sf `basename $$i` $(TMP)/usr/lib/$(DEB_HOST_MULTIARCH)/$$rlib ;\
236
	done
2 by Clint Byrum, Norbert Tretkowski, Clint Byrum
[Norbert Tretkowski]
237
238
	# libmysqlclient-dev: forgotten header file since 3.23.25?
239
	#cp $(BUILDDIR)/include/my_config.h $(TMP)/usr/include/mysql/
240
	#cp include/my_dir.h $(TMP)/usr/include/mysql/
241
	# install libmysqld built with -FPIC
242
	install -d -m 0755 -o root -g root $(TMP)/usr/lib/mysql
243
	install -m 0644 -o root -g root $(BUILDDIR_PIC)/libmysqld/libmysqld.a $(TMP)/usr/lib/mysql/libmysqld_pic.a
244
	# mysql_config won't report the -fPIC, so give libmysqld-pic users a way to get their flags
245
	install -m 0755 -o root -g root $(BUILDDIR_PIC)/scripts/mysql_config $(TMP)/usr/bin/mysql_config_pic
246
247
	# mysql-common: We now provide our own config file.
248
	install -d $(TMP)/etc/mysql
249
	install -m 0644 debian/additions/my.cnf $(TMP)/etc/mysql/my.cnf
250
251
	# mysql-client
252
	install -m 0755 debian/additions/mysqlreport $(TMP)/usr/bin/
253
	install -m 0755 debian/additions/innotop/innotop $(TMP)/usr/bin/
254
	install -m 0644 debian/additions/innotop/innotop.1 $(TMP)/usr/share/man/man1/
255
256
	# mysql-5.5-testsuite
257
	mkdir -p $(TMP)/usr/lib/mysql-testsuite
258
	cp -rp $(TMP)/usr/share/mysql-test/* $(TMP)/usr/lib/mysql-testsuite
259
260
	# mysql-server
261
	#install -m 0755 $(BUILDDIR)/scripts/mysqld_safe $(TMP)/usr/bin/mysqld_safe
262
	mkdir -p $(TMP)/usr/share/doc/mysql-server-5.5/examples
263
	mv $(TMP)/usr/share/mysql/*cnf 	    $(TMP)/usr/share/doc/mysql-server-5.5/examples/
264
	rm -vf $(TMP)/usr/share/mysql/mi_test_all* \
265
	       $(TMP)/usr/share/mysql/mysql-log-rotate \
266
	       $(TMP)/usr/share/mysql/mysql.server \
267
	       $(TMP)/usr/share/mysql/binary-configure
268
	nm -n $(BUILDDIR)/sql/mysqld |gzip -9 > $(TMP)/usr/share/doc/mysql-server-5.5/mysqld.sym.gz
269
	install -m 0755 debian/additions/echo_stderr $(TMP)/usr/share/mysql/
270
	install -m 0755 debian/additions/debian-start $(TMP)/etc/mysql/
271
	install -m 0755 debian/additions/debian-start.inc.sh $(TMP)/usr/share/mysql/
272
13 by Clint Byrum
fixing tabs vs. spaces
273
	# install AppArmor profile
274
	install -D -m 644 debian/apparmor-profile $(TMP)/etc/apparmor.d/usr.sbin.mysqld
275
	# install Apport hook
276
	install -D -m 644 debian/mysql-server-5.5.py $(TMP)/usr/share/apport/package-hooks/source_mysql-5.5.py
2 by Clint Byrum, Norbert Tretkowski, Clint Byrum
[Norbert Tretkowski]
277
278
	install -D -m 0644 $(EXPORTED_SOURCE_TARBALL) $(TMP)/usr/src/mysql/`basename $(EXPORTED_SOURCE_TARBALL)`
279
280
	install -D -m 0644 $(EXPORTED_SOURCE_TARBALL) $(TMP)/usr/src/mysql/`basename $(EXPORTED_SOURCE_TARBALL)`
281
282
	dh_movefiles
283
	
284
# Build architecture-independent files here.
285
binary-indep: build install
286
	@echo "RULES.binary-indep"
287
	dh_testdir -i
288
	dh_testroot -i
289
	dh_installdebconf -i
290
	dh_installdocs -i
291
	dh_installexamples -i
292
	dh_installmenu -i
293
	dh_installlogrotate -i
294
	dh_installinit -i
295
	dh_installcron -i 
296
	dh_installman -i
297
	dh_installinfo -i
298
	dh_installlogcheck -i
299
	dh_installchangelogs -i
300
	dh_link -i
301
	dh_compress -i
302
	dh_fixperms -i
303
	dh_installdeb -i
304
	dh_perl -i
305
	dh_gencontrol -i
306
	dh_md5sums -i
307
	dh_builddeb -i
308
	
309
# Build architecture-dependent files here.
310
binary-arch: build install
311
	@echo "RULES.binary-arch"
312
	dh_testdir 
313
	dh_testroot
314
315
	dh_installdebconf -a
316
	dh_installdocs -a
317
	dh_installexamples -a
318
	dh_installmenu -a
319
	dh_installlogrotate -a --name mysql-server
320
	if [ "$(DISTRIBUTION)" = "Ubuntu" ]; then \
321
	  dh_apparmor -pmysql-server-5.5 --profile-name=usr.sbin.mysqld; \
322
	fi
323
	# Start mysql in runlevel 19 before 20 where apache, proftpd etc gets
324
	# started which might depend on a running database server.
325
	dh_installinit -a --name=mysql -- defaults 19 21
326
	dh_installcron -a --name mysql-server
327
	dh_installman -a
328
	dh_installinfo -a
329
	dh_installlogcheck -a
330
	dh_installchangelogs -a
331
	dh_strip -a
332
	dh_link -a	# .so muss nach .so.1.2.3 installier werden!
333
	dh_compress -a
334
	dh_fixperms -a
335
	#dh_makeshlibs -a
336
	dh_makeshlibs -plibmysqlclient18 -V'libmysqlclient18 (>= 5.5.13-1)'
337
	dh_installdeb -a
338
	dh_perl -a
339
	#dh_shlibdeps -a -l debian/libmysqlclient16/usr/lib -L libmysqlclient16
340
	dh_shlibdeps -a
341
	dh_gencontrol -a
342
	dh_md5sums -a
343
	dh_builddeb -a
344
345
source diff:
346
	@echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
347
348
binary:	binary-indep binary-arch
349
350
get-orig-source:
351
	@wget -nv -T10 -t3 \
352
	  -O /tmp/mysql-$(DEB_UPSTREAM_VERSION).tar.gz \
353
	  http://ftp.gwdg.de/pub/misc/mysql/Downloads/MySQL-$(DEB_UPSTREAM_VERSION_MAJOR_MINOR)/mysql-$(DEB_UPSTREAM_VERSION).tar.gz
354
	@tar xfz /tmp/mysql-$(DEB_UPSTREAM_VERSION).tar.gz -C /tmp
355
	@rm -rf /tmp/mysql-$(DEB_UPSTREAM_VERSION)/Docs
356
	@rm -rf /tmp/mysql-$(DEB_UPSTREAM_VERSION)/debian
357
	@mv /tmp/mysql-$(DEB_UPSTREAM_VERSION) /tmp/$(DEB_SOURCE_PACKAGE)-$(DEB_UPSTREAM_VERSION).orig
358
	@cd /tmp ; tar czf $(DEB_SOURCE_PACKAGE)_$(DEB_UPSTREAM_VERSION).orig.tar.gz $(DEB_SOURCE_PACKAGE)-$(DEB_UPSTREAM_VERSION).orig
359
	@rm -f /tmp/mysql-$(DEB_UPSTREAM_VERSION).tar.gz
360
	@rm -rf /tmp/$(DEB_SOURCE_PACKAGE)-$(DEB_UPSTREAM_VERSION).orig
361
362
.PHONY: clean clean-patched configure build binary binary-indep binary-arch install patch unpatch
363
364
# vim: ts=8