APKBUILD 12.6 KB
Newer Older
1
# Contributor: Sergei Lukin <sergej.lukin@gmail.com>
2
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
3
4
# Contributor: Łukasz Jendrysik <scadu@yandex.com>
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
5
# Contributor: TBK <alpine@jjtc.eu>
6
# Contributor: Marcel Haazen <marcel@haazen.xyz>
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
7
8
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=mariadb
9
pkgver=10.3.13
10
pkgrel=3
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
11
pkgdesc="A fast SQL database server"
12
url="https://www.mariadb.org"
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
13
14
pkgusers="mysql"
pkggroups="mysql"
Timo Teräs's avatar
Timo Teräs committed
15
arch="all"
TBK's avatar
TBK committed
16
license="GPL-2.0-or-later"
17
depends="$pkgname-common"
Natanael Copa's avatar
Natanael Copa committed
18
checkdepends="perl"
TBK's avatar
TBK committed
19
_mytopdeps="perl perl-dbi perl-dbd-mysql perl-getopt-long perl-socket perl-term-readkey"
20
depends_dev="openssl-dev zlib-dev mariadb-connector-c-dev"
21
makedepends="$depends_dev bison cmake curl-dev libaio-dev libarchive-dev libevent-dev
TBK's avatar
TBK committed
22
23
	libxml2-dev ncurses-dev pcre-dev readline-dev xz-dev linux-headers
	$_mytopdeps"
24
install="$pkgname.pre-install $pkgname-common.post-upgrade"
25
26
subpackages="$pkgname-static $pkgname-test:mytest $pkgname-embedded-dev:_embedded_dev
	$pkgname-doc $pkgname-dev $pkgname-common $pkgname-openrc
TBK's avatar
TBK committed
27
	$pkgname-client $pkgname-bench $pkgname-backup $pkgname-embedded $pkgname-mytop
28
	$pkgname-server-utils:_server_utils
29
	mysql mysql-client:_compat_client mysql-bench:_compat_bench"
30
options="!checkroot"
31
32
33
34
35
36
37
38
39
40

_enable_rocksdb=YES
case "$CARCH" in
x86|s390x) _enable_rocksdb=NO;;
esac

if [ "$_enable_rocksdb" = "YES" ]; then
	subpackages="$subpackages $pkgname-plugin-rocksdb:_plugin_rocksdb"
fi

Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
41
source="https://downloads.mariadb.org/interstitial/mariadb-$pkgver/source/mariadb-$pkgver.tar.gz
42
	$pkgname.initd
43
	fix-c11-atomics-check.patch
44
	ppc-remove-glibc-dep.patch
45
	pcre.cmake.patch
46
	"
47
# dbug test fails under rootbld
48
#options="!check"
49
builddir="$srcdir/$pkgname-$pkgver"
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
50

51
# secfixes:
52
53
54
#   10.3.13-r0:
#     - CVE-2019-2510
#     - CVE-2019-2537
55
56
57
58
59
60
61
62
63
64
65
66
67
#   10.3.11-r0:
#     - CVE-2018-3282
#     - CVE-2016-9843
#     - CVE-2018-3174
#     - CVE-2018-3143
#     - CVE-2018-3156
#     - CVE-2018-3251
#     - CVE-2018-3185
#     - CVE-2018-3277
#     - CVE-2018-3162
#     - CVE-2018-3173
#     - CVE-2018-3200
#     - CVE-2018-3284
TBK's avatar
TBK committed
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#   10.2.15-r0:
#     - CVE-2018-2786
#     - CVE-2018-2759
#     - CVE-2018-2777
#     - CVE-2018-2810
#     - CVE-2018-2782
#     - CVE-2018-2784
#     - CVE-2018-2787
#     - CVE-2018-2766
#     - CVE-2018-2755
#     - CVE-2018-2819
#     - CVE-2018-2817
#     - CVE-2018-2761
#     - CVE-2018-2781
#     - CVE-2018-2771
TBK's avatar
TBK committed
83
#     - CVE-2018-2813
84
85
86
#   10.1.22-r0:
#     - CVE-2017-3313
#     - CVE-2017-3302
87
88
89
90
91
92
93
94
95
96
97
98
99
#   10.1.21-r0:
#     - CVE-2016-6664
#     - CVE-2017-3238
#     - CVE-2017-3243
#     - CVE-2017-3244
#     - CVE-2017-3257
#     - CVE-2017-3258
#     - CVE-2017-3265
#     - CVE-2017-3291
#     - CVE-2017-3312
#     - CVE-2017-3317
#     - CVE-2017-3318

