From 88b26331f2219c06ed6624d4e3094cd9e8ad7757 Mon Sep 17 00:00:00 2001 From: James Meyer Date: Mon, 29 Oct 2012 14:05:46 -0500 Subject: mysq: update to 5.5 --- abs/core/mysql/PKGBUILD | 164 +++++++++++++++++++++--------------- abs/core/mysql/__changelog | 4 +- abs/core/mysql/my.cnf | 51 +++++------ abs/core/mysql/mysql.install | 10 ++- abs/core/mysql/mysqld | 77 ----------------- abs/core/mysql/mysqld-post.sh | 7 ++ abs/core/mysql/mysqld-tmpfile.conf | 1 + abs/core/mysql/mysqld.rc | 77 +++++++++++++++++ abs/core/mysql/mysqld.service | 11 +++ abs/core/mysql/skip-abi-check.patch | 13 --- 10 files changed, 221 insertions(+), 194 deletions(-) mode change 100644 => 100755 abs/core/mysql/PKGBUILD mode change 100644 => 100755 abs/core/mysql/my.cnf delete mode 100755 abs/core/mysql/mysqld create mode 100755 abs/core/mysql/mysqld-post.sh create mode 100644 abs/core/mysql/mysqld-tmpfile.conf create mode 100755 abs/core/mysql/mysqld.rc create mode 100644 abs/core/mysql/mysqld.service delete mode 100644 abs/core/mysql/skip-abi-check.patch diff --git a/abs/core/mysql/PKGBUILD b/abs/core/mysql/PKGBUILD old mode 100644 new mode 100755 index 3ce1aeb..5d9cbb7 --- a/abs/core/mysql/PKGBUILD +++ b/abs/core/mysql/PKGBUILD @@ -1,109 +1,133 @@ -# $Id: PKGBUILD 88432 2010-08-23 17:32:08Z pierre $ +# $Id: PKGBUILD 167246 2012-09-29 09:32:53Z andrea $ # Maintainer: Andrea Scarpino # Contributor: Douglas Soares de Andrade -# Contributor: judd pkgbase=mysql pkgname=('libmysqlclient' 'mysql-clients' 'mysql') -pkgver=5.1.59 +pkgver=5.5.28 pkgrel=1 arch=('i686' 'x86_64') license=('GPL') -url="http://www.mysql.com/" -makedepends=('tcp_wrappers' 'zlib' 'perl' 'openssl' 'libtool' 'patch') +url="https://www.mysql.com/products/community/" +makedepends=('cmake' 'openssl' 'zlib') options=('!libtool') -source=("http://ftp.gwdg.de/pub/misc/mysql/Downloads/MySQL-5.1/${pkgbase}-${pkgver}.tar.gz" - 'mysqld' - 'my.cnf' - 'skip-abi-check.patch') +source=("http://ftp.gwdg.de/pub/misc/mysql/Downloads/MySQL-5.5/${pkgbase}-${pkgver}.tar.gz" + 'mysqld.rc' 'my.cnf' 'mysqld-post.sh' 'mysqld-tmpfile.conf' 'mysqld.service') build() { - cd "${srcdir}/${pkgbase}-${pkgver}" - patch -Np0 -i "${srcdir}/skip-abi-check.patch" + mkdir build + cd build + # CFLAGS/CXXFLAGS as suggested upstream - CFLAGS="-fPIC ${CFLAGS} -fno-strict-aliasing -DBIG_JOINS=1 -fomit-frame-pointer" \ - CXXFLAGS="-fPIC ${CXXFLAGS} -fno-strict-aliasing -DBIG_JOINS=1 -felide-constructors -fno-rtti" \ - ./configure --prefix=/usr \ - --libexecdir=/usr/sbin \ - --localstatedir=/var \ - --sysconfdir=/etc/mysql \ - --without-docs \ - --without-readline \ - --with-ssl \ - --with-libwrap \ - --with-charset=utf8 \ - --with-collation=utf8_general_ci \ - --with-extra-charsets=complex \ - --with-embedded-server \ - --with-unix-socket-path=/var/run/mysqld/mysqld.sock \ - --enable-local-infile \ - --with-plugins=partition,ftexample,archive,blackhole,federated,heap,innobase,innodb_plugin,ndbcluster - make || return 1 + + cmake ../${pkgbase}-${pkgver} \ + -DCMAKE_BUILD_TYPE=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_READLINE=ON \ + -DWITH_ZLIB=system \ + -DWITH_SSL=system \ + -DWITH_LIBWRAP=OFF \ + -DWITH_MYSQLD_LDFLAGS="${LDFLAGS}" \ + -DWITH_EXTRA_CHARSETS=complex \ + -DWITH_EMBEDDED_SERVER=ON \ + -DWITH_INNOBASE_STORAGE_ENGINE=1 \ + -DWITH_PARTITION_STORAGE_ENGINE=1 \ + -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \ + -DWITHOUT_ARCHIVE_STORAGE_ENGINE=1 \ + -DWITHOUT_BLACKHOLE_STORAGE_ENGINE=1 \ + -DWITHOUT_FEDERATED_STORAGE_ENGINE=1 \ + -DCMAKE_C_FLAGS="-fPIC ${CFLAGS} -fno-strict-aliasing -DBIG_JOINS=1 -fomit-frame-pointer" \ + -DCMAKE_CXX_FLAGS="-fPIC ${CXXFLAGS} -fno-strict-aliasing -DBIG_JOINS=1 -felide-constructors -fno-rtti" + + make } package_libmysqlclient(){ pkgdesc="MySQL client libraries" - depends=('openssl' 'zlib' 'gcc-libs' 'tcp_wrappers') - - cd "${srcdir}/${pkgbase}-${pkgver}" - for dir in include libmysql libmysql_r libmysqld; do + depends=('openssl') + + cd build + for dir in include libmysql libmysqld libservices; do make -C ${dir} DESTDIR="${pkgdir}" install done - install -m644 include/*.h "${pkgdir}/usr/include/mysql/" - - install -d "${pkgdir}/usr/bin" - install -m755 scripts/mysql_config "${pkgdir}/usr/bin/" - - # create library symlinks in /usr/lib - ln -sf mysql/libmysqlclient.so.16 ${pkgdir}/usr/lib/libmysqlclient.so.16 - ln -sf libmysqlclient.so.16 ${pkgdir}/usr/lib/libmysqlclient.so - ln -sf libmysqlclient.so.16 ${pkgdir}/usr/lib/libmysqlclient.so.1 - ln -sf mysql/libmysqlclient_r.so.16 ${pkgdir}/usr/lib/libmysqlclient_r.so.16 - ln -sf libmysqlclient_r.so.16 ${pkgdir}/usr/lib/libmysqlclient_r.so - ln -sf libmysqlclient_r.so.16 ${pkgdir}/usr/lib/libmysqlclient_r.so.1 + + install -d "${pkgdir}"/usr/bin + install -m755 scripts/mysql_config "${pkgdir}"/usr/bin/ + install -d "${pkgdir}"/usr/share/man/man1 + for man in mysql_config mysql_client_test_embedded mysqltest_embedded; do + install -m644 "${srcdir}"/${pkgbase}-${pkgver}/man/$man.1 "${pkgdir}"/usr/share/man/man1/$man.1 + done } package_mysql-clients(){ pkgdesc="MySQL client tools" depends=('libmysqlclient') - - cd "${srcdir}/${pkgbase}-${pkgver}/client" - make DESTDIR="${pkgdir}" install - # provided by libmysqlclient - rm -rf "${pkgdir}/usr/lib/" + 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 -f "${pkgdir}"/usr/bin/{mysql_upgrade,mysqlbinlog,mysqltest} + rm "${pkgdir}"/usr/bin/{mysql_{plugin,upgrade},mysqlbinlog,mysqltest} } package_mysql(){ pkgdesc="A fast SQL database server" - backup=('etc/my.cnf' 'etc/mysql/my.cnf') + 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}/${pkgbase}-${pkgver}" - make DESTDIR=${pkgdir} install + 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 -Dm644 "${srcdir}"/my.cnf "${pkgdir}"/etc/mysql/my.cnf + 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 -f ${pkgdir}/usr/bin/{mysql_config,mysql_client_test_embedded,mysqltest_embedded} - rm -f ${pkgdir}/usr/lib/mysql/libmysqlclient* - rm -f ${pkgdir}/usr/lib/mysql/libmysqld.a - rm -f ${pkgdir}/usr/include/mysql/*.h - + rm "${pkgdir}"/usr/bin/{mysql_config,mysql_client_test_embedded,mysqltest_embedded} + rm "${pkgdir}"/usr/lib/libmysql* + rm -r "${pkgdir}"/usr/include/ + rm "${pkgdir}"/usr/share/man/man1/{mysql_config,mysql_client_test_embedded,mysqltest_embedded}.1 + # provided by mysql-clients - rm -f ${pkgdir}/usr/bin/{mysql,mysqladmin,mysqlcheck,mysqldump,mysqlimport,mysqlshow,mysqlslap} + rm "${pkgdir}"/usr/bin/{mysql,mysqladmin,mysqlcheck,mysqldump,mysqlimport,mysqlshow,mysqlslap} + rm "${pkgdir}"/usr/share/man/man1/{mysql,mysqladmin,mysqlcheck,mysqldump,mysqlimport,mysqlshow,mysqlslap}.1 # not needed - rm -rf ${pkgdir}/usr/{mysql-test,sql-bench} - rm -f ${pkgdir}/usr/lib/mysql/plugin/*.a + rm -r "${pkgdir}"/usr/{data,mysql-test,sql-bench} + rm "${pkgdir}"/usr/share/man/man1/mysql-test-run.pl.1 + + install -dm700 "${pkgdir}"/var/lib/mysql } -md5sums=('1e89816164692f44f768024db4bc05f6' - '2234207625baa29b2ff7d7b4f088abce' - 'd60099985e68e36b156423fca6b50924' - 'a97e574945e19de3908575b956241026') +md5sums=('da8ddb3d00e6e159153d2444360f52a8' + 'e7eb2faeab755cbb2fe03542bf328da9' + '698827c2380bd5f831f2b8160cee4cae' + '6ea6ceb360d09a774e87335ee098ddd5' + '2fa6e456964d4ff5e6d4f9ff0126aed6' + 'a0e1460c276a50a9666c331de83271f2') diff --git a/abs/core/mysql/__changelog b/abs/core/mysql/__changelog index 96a3b29..6aac3a6 100644 --- a/abs/core/mysql/__changelog +++ b/abs/core/mysql/__changelog @@ -1,3 +1 @@ -using default arch pkgbuild -my.cnf has data dir modified to use /data/srv -upgrade to 5.1.52 +data dir /data/srv/mysql \ No newline at end of file diff --git a/abs/core/mysql/my.cnf b/abs/core/mysql/my.cnf old mode 100644 new mode 100755 index 6f0a683..457a750 --- a/abs/core/mysql/my.cnf +++ b/abs/core/mysql/my.cnf @@ -1,13 +1,14 @@ -# Example MySQL config file for large systems. +# MySQL config file for medium systems. # -# This is for a large system with memory = 512M where the system runs mainly -# MySQL. +# This is for a system with little memory (32M - 64M) where MySQL plays +# an important part, or systems up to 128M where MySQL is used together with +# other programs (such as a web server) # -# You can copy this file to -# /etc/my.cnf to set global options, -# mysql-data-dir/my.cnf to set server-specific options (in this -# installation this directory is /var) or -# ~/.my.cnf to set user-specific options. +# MySQL programs look for option files in a set of +# locations which depend on the deployment platform. +# You can copy this option file to one of those +# locations. For information about these locations, see: +# http://dev.mysql.com/doc/mysql/en/option-files.html # # In this file, you can use all long options that a program supports. # If you want to know which options a program supports, run the program @@ -26,7 +27,9 @@ socket = /var/run/mysqld/mysqld.sock port = 3306 socket = /var/run/mysqld/mysqld.sock datadir = /data/srv/mysql -skip-locking +skip-external-locking + +net_buffer_length = 8K key_buffer_size = 80M max_allowed_packet = 1M table_open_cache = 256 @@ -39,20 +42,22 @@ myisam_sort_buffer_size = 64M thread_cache_size = 8 query_cache_size = 16M join_buffer_size = 128K -# Try number of CPU's*2 for thread_concurrency -#thread_concurrency = 8 + # Don't listen on a TCP/IP port at all. This can be a security enhancement, # if all processes that need to connect to mysqld run on the same host. # All interaction with mysqld must be made via Unix sockets or named pipes. # Note that using this option without enabling named pipes on Windows # (via the "enable-named-pipe" option) will render mysqld useless! -# +# #skip-networking # Replication Master Server (default) # binary logging is required for replication -#log-bin +log-bin=mysql-bin + +# binary logging format - mixed recommended +binlog_format=mixed # required unique id between 1 and 2^32 - 1 # defaults to 1 if master-host is not set @@ -112,15 +117,7 @@ server-id = 1 #master-port = # # binary logging - not required for slaves, but recommended -#log-bin - -# Point the following paths to different dedicated disks -#tmpdir = /tmp/ -#log-update = /path-to-dedicated-directory/hostname - -# Uncomment the following if you are using BDB tables -#bdb_cache_size = 4M -#bdb_max_lock = 10000 +#log-bin=mysql-bin # Uncomment the following if you are using InnoDB tables #innodb_data_home_dir = /var/lib/mysql @@ -141,18 +138,12 @@ quick max_allowed_packet = 16M [mysql] -#no-auto-rehash +no-auto-rehash # Remove the next comment character if you are not familiar with SQL #safe-updates -[isamchk] -key_buffer = 20M -sort_buffer_size = 20M -read_buffer = 2M -write_buffer = 2M - [myisamchk] -key_buffer = 20M +key_buffer_size = 20M sort_buffer_size = 20M read_buffer = 2M write_buffer = 2M diff --git a/abs/core/mysql/mysql.install b/abs/core/mysql/mysql.install index 9e9011d..a98f1a8 100644 --- a/abs/core/mysql/mysql.install +++ b/abs/core/mysql/mysql.install @@ -1,13 +1,21 @@ post_install(){ groupadd -g 89 mysql &>/dev/null useradd -u 89 -g mysql -d /var/lib/mysql -s /bin/false mysql &>/dev/null - usr/bin/mysql_install_db --user=mysql + 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(){ 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 /var/lib/mysql -s /bin/false mysql &>/dev/null + + if [ "$(vercmp $2 5.5)" -lt 0 ]; then + echo " >> " + echo " >> Major version update. Consider restart the service, and then running mysql_upgrade after it." + echo " >> " + fi } post_remove(){ diff --git a/abs/core/mysql/mysqld b/abs/core/mysql/mysqld deleted file mode 100755 index 1ac88a7..0000000 --- a/abs/core/mysql/mysqld +++ /dev/null @@ -1,77 +0,0 @@ -#!/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 /var/run/mysqld ] && install -d -g mysql -o mysql /var/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) > /var/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 /var/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/abs/core/mysql/mysqld-post.sh b/abs/core/mysql/mysqld-post.sh new file mode 100755 index 0000000..8dc9c4e --- /dev/null +++ b/abs/core/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/abs/core/mysql/mysqld-tmpfile.conf b/abs/core/mysql/mysqld-tmpfile.conf new file mode 100644 index 0000000..6883dc7 --- /dev/null +++ b/abs/core/mysql/mysqld-tmpfile.conf @@ -0,0 +1 @@ +d /run/mysqld 0755 mysql mysql - diff --git a/abs/core/mysql/mysqld.rc b/abs/core/mysql/mysqld.rc new file mode 100755 index 0000000..4bbddb5 --- /dev/null +++ b/abs/core/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/abs/core/mysql/mysqld.service b/abs/core/mysql/mysqld.service new file mode 100644 index 0000000..0175c68 --- /dev/null +++ b/abs/core/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 diff --git a/abs/core/mysql/skip-abi-check.patch b/abs/core/mysql/skip-abi-check.patch deleted file mode 100644 index 6791deb..0000000 --- a/abs/core/mysql/skip-abi-check.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- Makefile.in.orig 2010-05-28 20:03:46.507224494 +0200 -+++ Makefile.in 2010-05-28 20:04:05.737221909 +0200 -@@ -1126,10 +1126,8 @@ - # - - abi_check: $(API_PREPROCESSOR_HEADER) -- $(MAKE) abi_headers="$^" do_abi_check - - abi_check_all: $(TEST_PREPROCESSOR_HEADER) -- $(MAKE) abi_headers="$^" do_abi_check - - do_abi_check: - set -ex; \ -- cgit v0.12