aboutsummaryrefslogtreecommitdiffstats
path: root/main/mariadb/APKBUILD
blob: 5a085c31fe99c12591ce05884b15a2697930b8df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
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
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
# Contributor: Sergei Lukin <sergej.lukin@gmail.com>
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Contributor: Łukasz Jendrysik <scadu@yandex.com>
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Contributor: TBK <alpine@jjtc.eu>
# Contributor: Marcel Haazen <marcel@haazen.xyz>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=mariadb
pkgver=10.3.20
pkgrel=0
pkgdesc="A fast SQL database server"
url="https://www.mariadb.org/"
pkgusers="mysql"
pkggroups="mysql"
arch="all"
license="GPL-2.0-or-later"
depends="$pkgname-common"
checkdepends="perl"
_mytopdeps="perl perl-dbi perl-dbd-mysql perl-getopt-long perl-socket perl-term-readkey"
depends_dev="openssl-dev zlib-dev mariadb-connector-c-dev"
makedepends="$depends_dev bison cmake curl-dev libaio-dev libarchive-dev libevent-dev
	libxml2-dev ncurses-dev pcre-dev readline-dev xz-dev linux-headers linux-pam-dev
	$_mytopdeps"
install="$pkgname.pre-install $pkgname-common.post-upgrade"
subpackages="$pkgname-static $pkgname-test:mytest $pkgname-embedded-dev:_embedded_dev
	$pkgname-doc $pkgname-dev $pkgname-common $pkgname-openrc
	$pkgname-client $pkgname-bench $pkgname-backup $pkgname-embedded $pkgname-mytop
	$pkgname-server-utils:_server_utils
	mysql mysql-client:_compat_client mysql-bench:_compat_bench"
options="!checkroot suid"

_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

source="https://downloads.mariadb.org/interstitial/mariadb-$pkgver/source/mariadb-$pkgver.tar.gz
	$pkgname.initd
	fix-c11-atomics-check.patch
	ppc-remove-glibc-dep.patch
	pcre.cmake.patch
	"
# dbug test fails under rootbld
#options="!check"
builddir="$srcdir/$pkgname-$pkgver"

# secfixes:
#   10.3.20-r0:
#     - CVE-2019-2938
#     - CVE-2019-2974
#   10.3.17-r0:
#     - CVE-2019-2805
#     - CVE-2019-2740
#     - CVE-2019-2739
#     - CVE-2019-2737
#     - CVE-2019-2758
#   10.3.15-r0:
#     - CVE-2019-2614
#     - CVE-2019-2627
#     - CVE-2019-2628
#   10.3.13-r0:
#     - CVE-2019-2510
#     - CVE-2019-2537
#   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
#   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
#     - CVE-2018-2813
#   10.1.22-r0:
#     - CVE-2017-3313
#     - CVE-2017-3302
#   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

# Notes:
# Available plugins https://mariadb.com/kb/en/library/list-of-plugins/
# All cmake configuration options can be displayed with: cmake ../server -LH
build() {
	cd "$builddir"

	cmake . -DBUILD_CONFIG=mysql_release \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DSYSCONFDIR=/etc \
		-DSYSCONF2DIR=/etc/my.cnf.d \
		-DMYSQL_DATADIR=/var/lib/mysql \
		-DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock \
		-DDEFAULT_CHARSET=utf8 \
		-DDEFAULT_COLLATION=utf8_general_ci \
		-DENABLED_LOCAL_INFILE=ON \
		-DINSTALL_INFODIR=share/info \
		-DINSTALL_MANDIR=share/man \
		-DINSTALL_PLUGINDIR=lib/$pkgname/plugin \
		-DINSTALL_SCRIPTDIR=bin \
		-DINSTALL_INCLUDEDIR=include/mysql \
		-DINSTALL_DOCREADMEDIR=share/doc/$pkgname \
		-DINSTALL_SUPPORTFILESDIR=share/$pkgname \
		-DINSTALL_MYSQLSHAREDIR=share/$pkgname \
		-DINSTALL_DOCDIR=share/doc/$pkgname \
		-DTMPDIR=/var/tmp \
		-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 \
		-DPLUGIN_ROCKSDB=$_enable_rocksdb \
		-DPLUGIN_SPHINX=NO \
		-DPLUGIN_TOKUDB=NO \
		-DPLUGIN_AUTH_GSSAPI=NO \
		-DPLUGIN_AUTH_GSSAPI_CLIENT=OFF \
		-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 \
		-DWITH_ROCKSDB_BZIP2=OFF \
		-DWITH_ROCKSDB_JEMALLOC=OFF \
		-DWITH_ROCKSDB_LZ4=OFF \
		-DWITH_ROCKSDB_ZSTD=OFF \
		-DWITH_ROCKSDB_SNAPPY=OFF \
		-DWITH_JEMALLOC=NO \
		-DWITH_LIBARCHIVE=system \
		-DWITH_LIBNUMA=NO \
		-DWITH_LIBWRAP=OFF \
		-DWITH_LIBWSEP=OFF \
		-DWITH_MARIABACKUP=ON \
		-DWITH_PCRE=system \
		-DWITH_READLINE=ON \
		-DWITH_SYSTEMD=no \
		-DWITH_SSL=system \
		-DWITH_VALGRIND=OFF \
		-DWITH_ZLIB=system \
		-DSKIP_TESTS=ON # Disables the client lib tests since a running server is needed

	# print config options to log
	cmake -L

	make
}

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

}