100
101
102
# Notes:
# Available plugins https://mariadb.com/kb/en/library/list-of-plugins/
# All cmake configuration options can be displayed with: cmake ../server -LH
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
103
build() {
104
	cd "$builddir"
105

Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
106
107
	cmake . -DBUILD_CONFIG=mysql_release \
		-DCMAKE_INSTALL_PREFIX=/usr \
108
109
		-DSYSCONFDIR=/etc \
		-DSYSCONF2DIR=/etc/my.cnf.d \
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
110
		-DMYSQL_DATADIR=/var/lib/mysql \
111
112
113
114
		-DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock \
		-DDEFAULT_CHARSET=utf8 \
		-DDEFAULT_COLLATION=utf8_general_ci \
		-DENABLED_LOCAL_INFILE=ON \
115
		-DINSTALL_INFODIR=share/info \
116
		-DINSTALL_MANDIR=share/man \
117
		-DINSTALL_PLUGINDIR=lib/$pkgname/plugin \
118
119
		-DINSTALL_SCRIPTDIR=bin \
		-DINSTALL_INCLUDEDIR=include/mysql \
120
121
122
123
124
		-DINSTALL_DOCREADMEDIR=share/doc/$pkgname \
		-DINSTALL_SUPPORTFILESDIR=share/$pkgname \
		-DINSTALL_MYSQLSHAREDIR=share/$pkgname \
		-DINSTALL_DOCDIR=share/doc/$pkgname \
		-DTMPDIR=/var/tmp \
125
126
127
128
129
130
131
132
133
134
135
136
137
		-DCONNECT_WITH_MYSQL=ON \
		-DCONNECT_WITH_LIBXML2=system \
		-DCONNECT_WITH_ODBC=NO \
		-DCONNECT_WITH_JDBC=NO \
		-DPLUGIN_ARCHIVE=YES \
		-DPLUGIN_ARIA=YES \
		-DPLUGIN_BLACKHOLE=YES \
		-DPLUGIN_CASSANDRA=NO \
		-DPLUGIN_CSV=YES \
		-DPLUGIN_MYISAM=YES \
		-DPLUGIN_MROONGA=NO \
		-DPLUGIN_OQGRAPH=NO \
		-DPLUGIN_PARTITION=YES \
138
		-DPLUGIN_ROCKSDB=$_enable_rocksdb \
139
140
141
142
		-DPLUGIN_SPHINX=NO \
		-DPLUGIN_TOKUDB=NO \
		-DPLUGIN_AUTH_PAM=NO \
		-DPLUGIN_AUTH_GSSAPI=NO \
143
		-DPLUGIN_AUTH_GSSAPI_CLIENT=OFF \
144
145
146
147
148
149
150
151
152
		-DPLUGIN_CRACKLIB_PASSWORD_CHECK=NO \
		-DWITH_ASAN=OFF \
		-DWITH_EMBEDDED_SERVER=ON \
		-DWITH_EXTRA_CHARSETS=complex \
		-DWITH_INNODB_BZIP2=OFF \
		-DWITH_INNODB_LZ4=OFF \
		-DWITH_INNODB_LZMA=ON \
		-DWITH_INNODB_LZO=OFF \
		-DWITH_INNODB_SNAPPY=OFF \
153
154
155
156
157
		-DWITH_ROCKSDB_BZIP2=OFF \
		-DWITH_ROCKSDB_JEMALLOC=OFF \
		-DWITH_ROCKSDB_LZ4=OFF \
		-DWITH_ROCKSDB_ZSTD=OFF \
		-DWITH_ROCKSDB_SNAPPY=OFF \
158
159
160
161
162
163
164
		-DWITH_JEMALLOC=NO \
		-DWITH_LIBARCHIVE=system \
		-DWITH_LIBNUMA=NO \
		-DWITH_LIBWRAP=OFF \
		-DWITH_LIBWSEP=OFF \
		-DWITH_MARIABACKUP=ON \
		-DWITH_PCRE=system \
165
		-DWITH_READLINE=ON \
166
		-DWITH_SYSTEMD=no \
167
		-DWITH_SSL=system \
168
169
170
		-DWITH_VALGRIND=OFF \
		-DWITH_ZLIB=system \
		-DSKIP_TESTS=ON # Disables the client lib tests since a running server is needed
171
172
173
174
175

	# print config options to log
	cmake -L

	make
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
176
177
}

