APKBUILD 13.1 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.29
10
pkgrel=0
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
11
pkgdesc="A fast SQL database server"
J0WI's avatar
J0WI committed
12
url="https://www.mariadb.org/"
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
13
14
pkgusers="mysql"
pkggroups="mysql"
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
22
	libxml2-dev ncurses-dev pcre-dev readline-dev xz-dev linux-headers linux-pam-dev
TBK's avatar
TBK committed
23
	$_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 suid"
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
	ppc-remove-glibc-dep.patch
44
	pcre.cmake.patch
45
	"
46
# dbug test fails under rootbld
47
#options="!check"
48
builddir="$srcdir/$pkgname-$pkgver"
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
49

50
# secfixes:
51
52
53
#   10.3.29-r0:
#     - CVE-2021-2154
#     - CVE-2021-2166
54
55
#   10.3.28-r0:
#     - CVE-2021-27928
56
57
58
59
60
61
#   10.3.27-r0:
#     - CVE-2020-14765
#     - CVE-2020-14776
#     - CVE-2020-14789
#     - CVE-2020-14812
#     - CVE-2020-28912
62
63
#   10.3.25-r0:
#     - CVE-2020-15180
64
65
66
67
68
#   10.3.23-r0:
#     - CVE-2020-2752
#     - CVE-2020-2760
#     - CVE-2020-2812
#     - CVE-2020-2814
69
70
#   10.3.22-r0:
#     - CVE-2020-2574
71
72
73
#   10.3.20-r0:
#     - CVE-2019-2938
#     - CVE-2019-2974
74
75
76
77
78
79
#   10.3.17-r0:
#     - CVE-2019-2805
#     - CVE-2019-2740
#     - CVE-2019-2739
#     - CVE-2019-2737
#     - CVE-2019-2758
80
81
82
83
#   10.3.15-r0:
#     - CVE-2019-2614
#     - CVE-2019-2627
#     - CVE-2019-2628
84
85
86
#   10.3.13-r0:
#     - CVE-2019-2510
#     - CVE-2019-2537
87
88
89
90
91
92
93
94
95
96
97
98
99
#   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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#   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
115
#     - CVE-2018-2813
116
117
118
#   10.1.22-r0:
#     - CVE-2017-3313
#     - CVE-2017-3302
119
120
121
122
123
124
125
126
127
128
129
130
131
#   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

132
133
134
# 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
135
build() {
136
	cd "$builddir"
137

Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
138
139
	cmake . -DBUILD_CONFIG=mysql_release \
		-DCMAKE_INSTALL_PREFIX=/usr \
140
141
		-DSYSCONFDIR=/etc \
		-DSYSCONF2DIR=/etc/my.cnf.d \
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
142
		-DMYSQL_DATADIR=/var/lib/mysql \
143
		-DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock \
144
145
		-DDEFAULT_CHARSET=utf8mb4 \
		-DDEFAULT_COLLATION=utf8mb4_general_ci \
146
		-DENABLED_LOCAL_INFILE=ON \
147
		-DINSTALL_INFODIR=share/info \
148
		-DINSTALL_MANDIR=share/man \
149
		-DINSTALL_PLUGINDIR=lib/$pkgname/plugin \
150
151
		-DINSTALL_SCRIPTDIR=bin \
		-DINSTALL_INCLUDEDIR=include/mysql \
152
153
154
155
156
		-DINSTALL_DOCREADMEDIR=share/doc/$pkgname \
		-DINSTALL_SUPPORTFILESDIR=share/$pkgname \
		-DINSTALL_MYSQLSHAREDIR=share/$pkgname \
		-DINSTALL_DOCDIR=share/doc/$pkgname \
		-DTMPDIR=/var/tmp \
157
158
159
160
161
162
163
164
165
166
167
168
169
		-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 \
170
		-DPLUGIN_ROCKSDB=$_enable_rocksdb \
171
172
173
		-DPLUGIN_SPHINX=NO \
		-DPLUGIN_TOKUDB=NO \
		-DPLUGIN_AUTH_GSSAPI=NO \
174
		-DPLUGIN_AUTH_GSSAPI_CLIENT=OFF \
175
176
177
178
179
180
181
182
183
		-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 \
184
185
186
187
188
		-DWITH_ROCKSDB_BZIP2=OFF \
		-DWITH_ROCKSDB_JEMALLOC=OFF \
		-DWITH_ROCKSDB_LZ4=OFF \
		-DWITH_ROCKSDB_ZSTD=OFF \
		-DWITH_ROCKSDB_SNAPPY=OFF \
189
190
191
192
193
194
195
		-DWITH_JEMALLOC=NO \
		-DWITH_LIBARCHIVE=system \
		-DWITH_LIBNUMA=NO \
		-DWITH_LIBWRAP=OFF \
		-DWITH_LIBWSEP=OFF \
		-DWITH_MARIABACKUP=ON \
		-DWITH_PCRE=system \
196
		-DWITH_READLINE=ON \
197
		-DWITH_SYSTEMD=no \
198
		-DWITH_SSL=system \
199
200
201
		-DWITH_VALGRIND=OFF \
		-DWITH_ZLIB=system \
		-DSKIP_TESTS=ON # Disables the client lib tests since a running server is needed
202
203
204
205
206

	# print config options to log
	cmake -L

	make
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
207
208
}

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

