# TODO:
-# - unpackaged:
+# - unpackaged files:
+# /usr/lib/mysql/plugin/auth_pam.so
+# /usr/lib/mysql/plugin/auth_pam_compat.so
+# /usr/lib/mysql/plugin/daemon_example.ini
+# /usr/lib/mysql/plugin/dialog.so
# /usr/bin/mysqlaccess.conf
-# /usr/data/mysql/.empty
-# /usr/data/test/.empty
+# - 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)
# - http://bugs.mysql.com/bug.php?id=16470
# - innodb are dynamic (= as plugins) ?
# - missing have_archive, have_merge
%bcond_without raid # RAID support
%bcond_without ssl # OpenSSL support
%bcond_without tcpd # libwrap (tcp_wrappers) support
-%bcond_with sphinx # Sphinx storage engine support
+%bcond_without sphinx # Sphinx storage engine support
%bcond_with tests # FIXME: don't run correctly
%bcond_with ndb # NDB is now a separate product, this here is broken, so disable it
Summary(uk.UTF-8): MySQL - швидкий SQL-сервер
Summary(zh_CN.UTF-8): MySQL数据库服务器
Name: mysql
-Version: 5.5.9
-Release: 2
+%define percona_rel 26.0
+Version: 5.5.24
+Release: 0.1
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: 701c0c44b7f1c2300adc0dc45729f903
-Source100: http://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz
-# Source100-md5: 7b9b618cb9b378f949bb1b91ddcc4f54
+# Source0: http://vesta.informatik.rwth-aachen.de/mysql/Downloads/MySQL-5.5/%{name}-%{version}.tar.gz
+Source0: http://www.percona.com/redir/downloads/Percona-Server-5.5/Percona-Server-5.5.24-26.0/source/Percona-Server-5.5.24-rel26.0.tar.gz
+# Source0-md5: 76f835e98ad3c71fcaa33794ee187630
+Source100: http://sphinxsearch.com/files/sphinx-2.0.3-release.tar.gz
+# Source100-md5: a1293aecd5034aa797811610beb7ba89
Source1: %{name}.init
Source2: %{name}.sysconfig
Source3: %{name}.logrotate
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
-Patch100: microsec_process.patch
-Patch101: optimizer_fix.patch
-Patch102: %{name}_dump_ignore_ct.patch
-Patch103: control_online_alter_index.patch
-Patch104: show_temp.patch
-Patch105: innodb_show_status.patch
-Patch106: innodb_io_patches.patch
-Patch107: innodb_opt_lru_count.patch
-Patch108: innodb_extra_rseg.patch
-Patch109: innodb_overwrite_relay_log_info.patch
-Patch110: innodb_thread_concurrency_timer_based.patch
-Patch111: innodb_dict_size_limit.patch
-Patch112: innodb_split_buf_pool_mutex.patch
-Patch113: innodb_expand_import.patch
-Patch114: innodb_show_sys_tables.patch
-Patch115: innodb_stats.patch
-Patch116: innodb_recovery_patches.patch
-Patch117: innodb_admin_command_base.patch
-Patch118: innodb_show_lock_name.patch
-Patch119: innodb_extend_slow.patch
-Patch120: innodb_lru_dump_restore.patch
-Patch121: innodb_separate_doublewrite.patch
-Patch122: innodb_pass_corrupt_table.patch
-Patch123: innodb_fast_checksum.patch
-Patch124: innodb_files_extend.patch
-Patch125: innodb_fix_misc.patch
-Patch126: innodb_deadlock_count.patch
-Patch127: innodb_adaptive_hash_index_partitions.patch
-Patch128: innodb_buffer_pool_pages_i_s.patch
-Patch129: innodb_buffer_pool_shm.patch
-Patch130: innodb_show_status_extend.patch
-Patch131: slow_extended.patch
-Patch132: percona_support.patch
-Patch133: query_cache_enhance.patch
-Patch134: log_connection_error.patch
-Patch135: mysql_syslog.patch
-Patch136: response_time_distribution.patch
-Patch137: error_pad.patch
-Patch138: remove_fcntl_excessive_calls.patch
-Patch139: sql_no_fcache.patch
-Patch140: show_slave_status_nolock.patch
-Patch141: log_warnings_silence.patch
-Patch142: userstat.patch
-Patch143: bug580324.patch
-Patch144: mysql_remove_eol_carret.patch
-Patch145: mysql-test.diff
-# </percona>
+# from fedora
+Patch20: %{name}-dubious-exports.patch
URL: http://www.mysql.com/products/community/
BuildRequires: bison
BuildRequires: cmake >= 2.6
Provides: user(mysql)
Obsoletes: MySQL
Obsoletes: mysql-server
-Conflicts: logrotate < 3.7-4
+Conflicts: logrotate < 3.8.0
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define _libexecdir %{_sbindir}
Ten pakiet zawiera standardowego demona MySQL NDB CPC.
%prep
-%setup -q %{?with_sphinx:-a100}
+%setup -q -n Percona-Server-%{version}-rel%{percona_rel} %{?with_sphinx:-a100}
%if %{with sphinx}
# http://www.sphinxsearch.com/docs/manual-0.9.9.html#sphinxse-mysql51
mv sphinx-*/mysqlse storage/sphinx
%patch18 -p1
%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
+# obsolete, no more docs?
+#%patch3 -p1
%patch5 -p1
%patch6 -p1
-%patch7 -p1
+# make sure mysqldump still works with 4.0
+#%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch11 -p1
%patch12 -p1
%patch14 -p0
%patch19 -p1
-# <percona %patches>
-%patch100 -p1
-%patch101 -p1
-#%patch102 -p1
-%patch103 -p1
-%patch104 -p1
-%patch105 -p1
-%patch106 -p1
-%patch107 -p1
-%patch108 -p1
-%patch109 -p1
-%patch110 -p1
-%patch111 -p1
-%patch112 -p1
-%patch113 -p1
-%patch114 -p1
-%patch115 -p1
-%patch116 -p1
-%patch117 -p1
-%patch118 -p1
-%patch119 -p1
-%patch120 -p1
-%patch121 -p1
-%patch122 -p1
-%patch123 -p1
-%patch124 -p1
-%patch125 -p1
-%patch126 -p1
-%patch127 -p1
-%patch128 -p1
-%patch129 -p1
-%patch130 -p1
-%patch131 -p1
-%patch132 -p1
-%patch133 -p1
-%patch134 -p1
-%patch135 -p1
-%patch136 -p1
-%patch137 -p1
-%patch138 -p1
-%patch139 -p1
-%patch140 -p1
-%patch141 -p1
-%patch142 -p1
-%patch143 -p1
-%patch144 -p1
-%patch145 -p1
-# </percona>
+%patch20 -p1
# to get these files rebuild
-rm sql/sql_yacc.cc
-rm sql/sql_yacc.h
+[ -f sql/sql_yacc.cc ] && rm sql/sql_yacc.cc
+[ -f sql/sql_yacc.h ] && rm sql/sql_yacc.h
%build
install -d build
cp -a %{SOURCE15} libmysql/libmysql.version
%cmake \
+ -DCMAKE_BUILD_TYPE=%{!?debug:RelWithDebInfo}%{?debug:Debug} \
-DFEATURE_SET="community" \
-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 \
+ -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
%{?debug:-DWITH_DEBUG=ON} \
-DWITH_FAST_MUTEXES=ON \
-DWITH_PIC=ON \
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT/etc/{logrotate.d,rc.d/init.d,sysconfig,mysql,skel} \
$RPM_BUILD_ROOT/var/{log/{archive,}/mysql,lib/mysql} \
- $RPM_BUILD_ROOT{%{_infodir},%{_mysqlhome}}
+ $RPM_BUILD_ROOT{%{_infodir},%{_mysqlhome}} \
+ $RPM_BUILD_ROOT%{_libdir}
%{__make} -C build install \
DESTDIR=$RPM_BUILD_ROOT
cp -a %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/clusters.conf
touch $RPM_BUILD_ROOT/var/log/%{name}/{mysqld,query,slow}.log
+%if "%{_lib}" != "lib"
+# percona broke something with lib64 handling
+mv $RPM_BUILD_ROOT%{_prefix}/lib/* $RPM_BUILD_ROOT%{_libdir}
+%endif
+
# remove innodb directives from mysqld.conf if mysqld is configured without
%if %{without innodb}
cp mysqld.conf mysqld.tmp
%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
%{?debug:nm -n $RPM_BUILD_ROOT%{_sbindir}/mysqld > $RPM_BUILD_ROOT%{_datadir}/%{name}/mysqld.sym}
# do not clobber users $PATH
+mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/mysql_plugin
mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/mysql_upgrade
mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/innochecksum
mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/myisamchk
%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
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/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=""
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* //
- /^skip-locking/skip-external-locking/
+ s/^skip-locking/skip-external-locking/
# this is not valid for server. it is client option
- s/default-character-set/# client-config: &/
+ s/^default-character-set/# client-config: &/
+ # use # as comment in config
+ s/^;/#/
' $config
+
+ socket=$(awk -F= '!/^#/ && $1 ~ /socket/{print $2}' $config | xargs)
+ echo "# mysql_upgrade ${socket:+--socket=$socket}"
done
+) | %banner -e %{name}-5.5
%files
%defattr(644,root,root,755)
%attr(755,root,root) %{_sbindir}/myisamlog
%attr(755,root,root) %{_sbindir}/myisampack
#%attr(755,root,root) %{_sbindir}/mysql_fix_privilege_tables
+%attr(755,root,root) %{_sbindir}/mysql_plugin
%attr(755,root,root) %{_sbindir}/mysql_upgrade
%attr(755,root,root) %{_sbindir}/mysqlcheck
%attr(755,root,root) %{_sbindir}/mysqld
%attr(755,root,root) %{_libdir}/%{name}/plugin/semisync_master.so
%attr(755,root,root) %{_libdir}/%{name}/plugin/semisync_slave.so
%if %{with sphinx}
-%attr(755,root,root) %{_libdir}/%{name}/plugin/sphinx.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/ha_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_plugin.1*
%{_mandir}/man1/mysql_upgrade.1*
%{_mandir}/man1/mysqlcheck.1*
%{_mandir}/man8/mysqld.8*
%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