File project.diff of Package mysql-community-server

--- rc.mysql-multi.orig
+++ rc.mysql-multi
@@ -1,7 +1,8 @@
 #!/bin/bash
-# Copyright (c) 1995-2002 SuSE Linux AG Nuernberg, Germany.
+# Copyright (c) 1995-2011 SuSE Linux AG Nuernberg, Germany.
 #
-# Author: Lenz Grimmer <feedback@suse.de>
+# Author:     Lenz Grimmer
+# Maintainer: Michal Hrusecky <mhrusecky@suse.cz>
 #
 # mysqld_multi extension added by Richard Bos, 2008
 #
@@ -60,11 +61,13 @@ fi
 parse_arguments() {
   for arg do
     case "$arg" in
-      --basedir=*)   basedir="`echo "$arg"   | sed -e 's/^[^=]*=//'`" ;;
-      --datadir=*)   datadir="`echo "$arg"   | sed -e 's/^[^=]*=//'`" ;;
-      --pid-file=*)  pid_file="`echo "$arg"  | sed -e 's/^[^=]*=//'`" ;;
-      --socket=*)    socket="`echo "$arg"    | sed -e 's/^[^=]*=//'`" ;;
-      --log-error=*) log_error="`echo "$arg" | sed -e 's/^[^=]*=//'`" ;;
+      --basedir=*)   basedir="`echo "$arg"            | sed -e 's/^[^=]*=//'`" ;;
+      --datadir=*)   datadir="`echo "$arg"            | sed -e 's/^[^=]*=//'`" ;;
+      --pid-file=*)  pid_file="`echo "$arg"           | sed -e 's/^[^=]*=//'`" ;;
+      --socket=*)    socket="`echo "$arg"             | sed -e 's/^[^=]*=//'`" ;;
+      --log-error=*) log_error="`echo "$arg"          | sed -e 's/^[^=]*=//'`" ;;
+      --user=*)      mysql_daemon_user="`echo "$arg"  | sed -e 's/^[^=]*=//'`" ;;
+      --group=*)     mysql_daemon_group="`echo "$arg" | sed -e 's/^[^=]*=//'`" ;;
     esac
   done
 }
@@ -260,10 +263,13 @@ else
 	log_base="`echo "$log_error" | sed 's|\.log$||'`"
 	[ "$log_base" \!= "$log_error" ] || log_base="/var/log/mysql/mysql"
 	log_upgrade="${log_base}-upgrade.log"
+	log_upgrade_run="${log_base}-upgrade-run.log"
 	log_query="${log_base}-query.log"
 
 	parse_arguments `$print_defaults $defaults mysqld mysql_server`
-	export TMPDIR=/var/tmp/mysql
+	mkdir -m 755 -p /var/run/mysql
+	chown $mysql_daemon_user:$mysql_daemon_group /var/run/mysql
+	export TEMPDIR="`cat /var/run/mysql/tmpdir 2> /dev/null`"
 
 	# Safeguard (relative paths, core dumps..)
 	cd "$basedir"
@@ -275,12 +281,15 @@ else
 		rc_status -v && rc_exit
 
 		# prepare tmp dir
