11 changed files with 2099 additions and 0 deletions
-
1CMakeLists.txt
-
28packaging/rpm-sles/CMakeLists.txt
-
6packaging/rpm-sles/filter-provides.sh
-
6packaging/rpm-sles/filter-requires.sh
-
31packaging/rpm-sles/my.cnf
-
30packaging/rpm-sles/my_config.h
-
66packaging/rpm-sles/mysql-systemd-start
-
1packaging/rpm-sles/mysql.conf
-
236packaging/rpm-sles/mysql.init
-
1646packaging/rpm-sles/mysql.spec.in
-
48packaging/rpm-sles/mysqld.service
@ -0,0 +1,28 @@ |
|||
# Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. |
|||
# |
|||
# This program is free software; you can redistribute it and/or modify |
|||
# it under the terms of the GNU General Public License as published by |
|||
# the Free Software Foundation; version 2 of the License. |
|||
# |
|||
# 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. |
|||
# |
|||
# You should have received a copy of the GNU General Public License |
|||
# along with this program; if not, write to the Free Software |
|||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
|||
|
|||
|
|||
IF(UNIX) |
|||
SET(prefix ${CMAKE_INSTALL_PREFIX}) |
|||
SET(SPECFILENAME "mysql.spec") |
|||
# Left in current directory, to be taken during build |
|||
CONFIGURE_FILE(mysql.spec.in ${CMAKE_CURRENT_BINARY_DIR}/${SPECFILENAME} @ONLY) |
|||
FOREACH(fedfile my.cnf my_config.h mysql.init |
|||
mysqld.service mysql-systemd-start mysql.conf |
|||
filter-requires.sh filter-provides.sh) |
|||
CONFIGURE_FILE(${fedfile} ${CMAKE_CURRENT_BINARY_DIR}/${fedfile} COPYONLY) |
|||
ENDFOREACH() |
|||
ENDIF() |
|||
|
@ -0,0 +1,6 @@ |
|||
#! /bin/bash |
|||
# |
|||
|
|||
/usr/lib/rpm/perl.prov $* | |
|||
sed -e '/perl(hostnames)/d' -e '/perl(lib::mtr.*/d' -e '/perl(lib::v1.*/d' -e '/perl(mtr_.*/d' -e '/perl(My::.*/d' |
|||
|
@ -0,0 +1,6 @@ |
|||
#! /bin/bash |
|||
# |
|||
|
|||
/usr/lib/rpm/perl.req $* | |
|||
sed -e '/perl(GD)/d' -e '/perl(hostnames)/d' -e '/perl(lib::mtr.*/d' -e '/perl(lib::v1.*/d' -e '/perl(mtr_.*/d' -e '/perl(My::.*/d' |
|||
|
@ -0,0 +1,31 @@ |
|||
# For advice on how to change settings please see |
|||
# http://dev.mysql.com/doc/refman/5.5/en/server-configuration-defaults.html |
|||
|
|||
[mysqld] |
|||
# |
|||
# Remove leading # and set to the amount of RAM for the most important data |
|||
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. |
|||
# innodb_buffer_pool_size = 128M |
|||
# |
|||
# Remove leading # to turn on a very important data integrity option: logging |
|||
# changes to the binary log between backups. |
|||
# log_bin |
|||
# |
|||
# Remove leading # to set options mainly useful for reporting servers. |
|||
# The server defaults are faster for transactions and fast SELECTs. |
|||
# Adjust sizes as needed, experiment to find the optimal values. |
|||
# join_buffer_size = 128M |
|||
# sort_buffer_size = 2M |
|||
# read_rnd_buffer_size = 2M |
|||
datadir=/var/lib/mysql |
|||
socket=/var/lib/mysql/mysql.sock |
|||
|
|||
# Disabling symbolic-links is recommended to prevent assorted security risks |
|||
symbolic-links=0 |
|||
|
|||
# Recommended in standard MySQL setup |
|||
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES |
|||
|
|||
[mysqld_safe] |
|||
log-error=/var/log/mysql/mysqld.log |
|||
pid-file=/var/run/mysql/mysqld.pid |
@ -0,0 +1,30 @@ |
|||
/* |
|||
* Fedora supports multi arch: having 32 and 64 versions of MySQL |
|||
* installed at the same time. my_config.h will differ due arch |
|||
* dependent defs creating a file conflict. We move arch specific |
|||
* headers to arch specific file names and include the correct arch |
|||
* specific file by installing this generic file. |
|||
* |
|||
*/ |
|||
|
|||
#if defined(__i386__) |
|||
#include "my_config_i386.h" |
|||
#elif defined(__ia64__) |
|||
#include "my_config_ia64.h" |
|||
#elif defined(__powerpc__) |
|||
#include "my_config_ppc.h" |
|||
#elif defined(__powerpc64__) |
|||
#include "my_config_ppc64.h" |
|||
#elif defined(__s390x__) |
|||
#include "my_config_s390x.h" |
|||
#elif defined(__s390__) |
|||
#include "my_config_s390.h" |
|||
#elif defined(__sparc__) && defined(__arch64__) |
|||
#include "my_config_sparc64.h" |
|||
#elif defined(__sparc__) |
|||
#include "my_config_sparc.h" |
|||
#elif defined(__x86_64__) |
|||
#include "my_config_x86_64.h" |
|||
#else |
|||
#error "This MySQL devel package does not work your architecture?" |
|||
#endif |
@ -0,0 +1,66 @@ |
|||
#! /bin/bash |
|||
# |
|||
# Scripts to run by MySQL systemd service |
|||
# |
|||
# Needed argument: pre | post |
|||
# |
|||
# pre mode : try to run mysql_install_db and fix perms and SELinux contexts |
|||
# post mode : ping server until answer is received |
|||
# |
|||
|
|||
install_db () { |
|||
# Note: something different than datadir=/var/lib/mysql requires SELinux policy changes (in enforcing mode) |
|||
datadir=$(/usr/bin/my_print_defaults server mysqld | grep '^--datadir=' | sed -n 's/--datadir=//p') |
|||
|
|||
# Restore log, dir, perms and SELinux contexts |
|||
[ -d "$datadir" ] || install -d -m 0755 -omysql -gmysql "$datadir" || exit 1 |
|||
log=/var/log/mysqld.log |
|||
[ -e $log ] || touch $log |
|||
chmod 0640 $log |
|||
chown mysql:mysql $log || exit 1 |
|||
if [ -x /usr/sbin/restorecon ]; then |
|||
/usr/sbin/restorecon "$datadir" |
|||
/usr/sbin/restorecon $log |
|||
fi |
|||
|
|||
# If special mysql dir is in place, skip db install |
|||
[ -d "$datadir/mysql" ] && exit 0 |
|||
|
|||
# Create initial db |
|||
/usr/bin/mysql_install_db --rpm --datadir="$datadir" --user=mysql |
|||
|
|||
# Create a file to trigger execution of mysql_secure_installation |
|||
# after server has started |
|||
touch "$datadir"/.phase_two_required |
|||
|
|||
exit 0 |
|||
} |
|||
|
|||
pinger () { |
|||
# Wait for ping to answer to signal startup completed, |
|||
# might take a while in case of e.g. crash recovery |
|||
# MySQL systemd service will timeout script if no answer |
|||
ret=1 |
|||
while /bin/true ; do |
|||
sleep 1 |
|||
mysqladmin ping >/dev/null 2>&1 && ret=0 && break |
|||
done |
|||
|
|||
# If server has been started successfully and file created in |
|||
# install_db step is present we run mysql_secure_installation |
|||
if [ $ret -eq 0 -a -e "$datadir"/.phase_two_required -a -x /usr/bin/mysql_secure_installation ] ; then |
|||
/usr/bin/mysql_secure_installation --use-default --defaults-file=/etc/my.cnf |
|||
rm -f "$datadir"/.phase_two_required |
|||
fi |
|||
|
|||
exit 0 |
|||
} |
|||
|
|||
# main |
|||
case $1 in |
|||
"pre") install_db ;; |
|||
"post") pinger ;; |
|||
esac |
|||
|
|||
exit 0 |
|||
|
@ -0,0 +1 @@ |
|||
d /var/run/mysqld 0755 mysql mysql - |
@ -0,0 +1,236 @@ |
|||
#! /bin/bash |
|||
# |
|||
|
|||
# MySQL Database start/stop script |
|||
|
|||
# chkconfig: - 64 36 |
|||
# description: MySQL Database |
|||
# processname: mysqld |
|||
# config: /etc/my.cnf |
|||
# pidfile: /var/run/mysql/mysqld.pid |
|||
|
|||
# Comments to support LSB init script conventions |
|||
### BEGIN INIT INFO |
|||
# Provides: mysql |
|||
# Required-Start: $network $remote_fs |
|||
# Required-Stop: $network $remote_fs |
|||
# Default-Start: 3 5 |
|||
# Default-Stop: 0 1 6 |
|||
# Short-Description: MySQL Database |
|||
# Description: MySQL Database |
|||
### END INIT INFO |
|||
|
|||
# |
|||
# https://en.opensuse.org/openSUSE:Packaging_init_scripts#Exit_Status_Codes |
|||
# |
|||
|
|||
[ -e /etc/rc.status ] && . /etc/rc.status |
|||
|
|||
rc_reset |
|||
|
|||
STARTTIMEOUT=180 |
|||
STOPTIMEOUT=60 |
|||
PROG=/usr/bin/mysqld_safe |
|||
|
|||
[ -e /etc/sysconfig/mysql ] && . /etc/sysconfig/mysql |
|||
|
|||
# Lock directory |
|||
lockfile=/var/lock/subsys/mysql |
|||
|
|||
get_option () { |
|||
local section=$1 |
|||
local option=$2 |
|||
local default=$3 |
|||
ret=$(/usr/bin/my_print_defaults $section | grep '^--'${option}'=' | cut -d= -f2-) |
|||
[ -z $ret ] && ret=$default |
|||
echo $ret |
|||
} |
|||
|
|||
datadir=$(get_option mysqld datadir "/var/lib/mysql") |
|||
socket=$(get_option mysqld socket "$datadir/mysql.sock") |
|||
pidfile=$(get_option mysqld_safe pid-file "/var/run/mysql/mysqld.pid") |
|||
logfile=$(get_option mysqld_safe log-error "/var/log/mysql/mysqld.log") |
|||
|
|||
install_db () { |
|||
# Note: something different than datadir=/var/lib/mysql requires |
|||
# SELinux policy changes (in enforcing mode) |
|||
datadir=$(get_option mysqld datadir "/var/lib/mysql") |
|||
logfile=$(get_option mysqld_safe log-error "/var/log/mysql/mysqld.log") |
|||
|
|||
# Restore log, dir, perms and SELinux contexts |
|||
[ -d "$datadir" ] || install -d -m 0755 -omysql -gmysql "$datadir" || return 1 |
|||
|
|||
[ -e $logfile ] || touch $logfile || return 1 |
|||
chmod 0640 $logfile |
|||
chown mysql:mysql $logfile || return 1 |
|||
if [ -x /usr/sbin/restorecon ]; then |
|||
/usr/sbin/restorecon "$datadir" |
|||
/usr/sbin/restorecon $logfile |
|||
fi |
|||
|
|||
# If special mysql dir is in place, skip db install |
|||
[ -d "$datadir/mysql" ] && return 0 |
|||
|
|||
# Create initial db |
|||
/usr/bin/mysql_install_db --datadir="$datadir" --rpm --user=mysql |
|||
return $? |
|||
} |
|||
|
|||
# Wait for ping to answer to signal startup completed, |
|||
# might take a while in case of e.g. crash recovery |
|||
pinger () { |
|||
mysqld_safe_pid=$1 |
|||
timer=$STARTTIMEOUT |
|||
ret=0 |
|||
while [ $timer -gt 0 ]; do |
|||
sleep 1 |
|||
mysqladmin --no-defaults --socket="$socket" ping >/dev/null 2>&1 && break |
|||
timer=$(expr $timer - 1) |
|||
|
|||
# Check if mysqld_safe is still alive, if not there is no hope |
|||
if ! kill -0 $mysqld_safe_pid >/dev/null 2>&1 ; then |
|||
ret=1 |
|||
break |
|||
fi |
|||
done |
|||
|
|||
# Did we timeout? |
|||
if [ $timer = 0 ]; then |
|||
echo "MySQL Database start up timeout after ${STARTTIMEOUT}s" |
|||
ret=1 |
|||
fi |
|||
return $ret |
|||
} |
|||
|
|||
# Check if mysqld is running |
|||
chk_running () { |
|||
ret=0 |
|||
if [ -e "$pidfile" ]; then |
|||
pid=$(cat "$pidfile") || ret=4 |
|||
else |
|||
ret=7 |
|||
fi |
|||
|
|||
# Check if $pid is a mysqld pid |
|||
if [ $ret -eq 0 ]; then |
|||
[ -L "/proc/$pid/exe" ] || ret=7 |
|||
fi |
|||
|
|||
if [ $ret -eq 0 ]; then |
|||
exec=$(readlink "/proc/$pid/exe") || ret=7 |
|||
fi |
|||
|
|||
if [ $ret -eq 0 ]; then |
|||
[ "x$(basename $exec)" = "xmysqld" ] || ret=7 |
|||
fi |
|||
return $ret |
|||
} |
|||
|
|||
start () { |
|||
if chk_running && mysqladmin --no-defaults --socket="$socket" ping >/dev/null 2>&1 ; then |
|||
echo -n "Starting service MySQL:" |
|||
rc_reset ; rc_status -v ; rc_exit |
|||
fi |
|||
|
|||
if ! install_db; then |
|||
echo -n "MySQL Database could not initialize data directory:" |
|||
rc_failed 6 ; rc_status -v ; rc_exit |
|||
fi |
|||
|
|||
$PROG --basedir=/usr --datadir="$datadir" --pid-file="$pidfile" >/dev/null 2>&1 & |
|||
if pinger $! ; then |
|||
echo -n "Starting service MySQL:" |
|||
touch $lockfile |
|||
rc_reset |
|||
else |
|||
echo -n "Failed to start service MySQL:" |
|||
rc_failed 3 |
|||
fi |
|||
rc_status -v |
|||
} |
|||
|
|||
stop () { |
|||
chk_running |
|||
ret=$? |
|||
if [ $ret -ne 0 ]; then |
|||
echo -n "Shutting down service MySQL:" |
|||
rc_reset ; rc_status -v ; return 0 |
|||
fi |
|||
|
|||
# chk_running has verified this works |
|||
pid=$(cat "$pidfile") |
|||
|
|||
# We use a signal to avoid having to know the root password |
|||
# Send single kill command and then wait |
|||
if kill $pid >/dev/null 2>&1; then |
|||
timer=$STOPTIMEOUT |
|||
while [ $timer -gt 0 ]; do |
|||
kill -0 $pid >/dev/null 2>&1 || break |
|||
sleep 1 |
|||
timer=$(expr $timer - 1) |
|||
done |
|||
else |
|||
echo -n "Shutting down service MySQL:" |
|||
rc_failed 4 ; rc_status -v ; rc_exit |
|||
fi |
|||
|
|||
if [ $timer -eq 0 ]; then |
|||
echo -n "Failed to stop service MySQL:" |
|||
rc_failed 1 |
|||
else |
|||
rm -f $lockfile |
|||
rm -f "$socketfile" |
|||
echo -n "Shutting down service MySQL:" |
|||
rc_reset |
|||
fi |
|||
rc_status -v |
|||
} |
|||
|
|||
restart () { |
|||
stop |
|||
start |
|||
} |
|||
|
|||
reload () { |
|||
ret=0 |
|||
if chk_running && mysqladmin --no-defaults --socket="$socket" ping >/dev/null 2>&1 ; then |
|||
pid=$(cat "$pidfile") |
|||
kill -HUP $pid >/dev/null 2>&1 |
|||
echo -n "Reloading service MySQL:" |
|||
rc_reset |
|||
else |
|||
echo -n "Reloading of service MySQL failed:" |
|||
rc_failed 7 |
|||
fi |
|||
rc_status -v |
|||
} |
|||
|
|||
condrestart () { |
|||
if chk_running && mysqladmin --no-defaults --socket="$socket" ping >/dev/null 2>&1 ; then |
|||
restart |
|||
fi |
|||
} |
|||
|
|||
status () { |
|||
echo -n "Checking for service MySQL:" |
|||
checkproc mysqld |
|||
rc_status -v |
|||
} |
|||
|
|||
case "$1" in |
|||
start ) start ;; |
|||
stop ) stop ;; |
|||
restart) restart ;; |
|||
status ) status ;; |
|||
condrestart ) condrestart ;; |
|||
reload|force-reload) reload ;; |
|||
|
|||
*) echo $"Usage: $0 {start|stop|restart|condrestart|status|reload|force-reload}"; exit 1 ;; |
|||
esac |
|||
|
|||
rc_exit |
|||
|
|||
|
|||
|
|||
|
|||
|
1646
packaging/rpm-sles/mysql.spec.in
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,48 @@ |
|||
# |
|||
# Simple MySQL systemd service file |
|||
# |
|||
# systemd supports lots of fancy features, look here (and linked docs) for a full list: |
|||
# http://www.freedesktop.org/software/systemd/man/systemd.exec.html |
|||
# |
|||
# Note: this file ( /usr/lib/systemd/system/mysql.service ) |
|||
# will be overwritten on package upgrade, please copy the file to |
|||
# |
|||
# /etc/systemd/system/mysql.service |
|||
# |
|||
# to make needed changes. |
|||
# |
|||
# systemd-delta can be used to check differences between the two mysql.service files. |
|||
# |
|||
|
|||
[Unit] |
|||
Description=MySQL Community Server |
|||
After=network.target |
|||
After=syslog.target |
|||
|
|||
[Install] |
|||
WantedBy=multi-user.target |
|||
Alias=mysql.service |
|||
|
|||
[Service] |
|||
User=mysql |
|||
Group=mysql |
|||
|
|||
# Execute pre and post scripts as root |
|||
PermissionsStartOnly=true |
|||
|
|||
# Needed to create system tables etc. |
|||
ExecStartPre=/usr/bin/mysql-systemd-start pre |
|||
|
|||
# Start main service |
|||
ExecStart=/usr/bin/mysqld_safe |
|||
|
|||
# Don't signal startup success before a ping works |
|||
ExecStartPost=/usr/bin/mysql-systemd-start post |
|||
|
|||
# Give up if ping don't get an answer |
|||
TimeoutSec=600 |
|||
|
|||
Restart=always |
|||
PrivateTmp=false |
|||
|
|||
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue