From c50636433139f26543aad061d54c3708b2a4e22a Mon Sep 17 00:00:00 2001 From: Dan Theisen Date: Wed, 3 Jul 2019 15:49:03 +0000 Subject: user/mariadb: new package --- user/mariadb/APKBUILD | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 249 insertions(+) create mode 100644 user/mariadb/APKBUILD (limited to 'user/mariadb/APKBUILD') diff --git a/user/mariadb/APKBUILD b/user/mariadb/APKBUILD new file mode 100644 index 000000000..e5e9c2f83 --- /dev/null +++ b/user/mariadb/APKBUILD @@ -0,0 +1,249 @@ +# Contributor: A. Wilcox +# Contributor: Dan Theisen +# Maintainer: Dan Theisen +pkgname=mariadb +pkgver=10.4.6 +pkgrel=0 +pkgdesc="Open source database server" +url="https://mariadb.org/" +arch="all" +license="GPL-2.0-only" +pkgusers="mysql" +pkggroups="mysql" +depends="$pkgname-common" +depends_dev="openssl-dev zlib-dev" +makedepends="$depends_dev bison cmake curl-dev libaio-dev libarchive-dev + libedit-dev libevent-dev libexecinfo-dev libxml2-dev numactl-dev + ncurses-dev linux-pam-dev pcre-dev xz-dev" +_mytopdeps="perl perl-dbi perl-dbd-mysql perl-getopt-long perl-socket + perl-term-readkey" +subpackages="$pkgname-client $pkgname-server $pkgname-libs $pkgname-embedded + $pkgname-common::noarch $pkgname-backup mytop::noarch $pkgname-openrc + $pkgname-doc $pkgname-dev" +source="https://downloads.mariadb.org/interstitial/mariadb-$pkgver/source/mariadb-$pkgver.tar.gz + mariadb.initd + mariadb-server.limits + " + +options="suid" # required for pam_auth plugin, which is needed for + # mysql_install_db to work + +build() { + if [ "$CBUILD" != "$CHOST" ]; then + CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux" + fi + + local _release="\ + -DBUILD_CONFIG=mysql_release \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=\"$CXXFLAGS -DNDEBUG\" \ + -DCMAKE_C_FLAGS=\"$CFLAGS -DNDEBUG\" \ + -DWITH_DEFAULT_COMPILER_OPTIONS=NO \ + -DWITH_DEFAULT_FEATURE_SET=NO " + + # NUMA is disabled because all arches do not support it + # SKIP_TESTS skips client unittests that require a server to be present + # JEMALLOC is reported to not work on musl, TODO: test this + # ASAN also doesn't work on musl iirc + local _deps="\ + -DWITH_MARIABACKUP=ON \ + -DWITH_NUMA=OFF \ + -DWITH_LIBNUMA=OFF \ + -DWITH_LIBWSREP=ON \ + -DWITH_UNIT_TESTS=ON \ + -DWITH_LIBEDIT=ON \ + -DWITH_EMBEDDED_SERVER=ON \ + -DWITH_UNITTEST=OFF \ + -DWITH_ASAN=OFF \ + -DWITH_JEMALLOC=OFF \ + -DWITH_LIBWRAP=OFF \ + -DWITH_SYSTEMD=no \ + -DWITH_VALGRIND=OFF \ + -DWITH_COMMENT=\"${DISTRO_NAME:-Adélie Linux}\" \ + -DENABLED_LOCAL_INFILE=ON \ + -DENABLED_PROFILING=OFF \ + -DSKIP_TESTS=ON " + + # AWS_KEY_MANAGEMENT makes this package non-redistributable, disable it + local _plugins="\ + -DPLUGIN_ARCHIVE=YES \ + -DPLUGIN_ARIA=YES \ + -DPLUGIN_BLACKHOLE=YES \ + -DPLUGIN_CSV=YES \ + -DPLUGIN_MYISAM=YES \ + -DAUTH_GSSAPI_PLUGIN_TYPE=NO \ + -DPLUGIN_AUTH_GSSAPI=NO \ + -DPLUGIN_AWS_KEY_MANAGEMENT=NO \ + -DPLUGIN_CASSANDRA=NO \ + -DPLUGIN_FEEDBACK=NO " + + # Investigate turning more of these on + local _innodb="\ + -DWITH_INNODB_LZMA=YES \ + -DWITH_INNODB_BZIP2=NO \ + -DWITH_INNODB_LZ4=NO \ + -DWITH_INNODB_LZO=NO \ + -DWITH_INNODB_SNAPPY=NO " + + # MongoDB is not libre software, disable it + local _connect="\ + -DCONNECT_WITH_MYSQL=YES \ + -DCONNECT_WITH_MONGO=NO \ + -DCONNECT_WITH_ODBC=NO \ + -DCONNECT_WITH_JDBC=NO \ + -DCONNECT_WITH_LIBXML2=system " + + local _system_libs="\ + -DWITH_LIBARCHIVE=system \ + -DWITH_PCRE=system \ + -DWITH_SSL=system \ + -DWITH_ZLIB=system \ + -DWITH_EXTERNAL_ZLIB=YES \ + -DCONC_WITH_EXTERNAL_ZLIB=YES " + + local _system_paths="\ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DSYSCONFDIR=/etc/mysql \ + -DMYSQL_DATADIR=/var/lib/mariadb \ + -DMYSQL_UNIX_ADDR=/var/run/mariadb/mysqld.sock \ + -DINSTALL_UNIX_ADDRDIR=/var/run/mariadb/mysqld.sock \ + -DPKG_CONFIG_EXECUTABLE=/usr/bin/pkgconf \ + -DINSTALL_BINDIR=bin \ + -DINSTALL_SCRIPTDIR=bin \ + -DINSTALL_SBINDIR=sbin \ + -DINSTALL_INCLUDEDIR=include/mysql \ + -DINSTALL_LIBDIR=lib \ + -DINSTALL_PLUGINDIR=lib/mariadb/plugin \ + -DINSTALL_DOCDIR=share/doc/$pkgname \ + -DINSTALL_DOCREADMEDIR=share/doc/$pkgname \ + -DINSTALL_MANDIR=share/man \ + -DINSTALL_MYSQLSHAREDIR=share/mariadb \ + -DINSTALL_SUPPORTFILESDIR=share/mariadb \ + -DSUFFIX_INSTALL_DIR=\"\" " + + _buildflags=$(echo "\ + ${_release}\ + ${_deps}\ + ${_plugins}\ + ${_innodb}\ + ${_connect}\ + ${_system_libs}\ + ${_system_paths}\ + ${CMAKE_CROSSOPTS}" | tr -d '\t') + echo "Build Flags are: $_buildflags" + eval "cmake $_buildflags" + make +} + +check() { + CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E '^(test-connect)$' +} + +package() { + depends="$pkgname-client $pkgname-server" + install -m755 -D ${srcdir}/mariadb.initd ${pkgdir}/etc/init.d/mariadb +} + +openrc() { + default_openrc + depends="mariadb-server=$pkgver-r$pkgrel" +} + +_install_component() { + cd "$builddir" + component=$1 + prefix=$subpkgdir/usr + msg "Installing component \"$component\" into $prefix" + cmake -DCMAKE_INSTALL_PREFIX=${prefix} \ + -DCOMPONENT=${component} \ + -P cmake_install.cmake +} + +libs() { + pkgdesc="Libraries for the MariaDB database" + _install_component SharedLibraries +} + +client() { + pkgdesc="The MariaDB database client" + depends="mariadb-common=$pkgver-r$pkgrel" + for part in Client ClientPlugins; do + _install_component ${part} + done +} + +server() { + pkgdesc="The MariaDB database server" + depends="mariadb-common=$pkgver-r$pkgrel" + install="$pkgname-server.pre-install" + for part in Server Server_Scripts IniFiles connect-engine; do + _install_component ${part} + done + + install -m755 -D ${srcdir}/mariadb-server.limits \ + ${subpkgdir}/etc/security/limits.d/mariadb.conf +} + + +common() { + pkgdesc="MariaDB common files for both server and client" + replaces="mysql-common" + depends= + + SHARE_PATH=${pkgdir}-server/usr/share + mkdir -p ${subpkgdir}/usr + mv $SHARE_PATH ${subpkgdir}/usr + + _install_component Common +} + +embedded() { + pkgdesc="MariaDB embedded server and embeddable library" + + # move mysql-embedded from client subpackage to embedded + mkdir -p ${subpkgdir}/usr/bin + BIN_PATH=${pkgdir}-client/usr/bin + mv $BIN_PATH/mysql_embedded ${subpkgdir}/usr/bin/ + + # move embedded mysqld libraries from server package to embedded + mkdir -p ${subpkgdir}/usr/lib + LIB_PATH=${pkgdir}-server/usr/lib + MYSQLD_ELIB=$(readlink $LIB_PATH/libmysqld.so) + mv $LIB_PATH/$MYSQLD_ELIB ${subpkgdir}/usr/lib/ + mv $LIB_PATH/libmysqld.so ${subpkgdir}/usr/lib/ + mv $LIB_PATH/libmariadbd.so ${subpkgdir}/usr/lib/ +} + +backup() { + pkgdesc="The mariabackup tool for physical online backups" + _install_component backup +} + +mytop() { + pkgdesc="Command line tool used for monitoring MariaDB performance" + depends="$_mytopdeps" + _install_component Mytop +} + +dev() { + replaces="libmysqlclient mysql-dev" + provides="mysql-dev=$pkgver-r$pkgrel" + depends="$pkgname-libs" + _install_component Development + + # move symlinks for static libs from libs subpackage to dev + LIB_PATH=${pkgdir}-libs/usr/lib + mv $LIB_PATH/libmysqlclient.a ${subpkgdir}/usr/lib/ + mv $LIB_PATH/libmysqlclient_r.a ${subpkgdir}/usr/lib/ +} + +doc() { + for part in ManPagesClient ManPagesServer ManPagesDevelopment; do + _install_component ${part} + done + default_doc +} + +sha512sums="b04c47f72de2473d7b5edd04b4785a1d7179bb1f429f30ba53ae6cfbbb413200d9803eff1072949b2e81fd7d2164ea34c68620d621d4181b913daa2293ae140c mariadb-10.4.6.tar.gz +1a2b058aad5fd6d6964db58b663591299a5bf82e7ad21a105d53a3e7ad1c3674c737caf3ee12799cce947cf8ead1f3e789dd8afcfc769891f08208b3006f9654 mariadb.initd +d47324b34a87410eddb554f65199d145dfba9ae40407a62fb77df4e1ebf13087d15eb28e61e5e7cc9139eb42f093a0955136edae4020822652a1f0b4e219849e mariadb-server.limits" -- cgit v1.2.3-60-g2f50