Merge the fix for bug#55015.
This commit is contained in:
commit
48bc7c028d
@ -266,7 +266,7 @@ Summary: MySQL: a very fast and reliable SQL database server
|
||||
Group: Applications/Databases
|
||||
Requires: %{distro_requires}
|
||||
Provides: msqlormysql mysql-server mysql MySQL MySQL-server
|
||||
Obsoletes: MySQL mysql mysql-server MySQL-server
|
||||
Obsoletes: MySQL mysql mysql-server MySQL-server MySQL-server-community
|
||||
|
||||
%description -n MySQL-server%{product_suffix}
|
||||
The MySQL(TM) software delivers a very fast, multi-threaded, multi-user,
|
||||
@ -296,7 +296,7 @@ package "MySQL-client%{product_suffix}" as well!
|
||||
%package -n MySQL-client%{product_suffix}
|
||||
Summary: MySQL - Client
|
||||
Group: Applications/Databases
|
||||
Obsoletes: mysql-client MySQL-client
|
||||
Obsoletes: mysql-client MySQL-client MySQL-client-community
|
||||
Provides: mysql-client MySQL-client
|
||||
|
||||
%description -n MySQL-client%{product_suffix}
|
||||
@ -310,7 +310,7 @@ Requires: MySQL-client%{product_suffix} perl
|
||||
Summary: MySQL - Test suite
|
||||
Group: Applications/Databases
|
||||
Provides: mysql-test
|
||||
Obsoletes: mysql-bench mysql-test
|
||||
Obsoletes: mysql-bench mysql-test MySQL-test-community
|
||||
AutoReqProv: no
|
||||
|
||||
%description -n MySQL-test%{product_suffix}
|
||||
@ -323,7 +323,7 @@ For a description of MySQL see the base MySQL RPM or http://www.mysql.com/
|
||||
Summary: MySQL - Development header files and libraries
|
||||
Group: Applications/Databases
|
||||
Provides: mysql-devel
|
||||
Obsoletes: mysql-devel
|
||||
Obsoletes: mysql-devel MySQL-devel-community
|
||||
|
||||
%description -n MySQL-devel%{product_suffix}
|
||||
This package contains the development header files and libraries necessary
|
||||
@ -335,6 +335,7 @@ For a description of MySQL see the base MySQL RPM or http://www.mysql.com/
|
||||
%package -n MySQL-shared%{product_suffix}
|
||||
Summary: MySQL - Shared libraries
|
||||
Group: Applications/Databases
|
||||
Obsoletes: MySQL-shared-community
|
||||
|
||||
%description -n MySQL-shared%{product_suffix}
|
||||
This package contains the shared libraries (*.so*) which certain languages
|
||||
@ -345,7 +346,7 @@ and applications need to dynamically load and use MySQL.
|
||||
Summary: MySQL - embedded library
|
||||
Group: Applications/Databases
|
||||
Requires: MySQL-devel%{product_suffix}
|
||||
Obsoletes: mysql-embedded
|
||||
Obsoletes: mysql-embedded MySQL-embedded-community
|
||||
|
||||
%description -n MySQL-embedded%{product_suffix}
|
||||
This package contains the MySQL server as an embedded library.
|
||||
@ -521,6 +522,9 @@ rm -f $RBR%{_mandir}/man1/make_win_bin_dist.1*
|
||||
##############################################################################
|
||||
|
||||
%pre -n MySQL-server%{product_suffix}
|
||||
|
||||
# ATTENTION: Parts of this are duplicated in the "triggerpostun" !
|
||||
|
||||
mysql_datadir=%{mysqldatadir}
|
||||
# Check if we can safely upgrade. An upgrade is only safe if it's from one
|
||||
# of our RPMs in the same version family.
|
||||
@ -669,6 +673,9 @@ if [ -x %{_sysconfdir}/init.d/mysql ] ; then
|
||||
fi
|
||||
|
||||
%post -n MySQL-server%{product_suffix}
|
||||
|
||||
# ATTENTION: Parts of this are duplicated in the "triggerpostun" !
|
||||
|
||||
mysql_datadir=%{mysqldatadir}
|
||||
NEW_VERSION=%{mysql_version}-%{release}
|
||||
STATUS_FILE=$mysql_datadir/RPM_UPGRADE_MARKER
|
||||
@ -697,12 +704,12 @@ if [ ! -d $mysql_datadir/test ] ; then mkdir $mysql_datadir/test; fi
|
||||
# ----------------------------------------------------------------------
|
||||
# NOTE: This still needs to be debated. Should we check whether these links
|
||||
# for the other run levels exist(ed) before the upgrade?
|
||||
# use insserv for older SuSE Linux versions
|
||||
if [ -x /sbin/insserv ] ; then
|
||||
/sbin/insserv %{_sysconfdir}/init.d/mysql
|
||||
# use chkconfig on Enterprise Linux and newer SuSE releases
|
||||
elif [ -x /sbin/chkconfig ] ; then
|
||||
if [ -x /sbin/chkconfig ] ; then
|
||||
/sbin/chkconfig --add mysql
|
||||
# use insserv for older SuSE Linux versions
|
||||
elif [ -x /sbin/insserv ] ; then
|
||||
/sbin/insserv %{_sysconfdir}/init.d/mysql
|
||||
fi
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
@ -783,12 +790,9 @@ if [ "$SERVER_TO_START" = "true" ] ; then
|
||||
# Restart in the same way that mysqld will be started normally.
|
||||
if [ -x %{_sysconfdir}/init.d/mysql ] ; then
|
||||
%{_sysconfdir}/init.d/mysql start
|
||||
echo "Giving mysqld 2 seconds to start"
|
||||
sleep 2
|
||||
echo "Giving mysqld 5 seconds to start"
|
||||
sleep 5
|
||||
fi
|
||||
|
||||
# Allow mysqld_safe to start mysqld and print a message before we exit
|
||||
sleep 2
|
||||
fi
|
||||
|
||||
# Collect an upgrade history ...
|
||||
@ -797,7 +801,7 @@ echo >> $STATUS_FILE
|
||||
echo "=====" >> $STATUS_FILE
|
||||
STATUS_HISTORY=$mysql_datadir/RPM_UPGRADE_HISTORY
|
||||
cat $STATUS_FILE >> $STATUS_HISTORY
|
||||
rm $STATUS_FILE
|
||||
mv -f $STATUS_FILE ${STATUS_FILE}-LAST # for "triggerpostun"
|
||||
|
||||
|
||||
#echo "Thank you for installing the MySQL Community Server! For Production
|
||||
@ -808,17 +812,26 @@ rm $STATUS_FILE
|
||||
|
||||
%preun -n MySQL-server%{product_suffix}
|
||||
|
||||
# Which '$1' does this refer to? Fedora docs have info:
|
||||
# " ... a count of the number of versions of the package that are installed.
|
||||
# Action Count
|
||||
# Install the first time 1
|
||||
# Upgrade 2 or higher (depending on the number of versions installed)
|
||||
# Remove last version of package 0 "
|
||||
#
|
||||
# http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch09s04s05.html
|
||||
|
||||
if [ $1 = 0 ] ; then
|
||||
# Stop MySQL before uninstalling it
|
||||
if [ -x %{_sysconfdir}/init.d/mysql ] ; then
|
||||
%{_sysconfdir}/init.d/mysql stop > /dev/null
|
||||
# Remove autostart of MySQL
|
||||
# For older SuSE Linux versions
|
||||
if [ -x /sbin/insserv ] ; then
|
||||
/sbin/insserv -r %{_sysconfdir}/init.d/mysql
|
||||
# use chkconfig on Enterprise Linux and newer SuSE releases
|
||||
elif [ -x /sbin/chkconfig ] ; then
|
||||
if [ -x /sbin/chkconfig ] ; then
|
||||
/sbin/chkconfig --del mysql
|
||||
# For older SuSE Linux versions
|
||||
elif [ -x /sbin/insserv ] ; then
|
||||
/sbin/insserv -r %{_sysconfdir}/init.d/mysql
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
@ -826,6 +839,56 @@ fi
|
||||
# We do not remove the mysql user since it may still own a lot of
|
||||
# database files.
|
||||
|
||||
%triggerpostun -n MySQL-server%{product_suffix} --MySQL-server-community
|
||||
|
||||
# Setup: We renamed this package, so any existing "server-community"
|
||||
# package will be removed when this "server" is installed.
|
||||
# Problem: RPM will first run the "pre" and "post" sections of this script,
|
||||
# and only then the "preun" of that old community server.
|
||||
# But this "preun" includes stopping the server and uninstalling the service,
|
||||
# "chkconfig --del mysql" which removes the symlinks to the start script.
|
||||
# Solution: *After* the community server got removed, restart this server
|
||||
# and re-install the service.
|
||||
#
|
||||
# For information about triggers in spec files, see the Fedora docs:
|
||||
# http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch10s02.html
|
||||
# For all details of this code, see the "pre" and "post" sections.
|
||||
|
||||
mysql_datadir=%{mysqldatadir}
|
||||
NEW_VERSION=%{mysql_version}-%{release}
|
||||
STATUS_FILE=$mysql_datadir/RPM_UPGRADE_MARKER-LAST # Note the difference!
|
||||
STATUS_HISTORY=$mysql_datadir/RPM_UPGRADE_HISTORY
|
||||
|
||||
if [ -f $STATUS_FILE ] ; then
|
||||
SERVER_TO_START=`grep '^SERVER_TO_START=' $STATUS_FILE | cut -c17-`
|
||||
else
|
||||
# This should never happen, but let's be prepared
|
||||
SERVER_TO_START=''
|
||||
fi
|
||||
echo "Analyzed: SERVER_TO_START=$SERVER_TO_START"
|
||||
|
||||
if [ -x /sbin/chkconfig ] ; then
|
||||
/sbin/chkconfig --add mysql
|
||||
# use insserv for older SuSE Linux versions
|
||||
elif [ -x /sbin/insserv ] ; then
|
||||
/sbin/insserv %{_sysconfdir}/init.d/mysql
|
||||
fi
|
||||
|
||||
# Was the server running before the upgrade? If so, restart the new one.
|
||||
if [ "$SERVER_TO_START" = "true" ] ; then
|
||||
# Restart in the same way that mysqld will be started normally.
|
||||
if [ -x %{_sysconfdir}/init.d/mysql ] ; then
|
||||
%{_sysconfdir}/init.d/mysql start
|
||||
echo "Giving mysqld 5 seconds to start"
|
||||
sleep 5
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Trigger 'postun --community' finished at `date`" >> $STATUS_HISTORY
|
||||
echo >> $STATUS_HISTORY
|
||||
echo "=====" >> $STATUS_HISTORY
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Clean up the BuildRoot after build is done
|
||||
# ----------------------------------------------------------------------
|
||||
@ -1012,6 +1075,13 @@ fi
|
||||
# merging BK trees)
|
||||
##############################################################################
|
||||
%changelog
|
||||
* Wed Aug 11 2010 Joerg Bruehe <joerg.bruehe@oracle.com>
|
||||
|
||||
- With a recent spec file cleanup, names have changed: A "-community" part was dropped.
|
||||
Reflect that in the "Obsoletes" specifications.
|
||||
- Add a "triggerpostun" to handle the uninstall of the "-community" server RPM.
|
||||
- This fixes bug#55015 "MySQL server is not restarted properly after RPM upgrade".
|
||||
|
||||
* Tue Jun 15 2010 Joerg Bruehe <joerg.bruehe@sun.com>
|
||||
|
||||
- Change the behaviour on installation and upgrade:
|
||||
|
Loading…
x
Reference in New Issue
Block a user