-		rm -rf "$TMPDIR"
-		mkdir -p "$TMPDIR"
-		chown mysql:mysql "$TMPDIR"
-		chmod 755 "$TMPDIR"
-		[ "`ls -ld "$TMPDIR" | grep "^drwxr-xr-x[[:blank:]]\+[0-9]\+[[:blank:]]\+$mysql_daemon_user[[:blank:]]\+$mysql_daemon_group[[:blank:]]\+.*"`" ] || {
-			echo "Can't create secure $TMPDIR"
+		unset TMPDIR
+		if [ "$TEMPDIR" ] && [ -d "$TEMPDIR" ] && \
+			[ "`ls -ld "$TEMPDIR" | grep "^drwx------[\\.\+]\?[[:blank:]]\+[0-9]\+[[:blank:]]\+$mysql_daemon_user[[:blank:]]\+$mysql_daemon_group[[:blank:]]\+.*"`" ]; then
+			rm -rf "$TEMPDIR"
+		fi
+		TEMPDIR="`mktemp -d -p /var/tmp mysql.XXXXXX | tee /var/run/mysql/tmpdir`"
+		[ -z "$TEMPDIR" ] || chown "$mysql_daemon_user:$mysql_daemon_group" "$TEMPDIR"
+		[ "`ls -ld "$TEMPDIR" | grep "^drwx------[\\.\+]\?[[:blank:]]\+[0-9]\+[[:blank:]]\+$mysql_daemon_user[[:blank:]]\+$mysql_daemon_group[[:blank:]]\+.*"`" ] || {
+			echo "Can't create secure $TEMPDIR"
 			rc_failed; rc_status -v; rc_exit;
 		}
 
@@ -359,21 +368,22 @@ else
 			# us to run mysql_upgrade, we start a full-featured server with
 			# --skip-grant-tables and restict access to it by unix
 			# permissions of the named socket
-			protected=/var/run/mysql/protected
+			protected="`cat /var/run/mysql/protecteddir 2> /dev/null`"
 			if [ -d "$protected" ]; then
 				pid="`cat "$protected/mysqld.pid" 2> /dev/null`"
 				if [ "$pid" ] && [ -d "/proc/$pid" ] &&
 					[ "`readlink "/proc/$pid/exe" | grep "mysql"`" ]; then
 						echo "Can't update as another updating process is currently running" | tee -a "$log_upgrade"
 						echo "Please check process $pid and terminate it before restarting MySQL" | tee -a "$log_upgrade"
-						rc_failed; rc_status -v; rc_exit;					
+						rc_failed; rc_status -v; rc_exit;
+				else
+					rm -rf "$protected"
 				fi
 			fi
-			rm -rf "$protected"
-			mkdir -p "$protected"
-			chown "$mysql_daemon_user:$mysql_daemon_group" "$protected"
-			chmod 700 "$protected"
-			[ "`ls -ld "$protected" | grep "^drwx------[[:blank:]]\+[0-9]\+[[:blank:]]\+$mysql_daemon_user[[:blank:]]\+$mysql_daemon_group[[:blank:]]\+.*"`" ] || {
+			protected="`mktemp -d -p /var/tmp mysql-protected.XXXXXX | tee /var/run/mysql/protecteddir`"
+			export TMPDIR="$TEMPDIR"
+			[ -z "$protected" ] || chown "$mysql_daemon_user:$mysql_daemon_group" "$protected"
+			[ "`ls -ld "$protected" | grep "^drwx------[\\.\+]\?[[:blank:]]\+[0-9]\+[[:blank:]]\+$mysql_daemon_user[[:blank:]]\+$mysql_daemon_group[[:blank:]]\+.*"`" ] || {
 				echo "Can't create secure $protected" | tee -a "$log_upgrade"
 				rc_failed; rc_status -v; rc_exit;
 			}
@@ -382,20 +392,21 @@ else
 			$SAFE_MYSQLD \
 				--mysqld=${MYSQLD#/usr/sbin/} \
 				$debug_flags \
-				--datadir="$datadir" \
-				--skip-grant-tables \
 				--skip-networking \
+				--skip-grant-tables \
+				--datadir="$datadir" \
 				--user="$mysql_daemon_user" \
-				--pid-file="$protected/mysqld.pid" \
+				--log-error="$log_upgrade_run" \
 				--socket="$protected/mysql.sock" \
+				--pid-file="$protected/mysqld.pid" \
 				--group="$mysql_daemon_group" &>/dev/null &
 			wait_for_socket "$protected/mysql.sock" || {
 				echo "error: $protected/mysql.sock file didn't appeared... " | tee -a "$log_upgrade"
+				echo "       Try checking \"$log_upgrade_run\"... " | tee -a "$log_upgrade"
 				rc_failed; rc_status -v; rc_exit;
 			}
 			echo "Upgrading MySQL... " | tee -a "$log_upgrade"
 			/usr/bin/mysql_upgrade \
-				--basedir="$basedir" \
 				--socket="$protected/mysql.sock" | tee -a "$log_upgrade"
 			[ "$PIPESTATUS" -ne 0 ] && {
 				rc_failed; rc_status -v;
@@ -404,17 +415,15 @@ else
 			kill -TERM "`cat $protected/mysqld.pid`"
 			rm -rf "$protected"
 			# Fix ownerships and permissions for $datadir
-			chmod 755 "$datadir"
+			chmod 750 "$datadir"
 			chown -R "$mysql_daemon_user:$mysql_daemon_group" "$datadir"
 			rm -f "$datadir/.run-mysql_upgrade" \
 			"$datadir"/{update-stamp-*,mysql/stamp-4.1} # used in the past
-			if test -f "$datadir/mysql/stamp-4.1" ; then
-				rm "$datadir/mysql/stamp-4.1"
-			fi
-			chown mysql:mysql "$log_upgrade"
-			chmod 660 "$log_upgrade"
+			chown "$mysql_daemon_user:$mysql_daemon_group" "$log_upgrade"
+			chmod 640 "$log_upgrade"
 		fi 
 
+		export TMPDIR="$TEMPDIR"
 
 		echo -n "Starting service MySQL "
 		
@@ -439,8 +448,10 @@ else
 	    stop)
 		echo -n "Shutting down service MySQL "
 		kill_mysql
-		rm -rf "$TMPDIR"
-
+		if [ "$TEMPDIR" ] && [ -d "$TEMPDIR" ] && \
+			[ "`ls -ld "$TEMPDIR" | grep "^drwx------[\\.\+]\?[[:blank:]]\+[0-9]\+[[:blank:]]\+$mysql_daemon_user[[:blank:]]\+$mysql_daemon_group[[:blank:]]\+.*"`" ]; then
+			rm -rf "$TEMPDIR"
+		fi
 		# Remember status and be verbose
 		rc_status -v
 		;;
openSUSE Build Service is sponsored by