summaryrefslogtreecommitdiff
path: root/extra/mysql
diff options
context:
space:
mode:
Diffstat (limited to 'extra/mysql')
-rw-r--r--extra/mysql/PKGBUILD35
-rw-r--r--extra/mysql/mysql.install2
-rwxr-xr-xextra/mysql/mysqld-post.sh7
-rw-r--r--extra/mysql/mysqld-tmpfile.conf1
-rwxr-xr-xextra/mysql/mysqld.rc77
-rw-r--r--extra/mysql/mysqld.service11
6 files changed, 117 insertions, 16 deletions
diff --git a/extra/mysql/PKGBUILD b/extra/mysql/PKGBUILD
index c7be9147d..973985940 100644
--- a/extra/mysql/PKGBUILD
+++ b/extra/mysql/PKGBUILD
@@ -1,26 +1,26 @@
-# $Id: PKGBUILD 164697 2012-08-03 07:57:29Z andrea $
-# Maintainer:
-# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# $Id: PKGBUILD 165439 2012-08-19 15:29:10Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
pkgbase=mysql
pkgname=('libmysqlclient' 'mysql-clients' 'mysql')
pkgver=5.5.27
-pkgrel=1
+pkgrel=3
arch=('i686' 'x86_64')
license=('GPL')
url="https://www.mysql.com/products/community/"
makedepends=('cmake' 'openssl' 'zlib')
options=('!libtool')
source=("http://ftp.gwdg.de/pub/misc/mysql/Downloads/MySQL-5.5/${pkgbase}-${pkgver}.tar.gz"
- 'mysqld'
- 'my.cnf')
+ 'mysqld.rc' 'my.cnf' 'mysqld-post.sh' 'mysqld-tmpfile.conf' 'mysqld.service')
md5sums=('82baf46acfced6eef072e9d8a479c86e'
- '2234207625baa29b2ff7d7b4f088abce'
- '1c949c0dbea5206af0db14942d9927b6')
+ 'e7eb2faeab755cbb2fe03542bf328da9'
+ '1c949c0dbea5206af0db14942d9927b6'
+ '6ea6ceb360d09a774e87335ee098ddd5'
+ '2fa6e456964d4ff5e6d4f9ff0126aed6'
+ 'a0e1460c276a50a9666c331de83271f2')
build() {
- cd "${srcdir}"
mkdir build
cd build
@@ -31,7 +31,7 @@ build() {
-DCMAKE_INSTALL_PREFIX=/usr \
-DSYSCONFDIR=/etc/mysql \
-DMYSQL_DATADIR=/var/lib/mysql \
- -DMYSQL_UNIX_ADDR=/var/run/mysqld/mysqld.sock \
+ -DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=ON \
@@ -68,7 +68,7 @@ package_libmysqlclient(){
pkgdesc="MySQL client libraries"
depends=('openssl')
- cd "${srcdir}"/build
+ cd build
for dir in include libmysql libmysqld libservices; do
make -C ${dir} DESTDIR="${pkgdir}" install
done
@@ -85,7 +85,7 @@ package_mysql-clients(){
pkgdesc="MySQL client tools"
depends=('libmysqlclient')
- cd "${srcdir}"/build
+ cd build
make -C client DESTDIR="${pkgdir}" install
# install man pages
@@ -102,15 +102,18 @@ package_mysql(){
pkgdesc="A fast SQL database server"
backup=('etc/mysql/my.cnf')
install=mysql.install
- depends=('mysql-clients')
- optdepends=('perl-dbi' 'perl-dbd-mysql')
+ depends=('mysql-clients' 'systemd-tools')
options=('emptydirs')
- cd "${srcdir}"/build
+ cd build
make DESTDIR="${pkgdir}" install
install -Dm644 "${srcdir}"/my.cnf "${pkgdir}"/etc/mysql/my.cnf
- install -Dm755 "${srcdir}"/mysqld "${pkgdir}"/etc/rc.d/mysqld
+ install -Dm755 "${srcdir}"/mysqld.rc "${pkgdir}"/etc/rc.d/mysqld
+ install -Dm755 "${srcdir}"/mysqld-post.sh "${pkgdir}"/usr/bin/mysqld-post
+ install -Dm644 "${srcdir}"/mysqld-tmpfile.conf "${pkgdir}"/usr/lib/tmpfiles.d/mysqld.conf
+ install -d "${pkgdir}"/usr/lib/systemd/system
+ install -Dm644 "${srcdir}"/mysqld.service "${pkgdir}"/usr/lib/systemd/system/
# provided by libmysqlclient
rm "${pkgdir}"/usr/bin/{mysql_config,mysql_client_test_embedded,mysqltest_embedded}
diff --git a/extra/mysql/mysql.install b/extra/mysql/mysql.install
index 9a4479215..a98f1a877 100644
--- a/extra/mysql/mysql.install
+++ b/extra/mysql/mysql.install
@@ -3,6 +3,8 @@ post_install(){
useradd -u 89 -g mysql -d /var/lib/mysql -s /bin/false mysql &>/dev/null
usr/bin/mysql_install_db --user=mysql --basedir=/usr
chown -R mysql:mysql var/lib/mysql &>/dev/null
+
+ usr/bin/systemd-tmpfiles --create mysqld.conf
}
post_upgrade(){
diff --git a/extra/mysql/mysqld-post.sh b/extra/mysql/mysqld-post.sh
new file mode 100755
index 000000000..8dc9c4eea
--- /dev/null
+++ b/extra/mysql/mysqld-post.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+while true; do
+ response=`/usr/bin/mysqladmin -uUNKNOWN_USER ping 2>&1` && break
+ echo "$response" | grep -q "mysqld is alive" && break
+ sleep 1
+done
diff --git a/extra/mysql/mysqld-tmpfile.conf b/extra/mysql/mysqld-tmpfile.conf
new file mode 100644
index 000000000..6883dc798
--- /dev/null
+++ b/extra/mysql/mysqld-tmpfile.conf
@@ -0,0 +1 @@
+d /run/mysqld 0755 mysql mysql -
diff --git a/extra/mysql/mysqld.rc b/extra/mysql/mysqld.rc
new file mode 100755
index 000000000..4bbddb5a4
--- /dev/null
+++ b/extra/mysql/mysqld.rc
@@ -0,0 +1,77 @@
+#!/bin/bash
+
+# general config
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+getPID() {
+ echo $(pgrep -u mysql mysqld 2>/dev/null);
+}
+
+case "$1" in
+ start)
+ stat_busy "Starting MySQL Server"
+ [ ! -d /run/mysqld ] && install -d -g mysql -o mysql /run/mysqld &>/dev/null
+ if [ -z "$(getPID)" ]; then
+ /usr/bin/mysqld_safe --user=mysql &>/dev/null &
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ timeo=30
+ while [ $timeo -gt 0 ]; do
+ response=`/usr/bin/mysqladmin -uUNKNOWN_USER ping 2>&1` && break
+ echo "$response" | grep -q "mysqld is alive" && break
+ sleep 1
+ let timeo=${timeo}-1
+ done
+ if [ $timeo -eq 0 ]; then
+ stat_fail
+ exit 1
+ else
+ echo $(getPID) > /run/mysqld/mysqld.pid
+ add_daemon mysqld
+ stat_done
+ fi
+ fi
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+
+ stop)
+ stat_busy "Stopping MySQL Server"
+ if [ ! -z "$(getPID)" ]; then
+ timeo=30
+ kill $(getPID) &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ fi
+ while [ ! -z "$(getPID)" -a $timeo -gt 0 ]; do
+ sleep 1
+ let timeo=${timeo}-1
+ done
+ if [ -z "$(getPID)" ]; then
+ rm -f /run/mysqld/mysqld.pid &>/dev/null
+ rm_daemon mysqld
+ stat_done
+ else
+ stat_fail
+ exit 1
+ fi
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+
+ restart)
+ $0 stop
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/mysql/mysqld.service b/extra/mysql/mysqld.service
new file mode 100644
index 000000000..0175c685b
--- /dev/null
+++ b/extra/mysql/mysqld.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=MySQL Server
+
+[Service]
+User=mysql
+ExecStart=/usr/bin/mysqld --user=mysql
+ExecStartPost=/usr/bin/mysqld-post
+Restart=always
+
+[Install]
+WantedBy=multi-user.target