First check in
This commit is contained in:
103
Makefile
Normal file
103
Makefile
Normal file
@@ -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)
|
||||||
|
|
||||||
3
SNAP/README
Normal file
3
SNAP/README
Normal file
@@ -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.
|
||||||
291
SNAP/mysqld.init
Executable file
291
SNAP/mysqld.init
Executable file
@@ -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
|
||||||
39
SNAP/usher
Executable file
39
SNAP/usher
Executable file
@@ -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
|
||||||
BIN
SRC/mariadb-10.1.18.tar.gz
Normal file
BIN
SRC/mariadb-10.1.18.tar.gz
Normal file
Binary file not shown.
5
SRC/mariadb-10.1.18.tar.gz.sign
Normal file
5
SRC/mariadb-10.1.18.tar.gz.sign
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
Version: GnuPG v1
|
||||||
|
|
||||||
|
iEYEABECAAYFAlfuCkwACgkQy8sIKhu5Q9velwCgsDWmL32uaMhbSdbGxDeXQyAS m+gAoPGFmAuO/ojkamiKc4b5T2LekBwf =hBMd
|
||||||
|
-----END PGP SIGNATURE-----
|
||||||
2
SRC/patches/README
Normal file
2
SRC/patches/README
Normal file
@@ -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.
|
||||||
Reference in New Issue
Block a user