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