178
179
check() {
	cd "$builddir"
180
	# exclude test-connect which seems to be buggy. testsuite does not set port env var
181
182
183
	# ma_test_loghandler_readonly seems to fail if /etc/my.conf.d is missing
	ctest -E '(test-connect|ma_test_loghandler_readonly)'

184
185
}

Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
186
package() {
187
	cd "$builddir"
A. Wilcox's avatar
A. Wilcox committed
188
	make DESTDIR="$pkgdir/" install
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
189

190
	install -Dm 755 "$startdir"/$pkgname.initd \
A. Wilcox's avatar
A. Wilcox committed
191
		"$pkgdir"/etc/init.d/$pkgname
192
	mkdir -p "$pkgdir"/etc/my.cnf.d
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
193
194
195
196
197
198
199

	# mysql-test includes one executable that doesn't belong under
	# /usr/share, so move it and provide a symlink
	mv "$pkgdir"/usr/mysql-test/lib/My/SafeProcess/my_safe_process \
		"$pkgdir"/usr/bin
	ln -s ../../../../bin/my_safe_process \
		"$pkgdir"/usr/mysql-test/lib/My/SafeProcess/my_safe_process
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223


	# remove files provided by mariadb-connector-c
	rm \
		"$pkgdir"/usr/bin/mariadb_config \
		"$pkgdir"/usr/bin/mysql_config \
		"$pkgdir"/usr/include/mysql/errmsg.h \
		"$pkgdir"/usr/include/mysql/ma_list.h \
		"$pkgdir"/usr/include/mysql/ma_pvio.h \
		"$pkgdir"/usr/include/mysql/ma_tls.h \
		"$pkgdir"/usr/include/mysql/mariadb/ma_io.h \
		"$pkgdir"/usr/include/mysql/mariadb_com.h \
		"$pkgdir"/usr/include/mysql/mariadb_ctype.h \
		"$pkgdir"/usr/include/mysql/mariadb_dyncol.h \
		"$pkgdir"/usr/include/mysql/mariadb_stmt.h \
		"$pkgdir"/usr/include/mysql/mariadb_version.h \
		"$pkgdir"/usr/include/mysql/mysql.h \
		"$pkgdir"/usr/include/mysql/mysql/client_plugin.h \
		"$pkgdir"/usr/include/mysql/mysql/plugin_auth.h \
		"$pkgdir"/usr/include/mysql/mysql/plugin_auth_common.h \
		"$pkgdir"/usr/include/mysql/mysql_version.h \
		"$pkgdir"/usr/include/mysql/mysqld_error.h \
		"$pkgdir"/usr/lib/$pkgname/plugin/dialog.so \
		"$pkgdir"/usr/lib/$pkgname/plugin/mysql_clear_password.so \
Kaarle Ritvanen's avatar
Kaarle Ritvanen committed
224
		"$pkgdir"/usr/lib/$pkgname/plugin/sha256_password.so \
225
		"$pkgdir"/usr/lib/$pkgname/plugin/caching_sha2_password.so \
226
227
		"$pkgdir"/usr/lib/libmysqlclient.so \
		"$pkgdir"/usr/lib/libmysqlclient_r.so \
228
229
		"$pkgdir"/usr/lib/libmariadb.so* \
		"$pkgdir"/usr/lib/pkgconfig/libmariadb.pc
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289

	cat >"$pkgdir"/etc/my.cnf<<-EOF
	# This group is read both both by the client and the server
	# use it for options that affect everything
	[client-server]

	# This group is read by the server
	[mysqld]

	# Disabling symbolic-links is recommended to prevent assorted security risks
	symbolic-links=0

	# include all files from the config directory
	!includedir /etc/my.cnf.d
	EOF

	cat >"$pkgdir"/etc/my.cnf.d/mariadb-server.cnf<<-EOF
	#
	# These groups are read by MariaDB server.
	# Use it for options that only the server (but not clients) should see

	# this is read by the standalone daemon and embedded servers
	[server]

	# this is only for the mysqld standalone daemon
	[mysqld]
	skip-networking

	# Galera-related settings
	[galera]
	# Mandatory settings
	#wsrep_on=ON
	#wsrep_provider=
	#wsrep_cluster_address=
	#binlog_format=row
	#default_storage_engine=InnoDB
	#innodb_autoinc_lock_mode=2
	#
	# Allow server to accept connections on all interfaces.
	#
	#bind-address=0.0.0.0
	#
	# Optional setting
	#wsrep_slave_threads=1
	#innodb_flush_log_at_trx_commit=0

	# this is only for embedded server
	[embedded]

	# This group is only read by MariaDB servers, not by MySQL.
	# If you use the same .cnf file for MySQL and MariaDB,
	# you can put MariaDB-only options here
	[mariadb]

	# This group is only read by MariaDB-10.3 servers.
	# If you use the same .cnf file for MariaDB of different versions,
	# use this group for options that older servers don't understand
	[mariadb-10.3]

	EOF
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
290
291
}

