# 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>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
setvar pkgname = 'mariadb'
setvar pkgver = '10.1.28'
setvar pkgrel = '0'
setvar pkgdesc = ""A fast SQL database server""
setvar url = ""http://www.mariadb.org""
setvar pkgusers = ""mysql""
setvar pkggroups = ""mysql""
setvar arch = ""all""
setvar license = ""GPL""
setvar depends = ""$pkgname-common""
setvar depends_dev = ""libressl-dev zlib-dev""
setvar makedepends = ""cmake libressl-dev zlib-dev readline-dev libaio-dev ncurses-dev
	linux-headers""
setvar install = ""$pkgname.pre-install""
setvar source = ""https://downloads.mariadb.org/interstitial/mariadb-$pkgver/source/mariadb-$pkgver.tar.gz
	$pkgname.initd
	fix-mysql-install-db-path.patch
	fix-ucontext-check.patch
	ppc-remove-glibc-dep.patch
	""

# secfixes:
#   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

setvar subpackages = ""$pkgname-doc $pkgname-dev $pkgname-common
	$pkgname-client-libs:_client_libs $pkgname-libs
	$pkgname-client $pkgname-bench $pkgname-test:mytest
	mysql mysql-client:_compat_client mysql-bench:_compat_bench""

setvar builddir = ""$srcdir/$pkgname-$pkgver""

proc prepare {
	cd $builddir
	for i in $source {
		case (i) {
			*.patch { msg $i; patch -p1 -i "$srcdir"/$i || return 1}
		}
	}
}

proc build {
	cd $builddir
	cmake . -DBUILD_CONFIG=mysql_release \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DSYSCONFDIR=/etc/mysql \
		-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/mysql/docs \
		-DINSTALL_MANDIR=share/man \
		-DINSTALL_PLUGINDIR=lib/mysql/plugin \
		-DINSTALL_SCRIPTDIR=bin \
		-DINSTALL_INCLUDEDIR=include/mysql \
		-DINSTALL_DOCREADMEDIR=share/mysql \
		-DINSTALL_SUPPORTFILESDIR=share/mysql \
		-DINSTALL_MYSQLSHAREDIR=share/mysql \
		-DINSTALL_DOCDIR=share/mysql/docs \
		-DINSTALL_SHAREDIR=share/mysql \
		-DWITH_READLINE=ON \
		-DWITH_ZLIB=system \
		-DWITH_SSL=system \
		-DWITH_LIBWRAP=OFF \
		-DWITH_JEMALLOC=no \
		-DWITH_EXTRA_CHARSETS=complex \
		-DWITH_EMBEDDED_SERVER=ON \
		-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
		-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
		-DWITH_INNOBASE_STORAGE_ENGINE=1 \
		-DWITH_PARTITION_STORAGE_ENGINE=1 \
		-DPLUGIN_TOKUDB=NO \
		-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
		-DWITHOUT_FEDERATED_STORAGE_ENGINE=1 \
		-DWITHOUT_PBXT_STORAGE_ENGINE=1 \
		|| return 1
	make || return 1
}

