From 8df0f600e8af6ec882fdc19ffff4ef823b7747b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Fabian=20Silva=20Delgado?= Date: Fri, 13 Apr 2012 21:07:32 -0300 Subject: mariadb-5.5.23-1: an optional mysql alternative --- libre/mariadb/PKGBUILD | 141 ++++++++++++++++++++++++++++++++++++++++ libre/mariadb/mariadb.install | 26 ++++++++ libre/mariadb/mariadbd | 77 ++++++++++++++++++++++ libre/mariadb/my.cnf | 145 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 389 insertions(+) create mode 100644 libre/mariadb/PKGBUILD create mode 100644 libre/mariadb/mariadb.install create mode 100755 libre/mariadb/mariadbd create mode 100644 libre/mariadb/my.cnf diff --git a/libre/mariadb/PKGBUILD b/libre/mariadb/PKGBUILD new file mode 100644 index 000000000..3c519dc28 --- /dev/null +++ b/libre/mariadb/PKGBUILD @@ -0,0 +1,141 @@ +# $Id$ +# Maintainer: +# Contributor: Andrea Scarpino +# Contributor: Douglas Soares de Andrade +# Maintainer (Parabola): Márcio Silva + +_falsename=mysql +__falsename=MySQL +pkgbase=mariadb +_pkgbase=MariaDB +pkgname=("lib${pkgbase}client" "${pkgbase}-clients" "${pkgbase}") +conflicts=("lib${_falsename}client" "${_falsename}-clients" "${_falsename}") +pkgver=5.5.23 +pkgrel=1 +arch=('i686' 'x86_64' 'mips64el') +license=('GPL') +url="http://www.${pkgbase}.org/" +makedepends=('cmake' 'openssl' 'zlib') +options=('!libtool') +source=("http://mirror.aarnet.edu.au/pub/${_pkgbase}/${pkgbase}-${pkgver}/kvm-tarbake-jaunty-x86/${pkgbase}-${pkgver}.tar.gz" + "${pkgbase}d" + 'my.cnf') +md5sums=('7074fa091b3c1489f45a5ddf12cd5e6f' + '4c491570ec9f2db20b080082119a1714' + '1c949c0dbea5206af0db14942d9927b6') + +build() { + cd "${srcdir}" + 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" \ + + cmake ../${pkgbase}-${pkgver} \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DSYSCONFDIR=/etc/${pkgbase} \ + -DMYSQL_DATADIR=/var/lib/${pkgbase} \ + -DMYSQL_UNIX_ADDR=/var/run/${pkgbase}/${pkgbase}.sock \ + -DDEFAULT_CHARSET=utf8 \ + -DDEFAULT_COLLATION=utf8_general_ci \ + -DENABLED_LOCAL_INFILE=ON \ + -DINSTALL_INFODIR=share/${pkgbase}/docs \ + -DINSTALL_MANDIR=share/man \ + -DINSTALL_PLUGINDIR=/usr/lib/${pkgbase}/plugin \ + -DINSTALL_SCRIPTDIR=bin \ + -DINSTALL_INCLUDEDIR=include/${pkgbase} \ + -DINSTALL_DOCREADMEDIR=share/${pkgbase} \ + -DINSTALL_SUPPORTFILESDIR=share/${pkgbase} \ + -DINSTALL_MYSQLSHAREDIR=share/${pkgbase} \ + -DINSTALL_DOCDIR=share/${pkgbase}/docs \ + -DINSTALL_SHAREDIR=share/${pkgbase} \ + -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 + + make +} + +package_libmariadbclient(){ + pkgdesc="${_pkgbase} client libraries (branch of ${__falsename})" + depends=('openssl') + replaces=("lib${_falsename}client") + provides=("lib${_falsename}client=${pkgver}") + + cd "${srcdir}"/build + for dir in include lib${_falsename} lib${_falsename}d libservices; do + make -C ${dir} DESTDIR="${pkgdir}" install + done + + install -d "${pkgdir}"/usr/bin + install -m755 scripts/${_falsename}_config "${pkgdir}"/usr/bin/ + install -d "${pkgdir}"/usr/share/man/man1 + for man in ${_falsename}_config ${_falsename}_client_test_embedded ${_falsename}test_embedded; do + install -m644 "${srcdir}"/${pkgbase}-${pkgver}/man/$man.1 "${pkgdir}"/usr/share/man/man1/$man.1 + done +} + +package_mariadb-clients(){ + pkgdesc="${_pkgbase} client tools (branch of ${__falsename})" + depends=("lib${pkgbase}client") + replaces=("${_falsename}-clients") + provides=("${_falsename}-clients=${pkgver}") + + cd "${srcdir}"/build + make -C client DESTDIR="${pkgdir}" install + + # install man pages + install -d "${pkgdir}"/usr/share/man/man1 + for man in ${_falsename} ${_falsename}admin ${_falsename}check ${_falsename}dump ${_falsename}import ${_falsename}show ${_falsename}slap; do + install -m644 "${srcdir}"/${pkgbase}-${pkgver}/man/$man.1 "${pkgdir}"/usr/share/man/man1/$man.1 + done + + # provided by mariadb + rm "${pkgdir}"/usr/bin/{${_falsename}_{plugin,upgrade},${_falsename}binlog,${_falsename}test} +} + +package_mariadb(){ + pkgdesc="A fast SQL database server branch of ${__falsename} - ${_pkgbase}" + backup=("etc/${pkgbase}/my.cnf") + install=${pkgbase}.install + depends=("${pkgbase}-clients") + optdepends=('perl-dbi' "perl-dbd-${_falsename}") + replaces=("${_falsename}") + provides=("${_falsename}=${pkgver}") + options=('emptydirs') + + cd "${srcdir}"/build + make DESTDIR="${pkgdir}" install + + install -Dm644 "${srcdir}"/my.cnf "${pkgdir}"/etc/${pkgbase}/my.cnf + install -Dm755 "${srcdir}"/${pkgbase}d "${pkgdir}"/etc/rc.d/${pkgbase}d + + # provided by libmariadbclient + rm "${pkgdir}"/usr/bin/{${_falsename}_config,${_falsename}_client_test_embedded,${_falsename}test_embedded} + rm "${pkgdir}"/usr/lib/lib${_falsename}* + rm -r "${pkgdir}"/usr/include/ + rm "${pkgdir}"/usr/share/man/man1/{${_falsename}_config,${_falsename}_client_test_embedded,${_falsename}test_embedded}.1 + + # provided by mariadb-clients + rm "${pkgdir}"/usr/bin/{${_falsename},${_falsename}admin,${_falsename}check,${_falsename}dump,${_falsename}import,${_falsename}show,${_falsename}slap} + rm "${pkgdir}"/usr/share/man/man1/{${_falsename},${_falsename}admin,${_falsename}check,${_falsename}dump,${_falsename}import,${_falsename}show,${_falsename}slap}.1 + + # not needed + rm -r "${pkgdir}"/usr/{data,${_falsename}-test,sql-bench} + rm "${pkgdir}"/usr/share/man/man1/${_falsename}-test-run.pl.1 + + install -dm700 "${pkgdir}"/var/lib/${pkgbase} +} diff --git a/libre/mariadb/mariadb.install b/libre/mariadb/mariadb.install new file mode 100644 index 000000000..f56a0dcaa --- /dev/null +++ b/libre/mariadb/mariadb.install @@ -0,0 +1,26 @@ +post_install(){ + groupadd -g 89 mysql &>/dev/null + useradd -u 89 -g mysql -d /var/lib/mariadb -s /bin/false mysql &>/dev/null + /usr/bin/mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mariadb + chown -R mysql:mysql /var/lib/mariadb &>/dev/null +} + +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/mariadb -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(){ + 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/libre/mariadb/mariadbd b/libre/mariadb/mariadbd new file mode 100755 index 000000000..3ae612096 --- /dev/null +++ b/libre/mariadb/mariadbd @@ -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 MariaDB Server" + [ ! -d /var/run/mariadb ] && install -d -g mysql -o mysql /var/run/mariadb &>/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/mariadb/mariadb.pid + add_daemon mysqld + stat_done + fi + fi + else + stat_fail + exit 1 + fi + ;; + + stop) + stat_busy "Stopping MariaDB 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/mariadb/mariadb.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/libre/mariadb/my.cnf b/libre/mariadb/my.cnf new file mode 100644 index 000000000..9a41b4fc3 --- /dev/null +++ b/libre/mariadb/my.cnf @@ -0,0 +1,145 @@ +# MySQL config file for medium systems. +# +# 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) +# +# 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 +# with the "--help" option. + +# The following options will be passed to all MySQL clients +[client] +#password = your_password +port = 3306 +socket = /var/run/mysqld/mysqld.sock + +# Here follows entries for some specific programs + +# The MySQL server +[mysqld] +port = 3306 +socket = /var/run/mysqld/mysqld.sock +datadir = /var/lib/mysql +skip-external-locking +key_buffer_size = 16M +max_allowed_packet = 1M +table_open_cache = 64 +sort_buffer_size = 512K +net_buffer_length = 8K +read_buffer_size = 256K +read_rnd_buffer_size = 512K +myisam_sort_buffer_size = 8M + +# 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=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 +# but will not function as a master if omitted +server-id = 1 + +# Replication Slave (comment out master section to use this) +# +# To configure this host as a replication slave, you can choose between +# two methods : +# +# 1) Use the CHANGE MASTER TO command (fully described in our manual) - +# the syntax is: +# +# CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=, +# MASTER_USER=, MASTER_PASSWORD= ; +# +# where you replace , , by quoted strings and +# by the master's port number (3306 by default). +# +# Example: +# +# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306, +# MASTER_USER='joe', MASTER_PASSWORD='secret'; +# +# OR +# +# 2) Set the variables below. However, in case you choose this method, then +# start replication for the first time (even unsuccessfully, for example +# if you mistyped the password in master-password and the slave fails to +# connect), the slave will create a master.info file, and any later +# change in this file to the variables' values below will be ignored and +# overridden by the content of the master.info file, unless you shutdown +# the slave server, delete master.info and restart the slaver server. +# For that reason, you may want to leave the lines below untouched +# (commented) and instead use CHANGE MASTER TO (see above) +# +# required unique id between 2 and 2^32 - 1 +# (and different from the master) +# defaults to 2 if master-host is set +# but will not function as a slave if omitted +#server-id = 2 +# +# The replication master for this slave - required +#master-host = +# +# The username the slave will use for authentication when connecting +# to the master - required +#master-user = +# +# The password the slave will authenticate with when connecting to +# the master - required +#master-password = +# +# The port the master is listening on. +# optional - defaults to 3306 +#master-port = +# +# binary logging - not required for slaves, but recommended +#log-bin=mysql-bin + +# Uncomment the following if you are using InnoDB tables +#innodb_data_home_dir = /var/lib/mysql +#innodb_data_file_path = ibdata1:10M:autoextend +#innodb_log_group_home_dir = /var/lib/mysql +# You can set .._buffer_pool_size up to 50 - 80 % +# of RAM but beware of setting memory usage too high +#innodb_buffer_pool_size = 16M +#innodb_additional_mem_pool_size = 2M +# Set .._log_file_size to 25 % of buffer pool size +#innodb_log_file_size = 5M +#innodb_log_buffer_size = 8M +#innodb_flush_log_at_trx_commit = 1 +#innodb_lock_wait_timeout = 50 + +[mysqldump] +quick +max_allowed_packet = 16M + +[mysql] +no-auto-rehash +# Remove the next comment character if you are not familiar with SQL +#safe-updates + +[myisamchk] +key_buffer_size = 20M +sort_buffer_size = 20M +read_buffer = 2M +write_buffer = 2M + +[mysqlhotcopy] +interactive-timeout -- cgit v1.2.3-2-g168b