package() {
	cd "$builddir"
	make DESTDIR="$pkgdir/" install

	install -Dm 755 "$startdir"/$pkgname.initd \
		"$pkgdir"/etc/init.d/$pkgname
	mkdir -p "$pkgdir"/etc/my.cnf.d

	# 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


	# 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 \
		"$pkgdir"/usr/lib/$pkgname/plugin/sha256_password.so \
		"$pkgdir"/usr/lib/$pkgname/plugin/caching_sha2_password.so \
		"$pkgdir"/usr/lib/libmysqlclient.so \
		"$pkgdir"/usr/lib/libmysqlclient_r.so \
		"$pkgdir"/usr/lib/libmariadb.so* \
		"$pkgdir"/usr/lib/pkgconfig/libmariadb.pc

	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
}

dev() {
	default_dev
	replaces="libmysqlclient mysql-dev"
	provides="mysql-dev=$pkgver-r$pkgrel"
	mkdir -p "$subpkgdir"/usr/bin
}

common() {
	pkgdesc="MariaDB common files for both server and client"
	replaces="mysql-common"
	depends=
	mkdir -p "$subpkgdir"/usr/share/$pkgname \
		"$subpkgdir"/etc/mysql \
		"$subpkgdir"/usr/lib/$pkgname/plugin
	mv "$pkgdir"/etc/my.* "$subpkgdir"/etc/
	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
		mv "$pkgdir"/usr/share/$pkgname/$l \
			"$subpkgdir"/usr/share/$pkgname/
	done
}

mytest() {
	pkgdesc="The test suite distributed with MariaDB"
	mkdir -p "$subpkgdir"/usr/bin
	mv "$pkgdir"/usr/bin/mysql_client_test \
		"$pkgdir"/usr/bin/my_safe_process \
		"$pkgdir"/usr/bin/mysqltest \
		"$pkgdir"/usr/bin/mysqltest_embedded \
		"$subpkgdir"/usr/bin/
	mv "$pkgdir"/usr/mysql-test \
		"$subpkgdir"/usr/
}

client() {
	pkgdesc="Client for the MariaDB database"
	depends="mariadb-common=$pkgver-r$pkgrel"
	install=""
	local bins="myisam_ftdump mysql mysqlaccess mysqladmin
		mysqlcheck mysqldump mysqldumpslow mysql_find_rows
		mysql_fix_extensions mysqlimport mysqlshow mysql_waitpid"
	mkdir -p "$subpkgdir"/usr/bin/
	for i in $bins; do
		mv "$pkgdir"/usr/bin/${i} "$subpkgdir"/usr/bin/
	done
}

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

_compat() {
	pkgdesc="Dummy package for $1 migration"
	depends="$2"
	mkdir -p "$subpkgdir"
}

mysql() { _compat mysql mariadb; }
_compat_client() { _compat mysql-client mariadb-client; }
_compat_bench() { _compat mysql-bench mariadb-client; }

static() {
	pkgdesc="Static libraries for MariaDB"
	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
	mv "$pkgdir"/usr/lib/libmariadbd.so.* "$subpkgdir"/usr/lib/
}


_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/
}

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/
}

_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/
}

_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
}

sha512sums="8080cb6db85c587f39f128e98b00c3e6428bf3e828271a227bb2c61c97683c965802baa6e5f825317f7e2963683c0f81699642853deeca6977faa2b6932044a3  mariadb-10.3.20.tar.gz
c352969f6665b0ffa387f7b185a5dea7751f4b16c12c809627857b27321efa09159369d7dd5c852d6159a9f173cb895fb601f0c52a1fa6e3527899520030964c  mariadb.initd
ecfea6503edd301bb628e2a44f36315079efa70e7615ff06b27714397332034f02e68ef40d4d5c761942e024ed1993621127c9df80b7e2327c68b1d839a7a322  fix-c11-atomics-check.patch
e9ae4613f1d8c5f0a59b39a3548c46e50674ae78e7457d0e64c49f7e1573125c13634bbce7e29179bb8865a423171f852f43b96f7ef95619a95f02edcfc71efd  ppc-remove-glibc-dep.patch
70da971aa78815495098205bcbd28428430aa83c3f1050fec0231ca86af9d9def2d2108a48ee08d86812c8dc5ad8ab1ef4e17a49b4936ed5187ae0f6a7ef8f63  pcre.cmake.patch"