proc package {
	cd $builddir
	make DESTDIR="$pkgdir/" install || return 1

	install -Dm 755 "$startdir"/$pkgname.initd \
		"$pkgdir"/etc/init.d/$pkgname || return 1

	# use small example config as default, which has tcp disabled
	install -Dm 640 -o mysql  "$pkgdir"/usr/share/mysql/my-medium.cnf \
		"$pkgdir"/etc/mysql/my.cnf || return 1

	# libmysqlclient_r is no more.  Upstream tries to replace it with
	# symlinks but that really doesn't work (wrong soname in particular).
	# We'll keep just the devel libmysqlclient_r.so link, so that
	# rebuilding without any source change is enough to get rid of
	# dependency on libmysqlclient_r.
	rm -f "$pkgdir"/usr/lib/libmysqlclient_r.so*
	ln -s libmysqlclient.so "$pkgdir"/usr/lib/libmysqlclient_r.so

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

proc dev {
	default_dev
	setvar replaces = ""libmysqlclient mysql-dev""
	setvar provides = ""mysql-dev=$pkgver-r$pkgrel""
	mkdir -p "$subpkgdir"/usr/bin
	mv "$pkgdir"/usr/bin/mysql_config "$subpkgdir"/usr/bin/
}

proc _client_libs {
	setvar pkgdesc = ""MariaDB client library""
	setvar replaces = ""mariadb libmysqlclient""
	setvar depends = ""mariadb-common""
	mkdir -p "$subpkgdir"/usr/lib \
		"$subpkgdir"/usr/share/mysql \
		|| return 1
	mv "$pkgdir"/usr/lib/libmysqlclient.so* \
		"$subpkgdir"/usr/lib/ \
		|| return 1
}

proc common {
	setvar pkgdesc = ""MariaDB common files for both server and client""
	setvar replaces = ""mysql-common""
	setvar depends = ''
	mkdir -p "$subpkgdir"/usr/share/mysql \
		"$subpkgdir"/etc \
		"$subpkgdir"/usr/lib/mysql/plugin
	mv "$pkgdir"/etc/mysql "$subpkgdir"/etc/ || return 1
	mv "$pkgdir"/usr/lib/mysql/plugin/dialog.so \
		"$pkgdir"/usr/lib/mysql/plugin/mysql_clear_password.so \
		"$subpkgdir"/usr/lib/mysql/plugin/ || return 1
	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 {
		mv "$pkgdir"/usr/share/mysql/$l \
			"$subpkgdir"/usr/share/mysql/ || return 1
	}
}

proc mytest {
	setvar pkgdesc = ""The test suite distributed with MariaDB""
	mkdir -p "$subpkgdir"/usr/bin || return 1
	mv "$pkgdir"/usr/bin/mysql_client_test \
		"$pkgdir"/usr/mysql-test \
		"$pkgdir"/usr/bin/my_safe_process \
		"$subpkgdir"/usr/bin/ \
		|| return 1
}

proc client {
	setvar pkgdesc = ""client for the MariaDB database""
	setvar depends = ""mariadb-common""
	setvar install = """"
	local bins="myisam_ftdump mysql mysqlaccess mysqladmin mysqlbug
		mysqlcheck mysqldump mysqldumpslow mysql_find_rows
		mysql_fix_extensions mysqlimport mysqlshow mysql_waitpid"
	mkdir -p "$subpkgdir"/usr/bin/ || return 1
	for i in $bins {
		mv "$pkgdir"/usr/bin/${i} "$subpkgdir"/usr/bin/ || return 1
	}
}

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

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

proc mysql { _compat mysql mariadb; }
proc _compat_client { _compat mysql-client mariadb-client; }
proc _compat_bench { _compat mysql-bench mariadb-client; }

setvar sha512sums = ""ca10d28f6b966719c7488c2b4ba928b65cbe9dc32ccf2a28d29c4d0c2d46ea1c59c3e339230017b317132dcd216925a71769dfba80a7d6321079c74ac41926d8  mariadb-10.1.28.tar.gz
06751768cb00d2e433655635c38d267ef25084a5830ff40e719ac579223c7192dc34b43f919ab6faf480094632327511cbd22456064dde2d04dc15648b9e3b9f  mariadb.initd
f85e96490de56aa4e6115f931bf256bef4e1b93cadbe4ac947d6abdc03072bf2d0872e0268ae37cd98edf13538ece73e9f8b6efa8133bab23168a825c5066ab1  fix-mysql-install-db-path.patch
82fa93411483f5d1b57d978087a891bcab6a011e45c2d79b08d28718f5717994b423fc81d2170dad2fe65303153ac29655a81ce5039e73e37cebb159392a86cf  fix-ucontext-check.patch
a352661d19becae717c16ac67a0e47ed93787653851a75d27e7764133b31dc02e18c38dbbce6d3138e4db08da616dfc75a0141865cd042cef669d6afe4463127  ppc-remove-glibc-dep.patch""