summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--experimental/mariadb/APKBUILD110
-rw-r--r--experimental/mariadb/mariadb.initd40
-rw-r--r--experimental/mariadb/mariadb.pre-install4
-rw-r--r--user/mariadb/APKBUILD249
-rw-r--r--user/mariadb/mariadb-server.limits3
-rw-r--r--user/mariadb/mariadb-server.pre-install7
-rw-r--r--user/mariadb/mariadb.initd47
7 files changed, 306 insertions, 154 deletions
diff --git a/experimental/mariadb/APKBUILD b/experimental/mariadb/APKBUILD
deleted file mode 100644
index a99de6b25..000000000
--- a/experimental/mariadb/APKBUILD
+++ /dev/null
@@ -1,110 +0,0 @@
-# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=mariadb
-pkgver=10.3.12
-pkgrel=0
-pkgdesc="Open source database server"
-url="https://mariadb.org/"
-arch="all"
-options="!checkroot" # Tests must be run as normal user.
-license="GPL-2.0-only"
-pkgusers="mysql"
-pkggroups="mysql"
-depends="$pkgname-common"
-depends_dev="openssl-dev zlib-dev"
-makedepends="$depends_dev byacc cmake curl-dev libarchive-dev libedit-dev
- libevent-dev libxml2-dev ncurses-dev pcre-dev xz-dev"
-install="$pkgname.pre-install"
-subpackages="$pkgname-doc $pkgname-openrc"
-source="https://downloads.mariadb.org/interstitial/mariadb-$pkgver/source/mariadb-$pkgver.tar.gz
- mariadb.initd
- "
-
-build() {
- cd "$builddir"
- if [ "$CBUILD" != "$CHOST" ]; then
- CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
- fi
- cmake \
- -DCMAKE_INSTALL_PREFIX=/usr \
- -DCMAKE_BUILD_TYPE=Release \
- -DCMAKE_CXX_FLAGS="$CXXFLAGS -DNDEBUG" \
- -DCMAKE_C_FLAGS="$CFLAGS -DNDEBUG" \
- -DMYSQL_DATADIR="/var/lib/mysql" \
- -DSYSCONFDIR="/etc/mysql" \
- -DINSTALL_BINDIR=bin \
- -DINSTALL_DOCDIR=share/doc/$pkgname-$pkgver \
- -DINSTALL_DOCREADMEDIR=share/doc/$pkgname-$pkgver \
- -DINSTALL_INCLUDEDIR=include/mysql \
- -DINSTALL_LIBDIR=lib \
- -DINSTALL_MANDIR=share/man \
- -DINSTALL_MYSQLSHAREDIR=share/mariadb \
- -DINSTALL_PLUGINDIR=lib/mariadb/plugin \
- -DINSTALL_SCRIPTDIR=share/mariadb/scripts \
- -DINSTALL_MYSQLDATADIR="/var/lib/mysql" \
- -DINSTALL_SBINDIR=sbin \
- -DINSTALL_SUPPORTFILESDIR="/usr/share/mariadb" \
- -DWITH_COMMENT="${DISTRO_NAME:-Adélie Linux}" \
- -DWITH_UNIT_TESTS=ON \
- -DWITH_LIBEDIT=1 \
- -DWITH_ZLIB=system \
- -DWITHOUT_LIBWRAP=1 \
- -DENABLED_LOCAL_INFILE=1 \
- -DMYSQL_UNIX_ADDR="/var/run/mysqld/mysqld.sock" \
- -DINSTALL_UNIX_ADDRDIR="/var/run/mysqld/mysqld.sock" \
- -DWITH_DEFAULT_COMPILER_OPTIONS=0 \
- -DWITH_DEFAULT_FEATURE_SET=0 \
- -DPKG_CONFIG_EXECUTABLE="/usr/bin/pkgconf" \
- -DPLUGIN_AUTH_GSSAPI=NO \
- -DAUTH_GSSAPI_PLUGIN_TYPE=OFF \
- -DCONC_WITH_EXTERNAL_ZLIB=YES \
- -DWITH_EXTERNAL_ZLIB=YES \
- -DSUFFIX_INSTALL_DIR="" \
- -DWITH_UNITTEST=OFF \
- -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 \
- -DWITH_ASAN=OFF \
- -DWITH_EMBEDDED_SERVER=ON \
- -DWITH_INNODB_BZIP2=OFF \
- -DWITH_INNODB_LZ4=OFF \
- -DWITH_INNODB_LZMA=ON \
- -DWITH_INNODB_LZO=OFF \
- -DWITH_INNODB_SNAPPY=OFF \
- -DWITH_JEMALLOC=NO \
- -DWITH_LIBARCHIVE=system \
- -DWITH_LIBNUMA=NO \
- -DWITH_LIBWRAP=OFF \
- -DWITH_LIBWSEP=OFF \
- -DWITH_MARIABACKUP=ON \
- -DWITH_PCRE=system \
- -DWITH_SYSTEMD=no \
- -DWITH_SSL=system \
- -DWITH_VALGRIND=OFF \
- -DWITH_ZLIB=system \
- -DSKIP_TESTS=ON
- ${CMAKE_CROSSOPTS}
- make
-}
-
-check() {
- cd "$builddir"
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
- install -m644 -D "$srcdir"/mariadb.initd "$pkgdir"/etc/init.d/mariadb
- rm -r "$pkgdir"/usr/mysql-test
-}
-
-sha512sums="9dd2939684c4591db306be6afb34663626dfaae133f88dd31125c759dce16b9e9d767a9254e30d9ee5fa2ea027e223dd4799effba8a8b0e4638d5de9e2512003 mariadb-10.3.12.tar.gz
-06751768cb00d2e433655635c38d267ef25084a5830ff40e719ac579223c7192dc34b43f919ab6faf480094632327511cbd22456064dde2d04dc15648b9e3b9f mariadb.initd"
diff --git a/experimental/mariadb/mariadb.initd b/experimental/mariadb/mariadb.initd
deleted file mode 100644
index 143ca8ff5..000000000
--- a/experimental/mariadb/mariadb.initd
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/sbin/openrc-run
-
-getconf() {
- v=$(my_print_defaults --mysqld | grep ^--$1)
- [ -z $v ] && echo $2 || echo ${v#*=}
-}
-
-retry="60"
-extra_stopped_commands="setup"
-command="/usr/bin/mysqld_safe"
-command_args="--syslog --nowatch"
-depend() {
- use net
- need localmount
-}
-
-setup() {
- ebegin "Creating a new MySQL database"
- mysql_install_db --user=mysql --rpm
- eend $?
-}
-
-start_pre() {
- pidfile=$(getconf pid-file "/run/mysqld/mysqld.pid")
- command_args="$command_args --pid-file=$pidfile"
- required_dirs=$(getconf datadir "/var/lib/mysql")
- if [ ! -d $required_dirs/mysql ]; then
- eerror "Datadir '$required_dirs' is empty or invalid."
- eerror "Run '/etc/init.d/mariadb setup' to create new database."
- fi
-}
-
-start_post() {
- ewaitfile 10 $(getconf socket "/run/mysqld/mysqld.sock")
-}
-
-stop_pre() {
- pidfile=$(getconf pid-file "/run/mysqld/mysqld.pid")
-}
-
diff --git a/experimental/mariadb/mariadb.pre-install b/experimental/mariadb/mariadb.pre-install
deleted file mode 100644
index ec71275ca..000000000
--- a/experimental/mariadb/mariadb.pre-install
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-groupadd -g 60 -r mysql
-useradd -u 60 -c "MariaDB Database User" -d /var/lib/mysql -M -N -G mysql -r -s /sbin/nologin mysql
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 <awilfox@adelielinux.org>
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Dan Theisen <djt@hxx.in>
+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"
diff --git a/user/mariadb/mariadb-server.limits b/user/mariadb/mariadb-server.limits
new file mode 100644
index 000000000..520783992
--- /dev/null
+++ b/user/mariadb/mariadb-server.limits
@@ -0,0 +1,3 @@
+#<domain> <type> <item> <value>
+@mysql soft nofile 65535
+@mysql hard nofile 65535
diff --git a/user/mariadb/mariadb-server.pre-install b/user/mariadb/mariadb-server.pre-install
new file mode 100644
index 000000000..de2bcd795
--- /dev/null
+++ b/user/mariadb/mariadb-server.pre-install
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+groupadd -g 60 -r mysql
+useradd -M -N -r -u 60 -g 60 -c "MariaDB Database User" -d /var/lib/mysql -s /sbin/nologin mysql
+
+mkdir /var/lib/mysql
+chown mysql:mysql /var/lib/mysql
diff --git a/user/mariadb/mariadb.initd b/user/mariadb/mariadb.initd
new file mode 100644
index 000000000..4e1cf8d3e
--- /dev/null
+++ b/user/mariadb/mariadb.initd
@@ -0,0 +1,47 @@
+#!/sbin/openrc-run
+
+getconf() {
+ v=$(my_print_defaults --mysqld | grep ^--$1)
+ [ -z $v ] && echo $2 || echo ${v#*=}
+}
+
+retry="60"
+extra_stopped_commands="setup"
+
+user=${MYSQLD_USER:-mysql}
+group=${MYSQLD_GROUP:-mysql}
+default_datadir=$(getconf datadir "/var/lib/mariadb")
+datadir=${MYSQLD_DATADIR:-$default_datadir}
+
+command="/usr/bin/mysqld_safe"
+command_args="--syslog --nowatch --user=$user"
+
+depend() {
+ use net
+ need localmount
+}
+
+setup() {
+ checkpath -d -m 1775 -o $user:$group /run/mariadb
+ ebegin "Creating a new MySQL database in $datadir"
+ mysql_install_db --user=$user --datadir=$datadir
+ eend $?
+}
+
+start_pre() {
+ pidfile=$(getconf pid-file "/run/mariadb/mysqld.pid")
+ command_args="$command_args --pid-file=$pidfile"
+ if [ ! -d $datadir/mysql ]; then
+ eerror "Data directory '$datadir' is empty or invalid."
+ eerror "Run '/etc/init.d/mariadb setup' to create new database."
+ fi
+}
+
+start_post() {
+ ewaitfile 10 $(getconf socket "/run/mariadb/mysqld.sock")
+}
+
+stop_pre() {
+ pidfile=$(getconf pid-file "/run/mariadb/mysqld.pid")
+}
+