215
216
}

Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
217
package() {
218
	cd "$builddir"
A. Wilcox's avatar
A. Wilcox committed
219
	make DESTDIR="$pkgdir/" install
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
220

221
	install -Dm 755 "$startdir"/$pkgname.initd \
A. Wilcox's avatar
A. Wilcox committed
222
		"$pkgdir"/etc/init.d/$pkgname
223
	mkdir -p "$pkgdir"/etc/my.cnf.d
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
224
225
226
227
228
229
230

	# 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
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254


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

	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
321
322
}

323
dev() {
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
324
	default_dev
325
326
	replaces="libmysqlclient mysql-dev"
	provides="mysql-dev=$pkgver-r$pkgrel"
327
	mkdir -p "$subpkgdir"/usr/bin
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
328
329
330
}

common() {
331
	pkgdesc="MariaDB common files for both server and client"
332
	replaces="mysql-common"
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
333
	depends=
334
	mkdir -p "$subpkgdir"/usr/share/$pkgname \
335
		"$subpkgdir"/etc/mysql \
336
		"$subpkgdir"/usr/lib/$pkgname/plugin
337
	mv "$pkgdir"/etc/my.* "$subpkgdir"/etc/
338
339
340
341
342
	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
343
344
		mv "$pkgdir"/usr/share/$pkgname/$l \
			"$subpkgdir"/usr/share/$pkgname/
345
	done
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
346
347
348
349
}

mytest() {
	pkgdesc="The test suite distributed with MariaDB"
A. Wilcox's avatar
A. Wilcox committed
350
	mkdir -p "$subpkgdir"/usr/bin
351
	mv "$pkgdir"/usr/bin/mysql_client_test \
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
352
		"$pkgdir"/usr/bin/my_safe_process \
353
354
		"$pkgdir"/usr/bin/mysqltest \
		"$pkgdir"/usr/bin/mysqltest_embedded \
A. Wilcox's avatar
A. Wilcox committed
355
		"$subpkgdir"/usr/bin/
356
357
	mv "$pkgdir"/usr/mysql-test \
		"$subpkgdir"/usr/
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
358
359
360
}

client() {
361
	pkgdesc="Client for the MariaDB database"
362
	depends="mariadb-common=$pkgver-r$pkgrel"
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
363
	install=""
364
	local bins="myisam_ftdump mysql mysqlaccess mysqladmin
365
366
		mysqlcheck mysqldump mysqldumpslow mysql_find_rows
		mysql_fix_extensions mysqlimport mysqlshow mysql_waitpid"
A. Wilcox's avatar
A. Wilcox committed
367
	mkdir -p "$subpkgdir"/usr/bin/
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
368
	for i in $bins; do
A. Wilcox's avatar
A. Wilcox committed
369
		mv "$pkgdir"/usr/bin/${i} "$subpkgdir"/usr/bin/
Łukasz Jendrysik's avatar
Łukasz Jendrysik committed
370
371
372
373
374
375
376
377
378
379
	done
}

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

380
381
_compat() {
	pkgdesc="Dummy package for $1 migration"
382
	depends="$2"
383
384
385
	mkdir -p "$subpkgdir"
}

386
387
388
mysql() { _compat mysql mariadb; }
_compat_client() { _compat mysql-client mariadb-client; }
_compat_bench() { _compat mysql-bench mariadb-client; }
389

390
static() {
391
	pkgdesc="Static libraries for MariaDB"
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
	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
408
	mv "$pkgdir"/usr/lib/libmariadbd.so.* "$subpkgdir"/usr/lib/
409
410
411
412
413
414
415
416
417
418
419
}


_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
420
421
422
423
424
425
426
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/
}

427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
_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/
}

446
447
448
449
450
451
452
453
454
_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
}

455
sha512sums="
456
fe868cde5ac3536ff5bbf34f235253c79e897e61bb34f7fdaca8fa8fcdb83e4a19c615beab27d3fdb5daee64ac0c8f36ec7e8089a9422c8540f7e92b1999a769  mariadb-10.3.29.tar.gz
457
c352969f6665b0ffa387f7b185a5dea7751f4b16c12c809627857b27321efa09159369d7dd5c852d6159a9f173cb895fb601f0c52a1fa6e3527899520030964c  mariadb.initd
458
e9ae4613f1d8c5f0a59b39a3548c46e50674ae78e7457d0e64c49f7e1573125c13634bbce7e29179bb8865a423171f852f43b96f7ef95619a95f02edcfc71efd  ppc-remove-glibc-dep.patch
459
70da971aa78815495098205bcbd28428430aa83c3f1050fec0231ca86af9d9def2d2108a48ee08d86812c8dc5ad8ab1ef4e17a49b4936ed5187ae0f6a7ef8f63  pcre.cmake.patch
460
"