# TODO:
+# - make response_time_distribution.patch compatible with i386 alpha sparc ppc arches
+# - mysqldump ... (invalid usage) prints to stdout not stderr (idiotic if you want to create dump and get usage in .sql)
# - unpackaged:
# /usr/bin/mysqlaccess.conf
-# /usr/data/mysql/.empty
-# /usr/data/test/.empty
# - http://bugs.mysql.com/bug.php?id=16470
# - innodb are dynamic (= as plugins) ?
# - missing have_archive, have_merge
Summary(uk.UTF-8): MySQL - швидкий SQL-сервер
Summary(zh_CN.UTF-8): MySQL数据库服务器
Name: mysql
-Version: 5.5.8
-Release: 2
+Version: 5.5.13
+Release: 5
License: GPL + MySQL FLOSS Exception
Group: Applications/Databases
# Source0Download: http://dev.mysql.com/downloads/mysql/5.5.html#downloads
Source0: http://vesta.informatik.rwth-aachen.de/mysql/Downloads/MySQL-5.5/%{name}-%{version}.tar.gz
-# Source0-md5: 42e866302b61f5e213afd33e04677017
+# Source0-md5: f0e519e90ee7c00fceb0730edf859d7b
Source100: http://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz
# Source100-md5: 7b9b618cb9b378f949bb1b91ddcc4f54
Source1: %{name}.init
Source15: lib%{name}.version
Patch2: %{name}-c++.patch
Patch3: %{name}-info.patch
-Patch4: %{name}-sql-cxx-pic.patch
# from fedora
Patch5: %{name}-versioning.patch
Patch6: %{name}-system-users.patch
Patch7: %{name}-bug-34192.patch
Patch8: %{name}-client-config.patch
Patch9: %{name}-build.patch
-Patch10: %{name}-alpha.patch
Patch11: %{name}-upgrade.patch
Patch12: %{name}-config.patch
Patch14: %{name}-bug-43594.patch
Patch18: %{name}-sphinx.patch
Patch19: %{name}-chain-certs.patch
-# <percona patches, http://bazaar.launchpad.net/~percona-dev/percona-server/5.5.8/files>
-# series file shows the order of patches
+# from fedora
+Patch20: %{name}-dubious-exports.patch
+# <percona patches, updated with percona.sh>
Patch100: microsec_process.patch
Patch101: optimizer_fix.patch
-Patch102: %{name}_dump_ignore_ct.patch
+Patch102: mysql_dump_ignore_ct.patch
Patch103: control_online_alter_index.patch
Patch104: show_temp.patch
Patch105: innodb_show_status.patch
Patch138: remove_fcntl_excessive_calls.patch
Patch139: sql_no_fcache.patch
Patch140: show_slave_status_nolock.patch
-Patch141: log_warnings_silence.patch
+Patch141: log_warnings_suppress.patch
Patch142: userstat.patch
Patch143: bug580324.patch
Patch144: mysql_remove_eol_carret.patch
-Patch145: mysql-test.diff
+Patch145: processlist_row_stats.patch
+Patch146: innodb_expand_fast_index_creation.patch
+Patch147: innodb_bug60788.patch
+Patch148: start-stop-messages.patch
+Patch149: file-contents.patch
+Patch150: slave_timeout_fix.patch
# </percona>
URL: http://www.mysql.com/products/community/
BuildRequires: bison
Summary: MySQL additional utilities
Summary(pl.UTF-8): Dodatkowe narzędzia do MySQL
Group: Applications/Databases
+Requires: %{name}-client = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
%description extras
%package libs
Summary: Shared libraries for MySQL
-Summary(pl.UTF-8): Biblioteki dzielone MySQL
+Summary(pl.UTF-8): Biblioteki współdzielone MySQL
Group: Libraries
Obsoletes: libmysql10
Obsoletes: mysql-doc < 4.1.12
Shared libraries for MySQL.
%description libs -l pl.UTF-8
-Biblioteki dzielone MySQL.
+Biblioteki współdzielone MySQL.
%package devel
-Summary: MySQL - Development header files and libraries
-Summary(pl.UTF-8): MySQL - Pliki nagłówkowe i biblioteki dla programistów
+Summary: MySQL - development header files and other files
+Summary(pl.UTF-8): MySQL - Pliki nagłówkowe i inne dla programistów
Summary(pt.UTF-8): MySQL - Medições de desempenho
Summary(ru.UTF-8): MySQL - хедеры и библиотеки разработчика
Summary(uk.UTF-8): MySQL - хедери та бібліотеки програміста
Obsoletes: libmysql10-devel
%description devel
-This package contains the development header files and libraries
+This package contains the development header files and other files
necessary to develop MySQL client applications.
%description devel -l fr.UTF-8
MySQL.
%description devel -l pl.UTF-8
-Pliki nagłówkowe i biblioteki konieczne do kompilacji aplikacji
+Pliki nagłówkowe i inne pliki konieczne do kompilacji aplikacji
klienckich MySQL.
%description devel -l pt_BR.UTF-8
%endif
#%patch2 -p1 # NEEDS CHECK, which exact program needs -lc++
%patch3 -p1
-%ifarch alpha
-# this is strange: mysqld functions for UDF modules are not explicitly defined,
-# so -rdynamic is used; in such case gcc3+ld on alpha doesn't like C++ vtables
-# in objects compiled without -fPIC
-%patch4 -p1
-# gcc 3.3.x ICE
-%patch10 -p1
-%endif
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch12 -p1
%patch14 -p0
%patch19 -p1
+%patch20 -p1
# <percona %patches>
%patch100 -p1
%patch101 -p1
-#%patch102 -p1
+%patch102 -p1
%patch103 -p1
%patch104 -p1
%patch105 -p1
%patch143 -p1
%patch144 -p1
%patch145 -p1
+%patch146 -p1
+%patch147 -p1
+%patch148 -p1
+%patch149 -p1
+%patch150 -p1
# </percona>
# to get these files rebuild
cp -a %{SOURCE15} libmysql/libmysql.version
%cmake \
+ -DCMAKE_BUILD_TYPE=%{!?debug:RelWithDebInfo}%{?debug:Debug} \
-DFEATURE_SET="community" \
- -DCMAKE_C_FLAGS_RELEASE="%{rpmcflags} -DNDEBUG" \
- -DCMAKE_CXX_FLAGS_RELEASE="%{rpmcxxflags} -DNDEBUG" \
+ -DCMAKE_C_FLAGS_RELEASE="%{rpmcflags} -DNDEBUG -fno-omit-frame-pointer -fno-strict-aliasing" \
+ -DCMAKE_CXX_FLAGS_RELEASE="%{rpmcxxflags} -DNDEBUG -fno-omit-frame-pointer -fno-strict-aliasing" \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
%{?debug:-DWITH_DEBUG=ON} \
-DWITH_FAST_MUTEXES=ON \
+ -DWITH_PIC=ON \
-DWITH_LIBEDIT=OFF \
-DWITH_READLINE=OFF \
%if "%{pld_release}" == "ac"
-DWITH_ZLIB=system \
-DCOMPILATION_COMMENT="PLD/Linux Distribution MySQL RPM" \
-DWITH_LIBWRAP=%{?with_tcpd:ON}%{!?with_tcpd:OFF} \
+ -DWITH_UNIT_TESTS=%{?with_tests:ON}%{!?with_tests:OFF} \
-DCURSES_INCLUDE_PATH=/usr/include/ncurses \
-DMYSQL_UNIX_ADDR=/var/lib/%{name}/%{name}.sock \
-DINSTALL_LAYOUT=RPM \
%endif
# symlinks point to the .so file, fix it
-ln -sf libmysqlclient.so.16 $RPM_BUILD_ROOT%{_libdir}/libmysqlclient_r.so.16
-ln -sf libmysqlclient.so.16.0.0 $RPM_BUILD_ROOT%{_libdir}/libmysqlclient_r.so.16.0.0
+ln -sf libmysqlclient.so.18 $RPM_BUILD_ROOT%{_libdir}/libmysqlclient_r.so.18
+ln -sf libmysqlclient.so.18.0.0 $RPM_BUILD_ROOT%{_libdir}/libmysqlclient_r.so.18.0.0
sed -i -e 's,/usr//usr,%{_prefix},g' $RPM_BUILD_ROOT%{_bindir}/mysql_config
sed -i -e '/libs/s/$ldflags//' $RPM_BUILD_ROOT%{_bindir}/mysql_config
# remove known unpackaged files
-rm -rf $RPM_BUILD_ROOT%{_datadir}/mysql-support
-
-# remove .txt variants for .sys messages
-rm -f $RPM_BUILD_ROOT%{_datadir}/%{name}/*/*.txt
+%{__rm} -r $RPM_BUILD_ROOT%{_datadir}/mysql-support
# rename not to be so generic name
mv $RPM_BUILD_ROOT%{_bindir}/{,mysql_}resolve_stack_dump
mv $RPM_BUILD_ROOT%{_mandir}/man1/{,mysql_}resolve_stack_dump.1
# not useful without -debug build
-%{!?debug:rm -f $RPM_BUILD_ROOT%{_bindir}/mysql_resolve_stack_dump}
-%{!?debug:rm -f $RPM_BUILD_ROOT%{_mandir}/man1/mysql_resolve_stack_dump.1}
+%{!?debug:%{__rm} $RPM_BUILD_ROOT%{_bindir}/mysql_resolve_stack_dump}
+%{!?debug:%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mysql_resolve_stack_dump.1}
# generate symbols file, so one can generate backtrace using it
# mysql_resolve_stack_dump -s %{_datadir}/%{name}/mysqld.sym -n mysqld.stack.
# http://dev.mysql.com/doc/refman/5.0/en/using-stack-trace.html
mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/mysqlcheck
# delete - functionality in initscript / rpm
-# mysql_install_db is needed by digikam
-#rm $RPM_BUILD_ROOT%{_bindir}/mysql_install_db
-#rm $RPM_BUILD_ROOT%{_mandir}/man1/mysql_install_db.1*
-rm $RPM_BUILD_ROOT%{_bindir}/mysqld_safe
-rm $RPM_BUILD_ROOT%{_bindir}/mysqld_multi
-rm $RPM_BUILD_ROOT%{_mandir}/man1/mysqld_{multi,safe}*
+# note: mysql_install_db (and thus resolveip) are needed by digikam
+%{__rm} $RPM_BUILD_ROOT%{_bindir}/mysqld_safe
+%{__rm} $RPM_BUILD_ROOT%{_bindir}/mysqld_multi
+%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mysqld_{multi,safe}*
#rm $RPM_BUILD_ROOT%{_datadir}/%{name}/mysql-log-rotate
#rm $RPM_BUILD_ROOT%{_datadir}/%{name}/mysql.server
#rm $RPM_BUILD_ROOT%{_datadir}/%{name}/binary-configure
-rm $RPM_BUILD_ROOT%{_datadir}/%{name}/errmsg-utf8.txt
-rm $RPM_BUILD_ROOT%{_bindir}/mysql_waitpid
-rm $RPM_BUILD_ROOT%{_mandir}/man1/mysql_waitpid.1*
-rm $RPM_BUILD_ROOT%{_mandir}/man1/mysql.server*
-rm $RPM_BUILD_ROOT%{_mandir}/man1/mysqlman.1*
-rm $RPM_BUILD_ROOT%{_bindir}/resolveip
-rm $RPM_BUILD_ROOT%{_mandir}/man1/resolveip.1*
-rm $RPM_BUILD_ROOT%{_mandir}/man1/comp_err.1*
+%{__rm} $RPM_BUILD_ROOT%{_datadir}/%{name}/errmsg-utf8.txt
+%{__rm} $RPM_BUILD_ROOT%{_bindir}/mysql_waitpid
+%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mysql_waitpid.1*
+%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mysql.server*
+%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mysqlman.1*
+%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/comp_err.1*
# we don't package those (we have no -test or -testsuite pkg) and some of them just segfault
-rm $RPM_BUILD_ROOT%{_bindir}/mysql_client_test
-rm $RPM_BUILD_ROOT%{_mandir}/man1/mysql_client_test.1*
-rm $RPM_BUILD_ROOT%{_mandir}/man1/mysql_client_test_embedded.1*
-rm $RPM_BUILD_ROOT%{_mandir}/man1/mysql-stress-test.pl.1*
-rm $RPM_BUILD_ROOT%{_mandir}/man1/mysql-test-run.pl.1*
+%{__rm} $RPM_BUILD_ROOT%{_bindir}/mysql_client_test
+%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mysql_client_test.1*
+%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mysql_client_test_embedded.1*
+%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mysql-stress-test.pl.1*
+%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mysql-test-run.pl.1*
+%{__rm} -r $RPM_BUILD_ROOT%{_datadir}/mysql-test
# not needed
-rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}/plugin/libdaemon_example.*
-rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}/plugin/ha_example.*
-rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}/plugin/sphinx.{a,la}
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/plugin/libdaemon_example.*
%clean
rm -rf $RPM_BUILD_ROOT
%post
[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
+/sbin/ldconfig
/sbin/chkconfig --add mysql
%service mysql restart
%postun
[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
+/sbin/ldconfig
if [ "$1" = "0" ]; then
%userremove mysql
echo 'You should run MySQL upgrade script *after* restarting MySQL server for all MySQL clusters.'
echo 'Thus, you should invoke:'
for config in $configs; do
+ sed -i -e '
+ s/set-variable\s*=\s* //
+ # use # as comment in config
+ s/^;/#/
+ ' $config
+
datadir=$(awk -F= '!/^#/ && $1 ~ /datadir/{print $2}' $config | xargs)
echo "# mysql_upgrade --datadir=$datadir"
done
) | %banner -e %{name}-5.1
+%triggerpostun -- mysql < 5.5.0
+configs=""
+for config in $(awk -F= '!/^#/ && /=/{print $1}' /etc/%{name}/clusters.conf); do
+ if echo "$config" | grep -q '^/'; then
+ config_file="$config"
+ elif [ -f "/etc/%{name}/$config" ]; then
+ config_file=/etc/%{name}/$config
+ else
+ clusterdir=$(awk -F= "/^$config/{print \$2}" /etc/%{name}/clusters.conf)
+ if [ -z "$clusterdir" ]; then
+ echo >&2 "Can't find cluster dir for $config!"
+ echo >&2 "Please remove extra (leading) spaces from /etc/%{name}/clusters.conf"
+ exit 1
+ fi
+ config_file="$clusterdir/mysqld.conf"
+ fi
+
+ if [ ! -f "$config_file" ]; then
+ echo >&2 "ERROR: Can't find real config file for $config! Please report this (with above errors, if any) to http://bugs.pld-linux.org/"
+ continue
+ fi
+ configs="$configs $config_file"
+done
+
+(
+echo 'You should run MySQL upgrade script *after* restarting MySQL server for all MySQL clusters.'
+echo 'Thus, you should invoke:'
+for config in $configs; do
+ sed -i -e '
+ s/^language *= *polish/lc-messages = pl_PL/i
+ s/set-variable\s*=\s* //
+ s/^skip-locking/skip-external-locking/
+ # this is not valid for server. it is client option
+ s/default-character-set/# client-config: &/
+ # use # as comment in config
+ s/^;/#/
+ ' $config
+
+ datadir=$(awk -F= '!/^#/ && $1 ~ /datadir/{print $2}' $config | xargs)
+ echo "# mysql_upgrade --datadir=$datadir"
+done
+) | %banner -e %{name}-5.5
+
%files
%defattr(644,root,root,755)
%doc build/support-files/*.cnf build/support-files/*.ini
%attr(755,root,root) %{_sbindir}/mysql_upgrade
%attr(755,root,root) %{_sbindir}/mysqlcheck
%attr(755,root,root) %{_sbindir}/mysqld
-%attr(755,root,root) %{_bindir}/mysql_install_db
%dir %{_libdir}/%{name}
%dir %{_libdir}/%{name}/plugin
%attr(755,root,root) %{_libdir}/%{name}/plugin/adt_null.so
%if %{with sphinx}
%attr(755,root,root) %{_libdir}/%{name}/plugin/sphinx.so
%endif
+# for plugins
+%attr(755,root,root) %{_libdir}/libmysqlservices.so
%{_mandir}/man1/innochecksum.1*
%{_mandir}/man1/my_print_defaults.1*
%{_mandir}/man1/myisamchk.1*
%{_mandir}/man1/myisamlog.1*
%{_mandir}/man1/myisampack.1*
#%{_mandir}/man1/mysql_fix_privilege_tables.1*
-%{_mandir}/man1/mysql_install_db.1*
%{_mandir}/man1/mysql_upgrade.1*
%{_mandir}/man1/mysqlcheck.1*
%{_mandir}/man8/mysqld.8*
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/msql2mysql
%attr(755,root,root) %{_bindir}/myisam_ftdump
+%attr(755,root,root) %{_bindir}/mysql_install_db
%attr(755,root,root) %{_bindir}/mysql_secure_installation
%attr(755,root,root) %{_bindir}/mysql_tzinfo_to_sql
%attr(755,root,root) %{_bindir}/perror
%attr(755,root,root) %{_bindir}/replace
+%attr(755,root,root) %{_bindir}/resolveip
%{_mandir}/man1/msql2mysql.1*
%{_mandir}/man1/myisam_ftdump.1*
+%{_mandir}/man1/mysql_install_db.1*
%{_mandir}/man1/mysql_secure_installation.1*
%{_mandir}/man1/mysql_tzinfo_to_sql.1*
%{_mandir}/man1/perror.1*
%{_mandir}/man1/replace.1*
+%{_mandir}/man1/resolveip.1*
%files -n mysqlhotcopy
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/mysqldump
%attr(755,root,root) %{_bindir}/mysqlimport
%attr(755,root,root) %{_bindir}/mysqlshow
-#%attr(755,root,root) %{_sbindir}/mysqlmanager
%{_mandir}/man1/mysql.1*
%{_mandir}/man1/mysqladmin.1*
%{_mandir}/man1/mysqlbinlog.1*
%{_mandir}/man1/mysqldump.1*
%{_mandir}/man1/mysqlimport.1*
%{_mandir}/man1/mysqlshow.1*
-#%{_mandir}/man8/mysqlmanager.8*
%files libs
%defattr(644,root,root,755)
%attr(751,root,root) %dir %{_sysconfdir}/mysql
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/mysql-client.conf
%attr(755,root,root) %{_libdir}/libmysqlclient.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libmysqlclient.so.16
+%attr(755,root,root) %ghost %{_libdir}/libmysqlclient.so.18
%attr(755,root,root) %{_libdir}/libmysqlclient_r.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libmysqlclient_r.so.16
+%attr(755,root,root) %ghost %{_libdir}/libmysqlclient_r.so.18
%if %{with ndb}
%attr(755,root,root) %{_libdir}/libndbclient.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libndbclient.so.3
%attr(755,root,root) %{_bindir}/mysql_config
%attr(755,root,root) %{_libdir}/libmysqlclient.so
%attr(755,root,root) %{_libdir}/libmysqlclient_r.so
-# what's this?
-%attr(755,root,root) %{_libdir}/libmysqlservices.so
%if %{with ndb}
%attr(755,root,root) %{_libdir}/libndbclient.so
%endif