summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorMuflone2015-06-13 17:59:22 +0200
committerMuflone2015-06-13 17:59:22 +0200
commit8b388f6b9381038fce39a83eb542589b42ae4acd (patch)
tree6ab5e1a7644dc2fccc5fe4e7b4f98f52835cc4a1
downloadaur-8b388f6b9381038fce39a83eb542589b42ae4acd.tar.gz
Initial import
-rw-r--r--.SRCINFO49
-rw-r--r--PKGBUILD171
-rw-r--r--mysql-srv_buf_size.patch20
-rw-r--r--mysql.install37
-rwxr-xr-xmysqld-post.sh8
-rw-r--r--mysqld-tmpfile.conf1
-rw-r--r--mysqld.service16
7 files changed, 302 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 00000000000..05a5da3fe1f
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,49 @@
+pkgbase = mysql
+ pkgdesc = Fast SQL database server, community edition
+ pkgver = 5.6.24
+ pkgrel = 1
+ url = https://www.mysql.com/products/community/
+ arch = i686
+ arch = x86_64
+ license = GPL
+ makedepends = openssl
+ makedepends = zlib
+ makedepends = cmake
+ makedepends = systemd-tools
+ makedepends = libaio
+ makedepends = jemalloc
+ options = !libtool
+ source = https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.24.tar.gz
+ source = mysqld-post.sh
+ source = mysqld-tmpfile.conf
+ source = mysqld.service
+ source = mysql-srv_buf_size.patch
+ sha256sums = 37e27305b67d76883c5902dce59c89d596beee9dca7dbadd4a2e117f8101dfeb
+ sha256sums = 368f9fd2454d80eb32abb8f29f703d1cf9553353fb9e1ae4529c4b851cb8c5dd
+ sha256sums = 2af318c52ae0fe5428e8a9245d1b0fc3bc5ce153842d1563329ceb1edfa83ddd
+ sha256sums = 50212165bdb09855b97b15a917464ba34f82edf30a0c43f9a0c93a27071df556
+ sha256sums = bfa3ba5546d470e1c1d32246f687f0faa8c225913a648262fbcae6b2296cb57f
+
+pkgname = mysql
+ pkgdesc = Fast SQL database server, community edition
+ install = mysql.install
+ depends = mysql-clients
+ depends = libaio
+ provides = mariadb=5.6.24
+ conflicts = mariadb
+ options = emptydirs
+ backup = etc/mysql/my.cnf
+
+pkgname = libmysqlclient
+ pkgdesc = MySQL client libraries
+ depends = openssl
+ provides = libmariadbclient=5.6.24
+ conflicts = libmariadbclient
+
+pkgname = mysql-clients
+ pkgdesc = MySQL client tools
+ depends = libmysqlclient
+ depends = jemalloc
+ provides = mariadb-clients=5.6.24
+ conflicts = mariadb-clients
+
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 00000000000..86c496366b0
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,171 @@
+# Maintainer: Muflone http://www.muflone.com/contacts/english/
+# Contributor: Rustam Tsurik <rustam.tsurik@gmail.com>
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
+
+pkgname=('mysql' 'libmysqlclient' 'mysql-clients')
+pkgbase=mysql
+pkgver=5.6.24
+pkgrel=1
+pkgdesc="Fast SQL database server, community edition"
+arch=('i686' 'x86_64')
+makedepends=('openssl' 'zlib' 'cmake' 'systemd-tools' 'libaio' 'jemalloc')
+license=('GPL')
+url="https://www.mysql.com/products/community/"
+options=('!libtool')
+source=("https://dev.mysql.com/get/Downloads/MySQL-5.6/${pkgbase}-${pkgver}.tar.gz"
+ "mysqld-post.sh"
+ "mysqld-tmpfile.conf"
+ "mysqld.service"
+ "mysql-srv_buf_size.patch")
+sha256sums=('37e27305b67d76883c5902dce59c89d596beee9dca7dbadd4a2e117f8101dfeb'
+ '368f9fd2454d80eb32abb8f29f703d1cf9553353fb9e1ae4529c4b851cb8c5dd'
+ '2af318c52ae0fe5428e8a9245d1b0fc3bc5ce153842d1563329ceb1edfa83ddd'
+ '50212165bdb09855b97b15a917464ba34f82edf30a0c43f9a0c93a27071df556'
+ 'bfa3ba5546d470e1c1d32246f687f0faa8c225913a648262fbcae6b2296cb57f')
+
+prepare() {
+ cd "${pkgbase}-${pkgver}"
+ patch -p0 -i "../mysql-srv_buf_size.patch"
+}
+
+build() {
+ rm -rf build
+ mkdir build
+ cd build
+
+ cmake "../${pkgbase}-${pkgver}" \
+ -DCMAKE_AR=/usr/bin/gcc-ar \
+ -DCMAKE_RANLIB=/usr/bin/gcc-ranlib \
+ -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_ZLIB=system \
+ -DWITH_SSL=system \
+ -DWITH_LIBWRAP=OFF \
+ -DCMAKE_EXE_LINKER_FLAGS='-ljemalloc' \
+ -DWITH_EXTRA_CHARSETS=complex \
+ -DWITH_EMBEDDED_SERVER=ON \
+ -DWITH_ARCHIVE_STORAGE_ENGINE=ON \
+ -DWITH_BLACKHOLE_STORAGE_ENGINE=ON \
+ -DWITH_INNOBASE_STORAGE_ENGINE=ON \
+ -DWITH_PARTITION_STORAGE_ENGINE=ON \
+ -DWITHOUT_EXAMPLE_STORAGE_ENGINE=ON \
+ -DWITHOUT_FEDERATED_STORAGE_ENGINE=ON \
+ -DCMAKE_C_FLAGS="-fPIC ${CFLAGS} -fno-strict-aliasing -DBIG_JOINS=1 -fomit-frame-pointer -fno-delete-null-pointer-checks" \
+ -DCMAKE_CXX_FLAGS="-fPIC ${CXXFLAGS} -fno-strict-aliasing -DBIG_JOINS=1 -felide-constructors -fno-rtti -fno-delete-null-pointer-checks" \
+ -DWITH_MYSQLD_LDFLAGS="-pie ${LDFLAGS},-z,now"
+ make
+}
+
+package_libmysqlclient(){
+ pkgdesc="MySQL client libraries"
+ depends=('openssl')
+ conflicts=('libmariadbclient')
+ provides=("libmariadbclient=${pkgver}")
+
+ cd build
+ for dir in include libmysql libmysqld libservices
+ do
+ make -C "${dir}" DESTDIR="${pkgdir}" install
+ done
+
+ install -m 755 -d "${pkgdir}/usr/bin"
+ install -m 755 scripts/mysql_config "${pkgdir}/usr/bin/"
+ install -m 755 -d "${pkgdir}/usr/share/man/man1"
+ for man in mysql_config mysql_client_test_embedded mysqltest_embedded
+ do
+ install -m 644 "${srcdir}/${pkgbase}-${pkgver}/man/${man}.1" "${pkgdir}/usr/share/man/man1/${man}.1"
+ done
+}
+
+package_mysql-clients(){
+ pkgdesc="MySQL client tools"
+ depends=('libmysqlclient' 'jemalloc')
+ conflicts=('mariadb-clients')
+ provides=("mariadb-clients=${pkgver}")
+
+ cd build
+ make -C "client" DESTDIR="${pkgdir}" install
+
+ # install man pages
+ install -d "${pkgdir}/usr/share/man/man1"
+ for man in mysql mysqladmin mysqlcheck mysqldump mysqlimport mysqlshow mysqlslap
+ do
+ install -m644 "${srcdir}/${pkgbase}-${pkgver}/man/${man}.1" "${pkgdir}/usr/share/man/man1/${man}.1"
+ done
+
+ # provided by mysql
+ rm "${pkgdir}/usr/bin/mysql_plugin"
+ rm "${pkgdir}/usr/bin/mysql_upgrade"
+ rm "${pkgdir}/usr/bin/mysql_config_editor"
+ rm "${pkgdir}/usr/bin/mysqlbinlog"
+ rm "${pkgdir}/usr/bin/mysqltest"
+}
+
+package_mysql(){
+ pkgdesc="Fast SQL database server, community edition"
+ backup=('etc/mysql/my.cnf')
+ install="${pkgbase}.install"
+ depends=('mysql-clients' 'libaio')
+ conflicts=('mariadb')
+ provides=("mariadb=${pkgver}")
+ options=('emptydirs')
+
+ cd build
+ make DESTDIR="${pkgdir}" install
+
+ install -m 644 -D "${pkgdir}/usr/share/mysql/my-default.cnf" "${pkgdir}/etc/mysql/my.cnf"
+ install -m 755 -D "${srcdir}/mysqld-post.sh" "${pkgdir}/usr/bin/mysqld-post"
+ install -m 644 -D "${srcdir}/mysqld-tmpfile.conf" "${pkgdir}/usr/lib/tmpfiles.d/mysqld.conf"
+ install -m 755 -d "${pkgdir}/usr/lib/systemd/system"
+ install -m 644 -D "${srcdir}/mysqld.service" "${pkgdir}/usr/lib/systemd/system/"
+
+ # provided by libmysqlclient
+ rm "${pkgdir}/usr/bin/mysql_config"
+ rm "${pkgdir}/usr/bin/mysql_client_test_embedded"
+ rm "${pkgdir}/usr/bin/mysqltest_embedded"
+ rm "${pkgdir}"/usr/lib/libmysql*
+ rm -r "${pkgdir}/usr/include/"
+ rm "${pkgdir}/usr/share/man/man1/mysql_config.1"
+ rm "${pkgdir}/usr/share/man/man1/mysql_client_test_embedded.1"
+ rm "${pkgdir}/usr/share/man/man1/mysqltest_embedded.1"
+
+ # provided by mysql-clients
+ rm "${pkgdir}/usr/bin/mysql"
+ rm "${pkgdir}/usr/bin/mysqladmin"
+ rm "${pkgdir}/usr/bin/mysqlcheck"
+ rm "${pkgdir}/usr/bin/mysqldump"
+ rm "${pkgdir}/usr/bin/mysqlimport"
+ rm "${pkgdir}/usr/bin/mysqlshow"
+ rm "${pkgdir}/usr/bin/mysqlslap"
+ rm "${pkgdir}/usr/share/man/man1/mysql.1"
+ rm "${pkgdir}/usr/share/man/man1/mysqladmin.1"
+ rm "${pkgdir}/usr/share/man/man1/mysqlcheck.1"
+ rm "${pkgdir}/usr/share/man/man1/mysqldump.1"
+ rm "${pkgdir}/usr/share/man/man1/mysqlimport.1"
+ rm "${pkgdir}/usr/share/man/man1/mysqlshow.1"
+ rm "${pkgdir}/usr/share/man/man1/mysqlslap.1"
+
+ # not needed
+ rm -r "${pkgdir}/usr/data"
+ rm -r "${pkgdir}/usr/mysql-test"
+ rm -r "${pkgdir}/usr/sql-bench"
+ rm "${pkgdir}/usr/share/man/man1/mysql-test-run.pl.1"
+}
+
diff --git a/mysql-srv_buf_size.patch b/mysql-srv_buf_size.patch
new file mode 100644
index 00000000000..12212fcc345
--- /dev/null
+++ b/mysql-srv_buf_size.patch
@@ -0,0 +1,20 @@
+--- storage/innobase/row/row0log.cc.orig 2013-07-10 16:17:27.000000000 +0000
++++ storage/innobase/row/row0log.cc 2013-08-21 12:48:22.216656556 +0000
+@@ -2364,7 +2364,7 @@ all_done:
+ and be ignored when the operation is unsupported. */
+ fallocate(index->online_log->fd,
+ FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE,
+- ofs, srv_buf_size);
++ ofs, srv_sort_buf_size);
+ #endif /* FALLOC_FL_PUNCH_HOLE */
+
+ next_mrec = index->online_log->head.block;
+@@ -3153,7 +3153,7 @@ all_done:
+ and be ignored when the operation is unsupported. */
+ fallocate(index->online_log->fd,
+ FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE,
+- ofs, srv_buf_size);
++ ofs, srv_sort_buf_size);
+ #endif /* FALLOC_FL_PUNCH_HOLE */
+
+ next_mrec = index->online_log->head.block;
diff --git a/mysql.install b/mysql.install
new file mode 100644
index 00000000000..f420406cc0f
--- /dev/null
+++ b/mysql.install
@@ -0,0 +1,37 @@
+if [[ $(command -v my_print_defaults >/dev/null 2>&1) ]]; then
+ datadir=$(my_print_defaults mysqld | sed -n "s/^--datadir=//p")
+fi
+[[ -z $datadir ]] && datadir=/var/lib/mysql
+
+post_install(){
+ groupadd -g 89 mysql &>/dev/null
+ useradd -u 89 -g mysql -d $datadir -s /bin/false mysql &>/dev/null
+
+ if [[ ! -e $datadir ]]; then
+ install -dm700 $datadir
+ usr/bin/mysql_install_db --user=mysql --basedir=/usr --datadir=$datadir
+ chown -R mysql:mysql var/lib/mysql &>/dev/null
+ fi
+
+ usr/bin/systemd-tmpfiles --create mysqld.conf
+}
+
+post_upgrade(){
+ getent group mysql >/dev/null 2>&1 || groupadd -g 89 mysql &>/dev/null
+ getent passwd mysql >/dev/null 2>&1 || useradd -u 89 -g mysql -d $datadir -s /bin/false mysql &>/dev/null
+
+ if [ "$(vercmp $2 5.6)" -lt 0 ]; then
+ echo " >> "
+ echo " >> Major version update. Consider restart the service, and then running mysql_upgrade after it."
+ echo " >> "
+ fi
+}
+
+post_remove(){
+ if getent passwd mysql >/dev/null 2>&1; then
+ userdel mysql
+ fi
+ if getent group mysql >/dev/null 2>&1; then
+ groupdel mysql
+ fi
+}
diff --git a/mysqld-post.sh b/mysqld-post.sh
new file mode 100755
index 00000000000..c4ac181710d
--- /dev/null
+++ b/mysqld-post.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+while true; do
+ response=$(/usr/bin/mysqladmin -uUNKNOWN_USER ping 2>&1) && break
+ echo "$response" | grep -q "mysqld is alive" && break
+ echo "$response" | grep -q "Access denied for user" && break
+ sleep 1
+done
diff --git a/mysqld-tmpfile.conf b/mysqld-tmpfile.conf
new file mode 100644
index 00000000000..6883dc79888
--- /dev/null
+++ b/mysqld-tmpfile.conf
@@ -0,0 +1 @@
+d /run/mysqld 0755 mysql mysql -
diff --git a/mysqld.service b/mysqld.service
new file mode 100644
index 00000000000..a6fc8cf889a
--- /dev/null
+++ b/mysqld.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=MySQL database server
+After=syslog.target
+
+[Service]
+User=mysql
+Group=mysql
+
+ExecStart=/usr/bin/mysqld --pid-file=/run/mysqld/mysqld.pid
+ExecStartPost=/usr/bin/mysqld-post
+
+Restart=always
+PrivateTmp=true
+
+[Install]
+WantedBy=multi-user.target