292
dev() {
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
293
	default_dev
294
295
	replaces="libmysqlclient mysql-dev"
	provides="mysql-dev=$pkgver-r$pkgrel"
296
	mkdir -p "$subpkgdir"/usr/bin
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
297
298
299
}

common() {
300
	pkgdesc="MariaDB common files for both server and client"
301
	replaces="mysql-common"
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
302
	depends=
303
	mkdir -p "$subpkgdir"/usr/share/$pkgname \
304
		"$subpkgdir"/etc/mysql \
305
		"$subpkgdir"/usr/lib/$pkgname/plugin
306
	mv "$pkgdir"/etc/my.* "$subpkgdir"/etc/
307
308
309
310
311
	local lang="charsets danish english french greek italian korean norwegian-ny
		portuguese russian slovak swedish czech dutch estonian german
		hungarian japanese norwegian polish romanian serbian spanish
		ukrainian"
	for l in $lang; do
312
313
		mv "$pkgdir"/usr/share/$pkgname/$l \
			"$subpkgdir"/usr/share/$pkgname/
314
	done
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
315
316
317
318
}

mytest() {
	pkgdesc="The test suite distributed with MariaDB"
A. Wilcox's avatar
A. Wilcox committed
319
	mkdir -p "$subpkgdir"/usr/bin
320
	mv "$pkgdir"/usr/bin/mysql_client_test \
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
321
		"$pkgdir"/usr/bin/my_safe_process \
322
323
		"$pkgdir"/usr/bin/mysqltest \
		"$pkgdir"/usr/bin/mysqltest_embedded \
A. Wilcox's avatar
A. Wilcox committed
324
		"$subpkgdir"/usr/bin/
325
326
	mv "$pkgdir"/usr/mysql-test \
		"$subpkgdir"/usr/
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
327
328
329
}

client() {
330
	pkgdesc="Client for the MariaDB database"
331
	depends="mariadb-common=$pkgver-r$pkgrel"
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
332
	install=""
333
	local bins="myisam_ftdump mysql mysqlaccess mysqladmin
334
335
		mysqlcheck mysqldump mysqldumpslow mysql_find_rows
		mysql_fix_extensions mysqlimport mysqlshow mysql_waitpid"
A. Wilcox's avatar
A. Wilcox committed
336
	mkdir -p "$subpkgdir"/usr/bin/
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
337
	for i in $bins; do
A. Wilcox's avatar
A. Wilcox committed
338
		mv "$pkgdir"/usr/bin/${i} "$subpkgdir"/usr/bin/
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
339
340
341
342
343
344
345
346
347
348
	done
}

bench() {
	pkgdesc="MariaDB benchmark scripts and data"
	replaces="mariadb"
	mkdir -p "$subpkgdir"/usr/share/
	mv "$pkgdir"/usr/sql-bench "$subpkgdir"/usr/share
}

349
350
_compat() {
	pkgdesc="Dummy package for $1 migration"
351
	depends="$2"
352
353
354
	mkdir -p "$subpkgdir"
}

