Commit 49652079 authored by Joerg Bruehe's avatar Joerg Bruehe

Merge the fix for bug#55015.

parents 1be8280b 20f9faea
...@@ -266,7 +266,7 @@ Summary: MySQL: a very fast and reliable SQL database server ...@@ -266,7 +266,7 @@ Summary: MySQL: a very fast and reliable SQL database server
Group: Applications/Databases Group: Applications/Databases
Requires: %{distro_requires} Requires: %{distro_requires}
Provides: msqlormysql mysql-server mysql MySQL MySQL-server 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} %description -n MySQL-server%{product_suffix}
The MySQL(TM) software delivers a very fast, multi-threaded, multi-user, The MySQL(TM) software delivers a very fast, multi-threaded, multi-user,
...@@ -296,7 +296,7 @@ package "MySQL-client%{product_suffix}" as well! ...@@ -296,7 +296,7 @@ package "MySQL-client%{product_suffix}" as well!
%package -n MySQL-client%{product_suffix} %package -n MySQL-client%{product_suffix}
Summary: MySQL - Client Summary: MySQL - Client
Group: Applications/Databases Group: Applications/Databases
Obsoletes: mysql-client MySQL-client Obsoletes: mysql-client MySQL-client MySQL-client-community
Provides: mysql-client MySQL-client Provides: mysql-client MySQL-client
%description -n MySQL-client%{product_suffix} %description -n MySQL-client%{product_suffix}
...@@ -310,7 +310,7 @@ Requires: MySQL-client%{product_suffix} perl ...@@ -310,7 +310,7 @@ Requires: MySQL-client%{product_suffix} perl
Summary: MySQL - Test suite Summary: MySQL - Test suite
Group: Applications/Databases Group: Applications/Databases
Provides: mysql-test Provides: mysql-test
Obsoletes: mysql-bench mysql-test Obsoletes: mysql-bench mysql-test MySQL-test-community
AutoReqProv: no AutoReqProv: no
%description -n MySQL-test%{product_suffix} %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/ ...@@ -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 Summary: MySQL - Development header files and libraries
Group: Applications/Databases Group: Applications/Databases
Provides: mysql-devel Provides: mysql-devel
Obsoletes: mysql-devel Obsoletes: mysql-devel MySQL-devel-community
%description -n MySQL-devel%{product_suffix} %description -n MySQL-devel%{product_suffix}
This package contains the development header files and libraries necessary 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/ ...@@ -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} %package -n MySQL-shared%{product_suffix}
Summary: MySQL - Shared libraries Summary: MySQL - Shared libraries
Group: Applications/Databases Group: Applications/Databases
Obsoletes: MySQL-shared-community
%description -n MySQL-shared%{product_suffix} %description -n MySQL-shared%{product_suffix}
This package contains the shared libraries (*.so*) which certain languages This package contains the shared libraries (*.so*) which certain languages
...@@ -345,7 +346,7 @@ and applications need to dynamically load and use MySQL. ...@@ -345,7 +346,7 @@ and applications need to dynamically load and use MySQL.
Summary: MySQL - embedded library Summary: MySQL - embedded library
Group: Applications/Databases Group: Applications/Databases
Requires: MySQL-devel%{product_suffix} Requires: MySQL-devel%{product_suffix}
Obsoletes: mysql-embedded Obsoletes: mysql-embedded MySQL-embedded-community
%description -n MySQL-embedded%{product_suffix} %description -n MySQL-embedded%{product_suffix}
This package contains the MySQL server as an embedded library. This package contains the MySQL server as an embedded library.
...@@ -521,6 +522,9 @@ rm -f $RBR%{_mandir}/man1/make_win_bin_dist.1* ...@@ -521,6 +522,9 @@ rm -f $RBR%{_mandir}/man1/make_win_bin_dist.1*
############################################################################## ##############################################################################
%pre -n MySQL-server%{product_suffix} %pre -n MySQL-server%{product_suffix}
# ATTENTION: Parts of this are duplicated in the "triggerpostun" !
mysql_datadir=%{mysqldatadir} mysql_datadir=%{mysqldatadir}
# Check if we can safely upgrade. An upgrade is only safe if it's from one # Check if we can safely upgrade. An upgrade is only safe if it's from one
# of our RPMs in the same version family. # of our RPMs in the same version family.
...@@ -669,6 +673,9 @@ if [ -x %{_sysconfdir}/init.d/mysql ] ; then ...@@ -669,6 +673,9 @@ if [ -x %{_sysconfdir}/init.d/mysql ] ; then
fi fi
%post -n MySQL-server%{product_suffix} %post -n MySQL-server%{product_suffix}
# ATTENTION: Parts of this are duplicated in the "triggerpostun" !
mysql_datadir=%{mysqldatadir} mysql_datadir=%{mysqldatadir}
NEW_VERSION=%{mysql_version}-%{release} NEW_VERSION=%{mysql_version}-%{release}
STATUS_FILE=$mysql_datadir/RPM_UPGRADE_MARKER STATUS_FILE=$mysql_datadir/RPM_UPGRADE_MARKER
...@@ -697,12 +704,12 @@ if [ ! -d $mysql_datadir/test ] ; then mkdir $mysql_datadir/test; fi ...@@ -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 # NOTE: This still needs to be debated. Should we check whether these links
# for the other run levels exist(ed) before the upgrade? # 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 # use chkconfig on Enterprise Linux and newer SuSE releases
elif [ -x /sbin/chkconfig ] ; then if [ -x /sbin/chkconfig ] ; then
/sbin/chkconfig --add mysql /sbin/chkconfig --add mysql
# use insserv for older SuSE Linux versions
elif [ -x /sbin/insserv ] ; then
/sbin/insserv %{_sysconfdir}/init.d/mysql
fi fi
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
...@@ -783,12 +790,9 @@ if [ "$SERVER_TO_START" = "true" ] ; then ...@@ -783,12 +790,9 @@ if [ "$SERVER_TO_START" = "true" ] ; then
# Restart in the same way that mysqld will be started normally. # Restart in the same way that mysqld will be started normally.
if [ -x %{_sysconfdir}/init.d/mysql ] ; then if [ -x %{_sysconfdir}/init.d/mysql ] ; then
%{_sysconfdir}/init.d/mysql start %{_sysconfdir}/init.d/mysql start
echo "Giving mysqld 2 seconds to start" echo "Giving mysqld 5 seconds to start"
sleep 2 sleep 5
fi fi
# Allow mysqld_safe to start mysqld and print a message before we exit
sleep 2
fi fi
# Collect an upgrade history ... # Collect an upgrade history ...
...@@ -797,7 +801,7 @@ echo >> $STATUS_FILE ...@@ -797,7 +801,7 @@ echo >> $STATUS_FILE
echo "=====" >> $STATUS_FILE echo "=====" >> $STATUS_FILE
STATUS_HISTORY=$mysql_datadir/RPM_UPGRADE_HISTORY STATUS_HISTORY=$mysql_datadir/RPM_UPGRADE_HISTORY
cat $STATUS_FILE >> $STATUS_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 #echo "Thank you for installing the MySQL Community Server! For Production
...@@ -808,17 +812,26 @@ rm $STATUS_FILE ...@@ -808,17 +812,26 @@ rm $STATUS_FILE
%preun -n MySQL-server%{product_suffix} %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 if [ $1 = 0 ] ; then
# Stop MySQL before uninstalling it # Stop MySQL before uninstalling it
if [ -x %{_sysconfdir}/init.d/mysql ] ; then if [ -x %{_sysconfdir}/init.d/mysql ] ; then
%{_sysconfdir}/init.d/mysql stop > /dev/null %{_sysconfdir}/init.d/mysql stop > /dev/null
# Remove autostart of MySQL # 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 # use chkconfig on Enterprise Linux and newer SuSE releases
elif [ -x /sbin/chkconfig ] ; then if [ -x /sbin/chkconfig ] ; then
/sbin/chkconfig --del mysql /sbin/chkconfig --del mysql
# For older SuSE Linux versions
elif [ -x /sbin/insserv ] ; then
/sbin/insserv -r %{_sysconfdir}/init.d/mysql
fi fi
fi fi
fi fi
...@@ -826,6 +839,56 @@ fi ...@@ -826,6 +839,56 @@ fi
# We do not remove the mysql user since it may still own a lot of # We do not remove the mysql user since it may still own a lot of
# database files. # 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 # Clean up the BuildRoot after build is done
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
...@@ -1012,6 +1075,13 @@ fi ...@@ -1012,6 +1075,13 @@ fi
# merging BK trees) # merging BK trees)
############################################################################## ##############################################################################
%changelog %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> * Tue Jun 15 2010 Joerg Bruehe <joerg.bruehe@sun.com>
- Change the behaviour on installation and upgrade: - Change the behaviour on installation and upgrade:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment