# Contributor: A. Wilcox <awilfox@adelielinux.org> # Contributor: Dan Theisen <djt@hxx.in> # Maintainer: Dan Theisen <djt@hxx.in> pkgname=mariadb pkgver=10.4.12 pkgrel=0 pkgdesc="Open source database server" url="https://mariadb.org/" arch="all" options="suid" # required for pam_auth plugin, which is needed for # mysql_install_db to work options="$options !dbg" # abuild can't handle splitting -dbg with the way # this build's package() function works. 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 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 crc32-power.patch gcc_builtins_ppc.h ppchax.patch mariadb.initd mariadb-server.limits " # secfixes: # 10.4.12-r0: # - CVE-2020-7221 build() { if [ "$CBUILD" != "$CHOST" ]; then CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux" fi case "$CTARGET_ARCH" in ppc) cp "$srcdir"/gcc_builtins_ppc.h "$builddir"/include/atomic/gcc_builtins.h ;; esac 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 " # non-portable things, things that don't work on musl, BE, 32-bit etc local _evil="\ -DPLUGIN_MROONGA=NO \ -DPLUGIN_ROCKSDB=NO \ -DPLUGIN_TOKUDB=NO " 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}\ ${_evil}\ ${_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="518dae18c04a1f7fcc6fd4d2dfbfbfbdf5e83e72ca41e66e1074328df8d92ab41b458e6a9973771419ac09a7348f264f158916cd198c335085d6e823e707bbc6 mariadb-10.4.12.tar.gz 03a4f60674cb45bcccb59971260c56f0f5f64eb79ad4078c485bc8112df2b9ee2b4eb08350530443b318440787b672b2947bc439783e813a32350f9179417cd0 crc32-power.patch 15ae6d4564c5c8b8583502acd54bf0019e8a62ebcf87278015506e58848cb6996ff61ca055897f9192b8818808adeeac15b8f786065cfd071cc264ca1922f7e3 gcc_builtins_ppc.h 0cb265173923cb85517a1144cfa904dafe059c1f859e13b4415442cabbb414db5904f2dcee0e865914b0f9c181d1d61d220834cb187b14f8538a0d2552025a9d ppchax.patch 1a2b058aad5fd6d6964db58b663591299a5bf82e7ad21a105d53a3e7ad1c3674c737caf3ee12799cce947cf8ead1f3e789dd8afcfc769891f08208b3006f9654 mariadb.initd d47324b34a87410eddb554f65199d145dfba9ae40407a62fb77df4e1ebf13087d15eb28e61e5e7cc9139eb42f093a0955136edae4020822652a1f0b4e219849e mariadb-server.limits"