commit 1cce0393718e8b48fe2c8252a02f2e17d1cd60d6 Author: Jay Larson Date: Sun Oct 2 19:36:08 2016 -0500 First check in diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..9aecfd4 --- /dev/null +++ b/Makefile @@ -0,0 +1,103 @@ +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation here: +# (http://www.gnu.org/licenses/gpl-2.0.html) +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +DEPENDS = openssl +ARCH = x86_64 +URL = https://mariadb.org/ +DESC = +SNAPVER = sr0 + +ARCHIVE := $(PWD)/SRC/$(shell ls SRC|egrep '(bz2|gz|tar|xz)$$'|tail -1) +TYPE := $(shell file -ib $(ARCHIVE)|cut -d';' -f1|tr -d '\n') +SRCDIR := $(shell tar -tf $(ARCHIVE)|head -1|sed 's/\/.*//') +PATCHDIR := $(PWD)/SRC/patches +BUILDDIR := $(PWD)/BUILD +VERSION := $(shell echo $(SRCDIR)|egrep -o '\-[0-9].*'|sed 's/^-//')$(SNAPVER) + +MAKE = make +MAKEINST = make install +SNAPHACKS = install -d -m 755 $(ROOT)/etc/init.d && \ + install -d -m 700 $(ROOT)/var/lib/mysql && \ + install -m 755 SNAP/mysqld.init $(ROOT)/etc/init.d/mysqld && \ + install -m 644 $(ROOT)/usr/share/mysql/my-medium.cnf \ + $(ROOT)/etc/my.cnf + +include /usr/share/snap/Makefile.snaplinux + +$(SRCDIR)/configure.cmake: $(ARCHIVE) + @if [ '$(TYPE)' == 'application/x-bzip2' ]; then \ + tar -jxf $(ARCHIVE); \ + elif [ '$(TYPE)' == 'application/x-gzip' ]; then \ + tar -zxf $(ARCHIVE); \ + elif [ '$(TYPE)' == 'application/x-tar' ]; then \ + tar -xf $(ARCHIVE); \ + elif [ '$(TYPE)' == 'application/x-xz' ]; then \ + tar -xf $(ARCHIVE); \ + else \ + echo 'Unable to determine archive type'; \ + exit 1; \ + fi + @touch $(SRCDIR)/configure.cmake + +$(BUILDDIR)/Makefile: $(SRCDIR)/configure.cmake + @if [ ! -d $(BUILDDIR) ]; then \ + mkdir -v $(BUILDDIR); \ + fi + @cd $(SRCDIR) && for patch in `find $(PATCHDIR) -name \*.patch`; do \ + patch --verbose -Np1 -i $$patch; \ + done + @cd $(BUILDDIR); \ + cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DINSTALL_DOCDIR=share/doc/mariadb \ + -DINSTALL_DOCREADMEDIR=share/doc/mariadb \ + -DINSTALL_MANDIR=share/man \ + -DINSTALL_MYSQLSHAREDIR=share/mysql \ + -DINSTALL_PLUGINDIR=lib/mysql/plugin \ + -DINSTALL_SBINDIR=sbin \ + -DINSTALL_SCRIPTDIR=bin \ + -DINSTALL_SQLBENCHDIR=share/mysql/bench \ + -DINSTALL_SUPPORTFILESDIR=share/mysql \ + -DMYSQL_DATADIR=/var/lib/mysql \ + -DMYSQL_UNIX_ADDR=/var/run/mysqld/mysqld.sock \ + -DWITH_EXTRA_CHARSETS=complex \ + -DWITH_EMBEDDED_SERVER=ON \ + -DWITH_SYSTEMD=OFF \ + -DWITH_UNIT_TESTS=OFF \ + -DCOMPILATION_COMMENT="Snaplinux" \ + -DSYSTEM_TYPE="snap-linux-gnu" \ + -DTOKUDB_OK=0 \ + ../$(SRCDIR) + +$(BUILDDIR)/sql/mysqld: $(BUILDDIR)/Makefile + @cd $(BUILDDIR); \ + $(MAKE) + +$(ROOT): $(BUILDDIR)/sql/mysqld + @if [ -d $(ROOT) ]; then \ + touch $(ROOT); \ + else \ + mkdir -v $(ROOT); \ + fi + + @cd $(BUILDDIR); \ + $(MAKEINST) DESTDIR=$(ROOT) + + @$(SNAPHACKS) + +clean: + @rm -rvf $(ROOT) \ + $(SNAPINFO) \ + $(MANIFEST) \ + $(FILES) \ + $(SRCDIR) \ + $(BUILDDIR) + diff --git a/SNAP/README b/SNAP/README new file mode 100644 index 0000000..19a3ff1 --- /dev/null +++ b/SNAP/README @@ -0,0 +1,3 @@ +This is the directory where the manifest, snapinfo, and files.tar.gz +files will be created. It is also where the usher file should be +placed if it is required by the package. diff --git a/SNAP/mysqld.init b/SNAP/mysqld.init new file mode 100755 index 0000000..90ec0c9 --- /dev/null +++ b/SNAP/mysqld.init @@ -0,0 +1,291 @@ +#!/bin/sh + +### BEGIN INIT INFO +# Provides: mysql +# Required-Start: $local_fs $network $remote_fs +# Should-Start: ypbind nscd ldap ntpd xntpd +# Required-Stop: $local_fs $network $remote_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: start and stop MySQL +# Description: MySQL is a very fast and reliable SQL database engine. +### END INIT INFO + +# Default value, in seconds, afterwhich the script should timeout waiting +# for server start. +# Value here is overriden by value in my.cnf. +# 0 means don't wait at all +# Negative numbers mean to wait indefinitely +service_startup_timeout=900 + +basedir=/usr +bindir="$basedir/bin" +sbindir="$basedir/sbin" +libexecdir=$sbindir +datadir=/var/lib/mysql + +# datadir_set is used to determine if datadir was set (and so should be +# *not* set inside of the --basedir= handler.) +datadir_set= + +. /lib/lsb/init-functions + +mode=$1 # start or stop + +[ $# -ge 1 ] && shift + +other_args="$*" # uncommon, but needed when called from an RPM upgrade action + # Expected: "--skip-networking --skip-grant-tables" + # They are not checked here, intentionally, as it is the + # resposibility of the "spec" file author to give + # correct arguments only. + +parse_server_arguments() { + for arg do + case "$arg" in + --basedir=*) basedir=`echo "$arg" | sed -e 's/^[^=]*=//'` + bindir="$basedir/bin" + if test -z "$datadir_set"; then + datadir="$basedir/data" + fi + sbindir="$basedir/sbin" + if test -f "$basedir/bin/mysqld" + then + libexecdir="$basedir/bin" + else + libexecdir="$basedir/libexec" + fi + libexecdir="$basedir/libexec" + ;; + --datadir=*) datadir=`echo "$arg" | sed -e 's/^[^=]*=//'` + datadir_set=1 + ;; + --log-basename=*|--hostname=*|--loose-log-basename=*) + mysqld_pid_file_path=`echo "$arg.pid" | sed -e 's/^[^=]*=//'` + ;; + --pid-file=*) mysqld_pid_file_path=`echo "$arg" | sed -e 's/^[^=]*=//'` ;; + --service-startup-timeout=*) service_startup_timeout=`echo "$arg" | sed -e 's/^[^=]*=//'` ;; + esac + done +} + +# Get arguments from the my.cnf file, +# the only group, which is read from now on is [mysqld] +parse_server_arguments `my_print_defaults mysqld` + +# wait for the pid file to disappear +wait_for_gone () { + pid="$1" # process ID of the program operating on the pid-file + pid_file_path="$2" # path to the PID file. + + i=0 + crash_protection="by checking again" + + while test $i -ne $service_startup_timeout ; do + + if kill -0 "$pid" 2>/dev/null; then + : # the server still runs + else + if test ! -s "$pid_file_path"; then + # no server process and no pid-file? great, we're done! + log_success_msg + return 0 + fi + + # pid-file exists, the server process doesn't. + # it must've crashed, and mysqld_safe will restart it + if test -n "$crash_protection"; then + crash_protection="" + sleep 5 + continue # Check again. + fi + + # Cannot help it + log_failure_msg "The server quit without updating PID file ($pid_file_path)." + return 1 # not waiting any more. + fi + + echo -n ".$echo_c" + i=`expr $i + 1` + sleep 1 + + done + + log_failure_msg + return 1 +} + +wait_for_ready () { + i=0 + while test $i -ne $service_startup_timeout ; do + + if $bindir/mysqladmin ping >/dev/null 2>&1; then + log_success_msg + return 0 + elif kill -0 $! 2>/dev/null ; then + : # mysqld_safe is still running + else + # mysqld_safe is no longer running, abort the wait loop + break + fi + + echo -n ".$echo_c" + i=`expr $i + 1` + sleep 1 + + done + + log_failure_msg + return 1 +} + +# +# Set pid file +# +mysqld_pid_file_path=$datadir/`hostname`.pid + +case "$mode" in + 'start') + # Start daemon + + # Safeguard (relative paths, core dumps..) + cd $basedir + + log_info_msg "Starting MySQL" + if test -x $bindir/mysqld_safe + then + # Give extra arguments to mysqld with the my.cnf file. This script + # may be overwritten at next upgrade. + $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 & + wait_for_ready; return_value=$? + + exit $return_value + else + log_failure_msg "Couldn't find MySQL server ($bindir/mysqld_safe)" + fi + ;; + + 'stop') + # Stop daemon. We use a signal here to avoid having to know the + # root password. + + if test -s "$mysqld_pid_file_path" + then + mysqld_pid=`cat "$mysqld_pid_file_path"` + + if (kill -0 $mysqld_pid 2>/dev/null) + then + log_info_msg "Shutting down MySQL" + kill $mysqld_pid + # mysqld should remove the pid file when it exits, so wait for it. + wait_for_gone $mysqld_pid "$mysqld_pid_file_path"; return_value=$? + else + log_failure_msg "MySQL server process #$mysqld_pid is not running!" + rm "$mysqld_pid_file_path" + fi + + exit $return_value + elif ! pidof $sbindir/mysqld + then + log_failure_msg "MySQL server is not running!" + else + log_failure_msg "MySQL server PID file could not be found!" + fi + ;; + + 'restart') + # Stop the service and regardless of whether it was + # running or not, start it again. + if $0 stop $other_args; then + if ! $0 start $other_args; then + log_failure_msg "Failed to restart server." + exit 1 + fi + else + log_failure_msg "Failed to stop running server, so refusing to try to start." + exit 1 + fi + ;; + + 'reload'|'force-reload') + if test -s "$mysqld_pid_file_path" ; then + read mysqld_pid < "$mysqld_pid_file_path" + kill -HUP $mysqld_pid && log_success_msg "Reloading service MySQL" + touch "$mysqld_pid_file_path" + else + log_failure_msg "MySQL PID file could not be found!" + exit 1 + fi + ;; + 'status') + # First, check to see if pid file exists + if test -s "$mysqld_pid_file_path" ; then + read mysqld_pid < "$mysqld_pid_file_path" + if kill -0 $mysqld_pid 2>/dev/null ; then + log_success_msg "MySQL running ($mysqld_pid)" + exit 0 + else + log_failure_msg "MySQL is not running, but PID file exists" + exit 1 + fi + else + # Try to find appropriate mysqld process + mysqld_pid=`pidof $libexecdir/mysqld` + + # test if multiple pids exist + pid_count=`echo $mysqld_pid | wc -w` + if test $pid_count -gt 1 ; then + log_failure_msg "Multiple MySQL running but PID file could not be found ($mysqld_pid)" + exit 5 + elif test -z $mysqld_pid ; then + log_failure_msg "MySQL is not running" + exit 3 + else + log_failure_msg "MySQL is running but PID file could not be found" + exit 4 + fi + fi + ;; + 'configtest') + # Safeguard (relative paths, core dumps..) + cd $basedir + echo -n "Testing MySQL configuration syntax" + daemon=$bindir/mysqld + if test -x $libexecdir/mysqld + then + daemon=$libexecdir/mysqld + elif test -x $sbindir/mysqld + then + daemon=$sbindir/mysqld + elif test -x `which mysqld` + then + daemon=`which mysqld` + else + log_failure_msg "Unable to locate the mysqld binary!" + exit 1 + fi + help_out=`$daemon --help 2>&1`; r=$? + if test "$r" != 0 ; then + log_failure_msg "$help_out" + log_failure_msg "There are syntax errors in the server configuration. Please fix them!" + else + log_success_msg "Syntax OK" + fi + exit $r + ;; + 'bootstrap') + # Bootstrap the cluster, start the first node + # that initiate the cluster + echo -n "Bootstrapping the cluster.. " + $0 start $other_args --wsrep-new-cluster + exit $? + ;; + *) + # usage + basename=`basename "$0"` + echo "Usage: $basename {start|stop|restart|reload|force-reload|status|configtest|bootstrap} [ MySQL server options ]" + exit 1 + ;; +esac + +exit 0 diff --git a/SNAP/usher b/SNAP/usher new file mode 100755 index 0000000..434041b --- /dev/null +++ b/SNAP/usher @@ -0,0 +1,39 @@ +#!/bin/bash + +set -e + +case $1 in + preinst) + exit 0 + ;; + postinst) + if ! getent group mysql 2>&1 > /dev/null; then + if groupadd -g 40 mysql; then + echo 'Created group mysql' + else + echo 'Failed to create group mysql!' + exit 1 + fi + fi + + if ! getent passwd mysql 2>&1 > /dev/null; then + if useradd -c 'MySQL Server' -d /var/lib/mysql -g mysql \ + -s /bin/false -u 40 mysql; then + echo 'Created user mysql' + else + echo 'Failed to create user mysql!' + exit 1 + fi + fi + + mysql_install_db --basedir=/usr --datadir=/var/lib/mysql \ + --user=mysql 2>/dev/null + chown -R mysql:mysql /var/lib/mysql /var/run/mysqld + ;; + prerm) + exit 0 + ;; + postrm) + exit 0 + ;; +esac diff --git a/SRC/mariadb-10.1.18.tar.gz b/SRC/mariadb-10.1.18.tar.gz new file mode 100644 index 0000000..67d93ca Binary files /dev/null and b/SRC/mariadb-10.1.18.tar.gz differ diff --git a/SRC/mariadb-10.1.18.tar.gz.sign b/SRC/mariadb-10.1.18.tar.gz.sign new file mode 100644 index 0000000..2a80323 --- /dev/null +++ b/SRC/mariadb-10.1.18.tar.gz.sign @@ -0,0 +1,5 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1 + +iEYEABECAAYFAlfuCkwACgkQy8sIKhu5Q9velwCgsDWmL32uaMhbSdbGxDeXQyAS m+gAoPGFmAuO/ojkamiKc4b5T2LekBwf =hBMd +-----END PGP SIGNATURE----- diff --git a/SRC/patches/README b/SRC/patches/README new file mode 100644 index 0000000..253cdcd --- /dev/null +++ b/SRC/patches/README @@ -0,0 +1,2 @@ +Place any patch files here and preface each with a number indicating +the order of execution. Patch files are expected to use a .patch extension.