355
356
357
mysql() { _compat mysql mariadb; }
_compat_client() { _compat mysql-client mariadb-client; }
_compat_bench() { _compat mysql-bench mariadb-client; }
358

359
static() {
360
	pkgdesc="Static libraries for MariaDB"
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/*.a "$subpkgdir"/usr/lib/
}

backup() {
	pkgdesc="The mariabackup tool for physical online backups"
	mkdir -p "$subpkgdir"/usr/bin
	mv "$pkgdir"/usr/bin/mariabackup \
		"$pkgdir"/usr/bin/mbstream \
		"$subpkgdir"/usr/bin/
}

embedded() {
	pkgdesc="MariaDB as an embeddable library"
	depends="$pkgname-common=$pkgver-r$pkgrel"
	mkdir -p "$subpkgdir"/usr/lib
377
	mv "$pkgdir"/usr/lib/libmariadbd.so.* "$subpkgdir"/usr/lib/
378
379
380
381
382
383
384
385
386
387
388
}


_embedded_dev() {
	pkgdesc="MariaDB as an embeddable library - development files"
	# this package only contains a symlink, but we want avoid pull in
	# libmysqld (embedded) unless needed
	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/libmysqld.so "$subpkgdir"/usr/lib/
}

TBK's avatar
TBK committed
389
390
391
392
393
394
395
mytop() {
	pkgdesc="Command line tool used for monitoring MariaDB performance"
	depends="$_mytopdeps"
	mkdir -p "$subpkgdir"/usr/bin/
	mv "$pkgdir"/usr/bin/mytop "$subpkgdir"/usr/bin/
}

396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
_server_utils() {
	pkgdesc="Non-essential server utilities for MariaDB/MySQL applications"
	depends="perl $pkgname-common=$pkgver-r$pkgrel"
	mkdir -p "$subpkgdir"/usr/bin
	# perl utils
	mv \
		"$pkgdir"/usr/bin/mysql_convert_table_format \
		"$pkgdir"/usr/bin/mysql_setpermission \
		"$pkgdir"/usr/bin/mysqld_multi \
		"$pkgdir"/usr/bin/mysqlhotcopy \
		"$subpkgdir"/usr/bin/
	# tools that can be used remotely and other tools
	mv \
		"$pkgdir"/usr/bin/mysql_upgrade \
		"$pkgdir"/usr/bin/perror \
		"$pkgdir"/usr/bin/mysqld_safe_helper \
		"$subpkgdir"/usr/bin/
}

415
416
417
418
419
420
421
422
423
_plugin_rocksdb() {
	pkgdesc="MariaDB plugin for RocksDB (MyRocks)"
	url="https://mariadb.com/kb/en/library/myrocks/"
	depends="$pkgname=$pkgver-r$pkgrel"
	mkdir -p "$subpkgdir"/usr/lib/mariadb/plugin
	mv "$pkgdir"/usr/lib/mariadb/plugin/ha_rocksdb.so \
		 "$subpkgdir"/usr/lib/mariadb/plugin/ha_rocksdb.so
}

424
sha512sums="3cbd93291aa43b235e5b81d953ea69fb32df54fb518f922f69b5485952f01fae693c77b0efac37f414ed7ff132d3b58f899812bdb7be8a5b344c3640e2c3a0dd  mariadb-10.3.13.tar.gz
425
eb9a0b781165975c96eb0cfc0e8544b10cdee7e8a731b4c3c51c1758e6336babe65fa5bec159fd8c49de52d0564e8240aa8bdd27062c4ecf0d09ed3e052df4d5  mariadb.initd
426
b4469f2f0299e71c09b65c91373f2d72b7fe9a9cd58ad24737a78a8097473b29c32b7267e173a2dfe1158f2f7d40a7fb02fb1b35caeda44d16ae3b9e2602a75f  fix-c11-atomics-check.patch
427
e9ae4613f1d8c5f0a59b39a3548c46e50674ae78e7457d0e64c49f7e1573125c13634bbce7e29179bb8865a423171f852f43b96f7ef95619a95f02edcfc71efd  ppc-remove-glibc-dep.patch
428
70da971aa78815495098205bcbd28428430aa83c3f1050fec0231ca86af9d9def2d2108a48ee08d86812c8dc5ad8ab1ef4e17a49b4936ed5187ae0f6a7ef8f63  pcre.cmake.patch"