# TODO:
# - C(XX)FLAGS for innodb subdirs are overriden by ./configure!
# - http://bugs.mysql.com/bug.php?id=16470
+# NOTE:
+# - 5.0 Changes: http://dev.mysql.com/doc/refman/5.0/en/news-5-0-x.html
#
# Conditional build:
%bcond_without big_tables # Support tables with more than 4G rows even on 32 bit platforms
%bcond_with bdb # Berkeley DB support
%bcond_without sphinx # Sphinx storage engine support
%bcond_with xtrabackup # XtraBackup
-#
+
%include /usr/lib/rpm/macros.perl
-#define _snap 20060111
Summary: MySQL: a very fast and reliable SQL database engine
Summary(de.UTF-8): MySQL: ist eine SQL-Datenbank
Summary(fr.UTF-8): MySQL: un serveur SQL rapide et fiable
Summary(uk.UTF-8): MySQL - швидкий SQL-сервер
Summary(zh_CN.UTF-8): MySQL数据库服务器
Name: mysql
-Version: 5.0.83
-Release: 1
+Version: 5.0.96
+Release: 6
License: GPL + MySQL FLOSS Exception
Group: Applications/Databases
-#Source0: ftp://ftp.mysql.com/pub/mysql/src/%{name}-%{version}.tar.gz
-Source0: http://ftp.gwdg.de/pub/misc/mysql/Downloads/MySQL-5.0/%{name}-%{version}.tar.gz
-# Source0-md5: 051392064a1e32cca5c23a593908b10e
-#Source0: http://mysql.he.net/Downloads/MySQL-5.0/%{name}-%{version}.tar.gz
+# Source0Download: http://dev.mysql.com/downloads/mysql/5.0.html#source
+Source0: ftp://gd.tuwien.ac.at/db/mysql/Downloads/MySQL-5.0/%{name}-%{version}.tar.gz
+# Source0-md5: bf280949049161aa68cf29e600d9ec79
+#Source0: http://downloads.mysql.com/archives/mysql-5.0/%{name}-%{version}.tar.gz
#Source0: http://mirror.provenscaling.com/mysql/enterprise/source/5.0/%{name}-%{version}.tar.gz
-Source100: http://www.sphinxsearch.com/downloads/sphinx-0.9.9-rc1.tar.gz
-# Source100-md5: d1506c8f85c045bb682393de0aed30e8
+Source100: http://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz
+# Source100-md5: 7b9b618cb9b378f949bb1b91ddcc4f54
Source1: %{name}.init
Source2: %{name}.sysconfig
Source3: %{name}.logrotate
Source11: %{name}-ndb-cpc.init
Source12: %{name}-ndb-cpc.sysconfig
Source13: %{name}-client.conf
+Source14: percona.sh
+Source15: my.cnf
Patch0: %{name}-libs.patch
Patch1: %{name}-sphinx.patch
Patch2: %{name}-c++.patch
Patch13: %{name}-bug-34192.patch
Patch14: %{name}-bug-16470.patch
Patch15: %{name}-system-users.patch
+Patch16: %{name}-errorlog-no-rename.patch
+Patch18: %{name}-xtrabackup.patch
+Patch19: %{name}hotcopy-5.0-5.5.patch
+Patch21: %{name}-atomic.patch
+Patch22: %{name}-fix-dummy-thread-race-condition.patch
+# ourdelta
+Patch23: big_tables_fixlp284123_fix%{name}35346.patch
+Patch24: bison3.patch
+Patch25: %{name}-sslchain.patch
+Patch26: %{name}-yacc.patch
+Patch27: community-mysql-dh1024.patch
# <percona patches, http://www.percona.com/percona-lab.html>
-Patch16: %{name}-microslow_innodb.patch
-Patch17: %{name}-userstatv2.patch
-Patch18: %{name}-innodb_io_patches.patch
-Patch19: %{name}-microsec_process.patch
-Patch20: %{name}-innodb_show_bp.patch
-Patch21: %{name}-innodb_locks_held.patch
-Patch22: %{name}-innodb_io_pattern.patch
-Patch23: %{name}-innodb_show_hashed_memory.patch
-Patch24: %{name}-innodb_rw_lock.patch
-Patch25: %{name}-innodb_fsync_source.patch
-Patch26: %{name}-show_patches.patch
-Patch27: %{name}-split_buf_pool_mutex_fixed_optimistic_safe.patch
-Patch28: %{name}-innodb_check_fragmentation.patch
+Patch100: %{name}-show_patches.patch
+Patch101: %{name}-microslow_innodb.patch
+Patch102: %{name}-profiling_slow.patch
+Patch103: %{name}-userstatv2.patch
+Patch104: %{name}-microsec_process.patch
+Patch105: %{name}-innodb_io_patches.patch
+Patch106: %{name}-innodb_locks_held.patch
+Patch107: %{name}-innodb_show_bp.patch
+Patch108: %{name}-innodb_check_fragmentation.patch
+Patch109: %{name}-innodb_io_pattern.patch
+Patch110: %{name}-innodb_fsync_source.patch
+Patch111: %{name}-innodb_show_hashed_memory.patch
+Patch112: %{name}-innodb_dict_size_limit.patch
+Patch113: %{name}-innodb_extra_rseg.patch
+Patch114: %{name}-innodb_thread_concurrency_timer_based.patch
+Patch115: %{name}-innodb_use_sys_malloc.patch
+Patch116: %{name}-innodb_recovery_patches.patch
+Patch117: %{name}-innodb_misc_patch.patch
+Patch118: %{name}-innodb_split_buf_pool_mutex.patch
+Patch119: %{name}-innodb_rw_lock.patch
# </percona>
-Patch29: %{name}-errorlog-no-rename.patch
-Patch30: %{name}-alpha-stack.patch
-Patch31: %{name}-xtrabackup.patch
-Patch32: %{name}-fixes.patch
URL: http://www.mysql.com/products/database/mysql/community_edition.html
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: perl-devel >= 1:5.6.1
BuildRequires: readline-devel >= 4.2
BuildRequires: rpm-perlprov >= 4.1-13
-BuildRequires: rpmbuild(macros) >= 1.414
+BuildRequires: rpmbuild(macros) >= 1.453
BuildRequires: sed >= 4.0
BuildRequires: texinfo
BuildRequires: zlib-devel
Requires: %{name}-charsets = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
Requires: /usr/bin/setsid
-Requires: logrotate >= 3.7-4
Requires: rc-scripts >= 0.2.0
Suggests: mysql-client
%{?with_tcpd:Suggests: tcp_wrappers}
+Suggests: vim-syntax-mycnf
Provides: MySQL-server
Provides: group(mysql)
Provides: msqlormysql
Provides: user(mysql)
Obsoletes: MySQL
Obsoletes: mysql-server
+Conflicts: logrotate < 3.7-4
+ExcludeArch: alpha
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define _libexecdir %{_sbindir}
%define _localstatedir /var/lib/mysql
%define _mysqlhome /home/services/mysql
-%define _noautoreqdep 'perl(DBD::mysql)'
# CFLAGS for innodb are altered
-%undefine configure_cache
+%unglobal configure_cache
+
+%define filterout_c -Werror=format-security
+
+%define skip_post_check_so libndbclient.so.2.0.0
%description
MySQL is a true multi-user, multi-threaded SQL (Structured Query
Ten pakiet zawiera definicje kodowań znaków potrzebne dla serwera i
klienta.
+%package -n mysqlhotcopy
+Summary: mysqlhotcopy - A MySQL database backup program
+Summary(pl.UTF-8): mysqlhotcopy - program do tworzenia kopii zapasowych baz MySQL
+Group: Applications/Databases
+Requires: perl-DBD-mysql
+
+%description -n mysqlhotcopy
+mysqlhotcopy uses LOCK TABLES, FLUSH TABLES, and cp or scp to make a
+database backup quickly. It is the fastest way to make a backup of the
+database or single tables, but it can be run only on the same machine
+where the database directories are located. mysqlhotcopy works only
+for backing up MyISAM and ARCHIVE tables.
+
+See innobackup package to backup InnoDB tables.
+
+%description -n mysqlhotcopy -l pl.UTF-8
+mysqlhotcopy wykorzystuje LOCK TABLES, FLUSH TABLES oraz cp i scp do
+szybkiego tworzenia kopii zapasowych baz danych. Jest to najszybszy
+sposób wykonania kopii zapasowej bazy danych lub pojedynczych tabel,
+ale może działać tylko na maszynie, na której znajdują się katalogi z
+bazą danych. mysqlhotcopy działa tylko dla tabel typu MyISAM i
+ARCHIVE.
+
+Narzędzie do tworzenia kopii tabel InnoDB znajduje się w pakiecie
+innobackup.
+
%package extras
Summary: MySQL additional utilities
Summary(pl.UTF-8): Dodatkowe narzędzia do MySQL
Summary(pl.UTF-8): Dodatkowe narzędzia do MySQL napisane w Perlu
Group: Applications/Databases
Requires: %{name}-extras = %{version}-%{release}
+# this is just for the sake of smooth upgrade, not to break systems
+Requires: mysqlhotcopy = %{version}-%{release}
Requires: perl(DBD::mysql)
%description extras-perl
%package libs
Summary: Shared libraries for MySQL
-Summary(pl.UTF-8): Biblioteki dzielone MySQL
+Summary(pl.UTF-8): Biblioteki współdzielone MySQL
Group: Libraries
+Requires: glibc >= 6:2.3.6-15
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
Ten pakiet zawiera standardowego demona MySQL NDB CPC.
%prep
-%setup -q %{?_snap:-n %{name}-%{version}-nightly-%{_snap}} %{?with_sphinx:-a100}
+%setup -q %{?with_sphinx:-a100}
+cp -p %{SOURCE1} .
%patch0 -p1
%if %{with sphinx}
mv sphinx-*/mysqlse sql/sphinx
%patch14 -p1
%patch15 -p1
%patch16 -p1
-%patch17 -p1
-%patch18 -p1
+%{?with_xtrabackup:%patch18 -p1}
%patch19 -p1
-%patch20 -p1
-%patch21 -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
+# </percona>
+
+%patch21 -p0
%patch22 -p1
%patch23 -p1
%patch24 -p1
%patch25 -p1
%patch26 -p1
%patch27 -p1
-%patch28 -p1
-%patch29 -p1
-%ifarch alpha
-%patch30 -p1
-%endif
-%{?with_xtrabackup:%patch31 -p1}
-%patch32 -p1
+
+%{__sed} -i -e 's/AM_CONFIG_HEADER/AC_CONFIG_HEADERS/' configure.in
%build
%{__libtoolize}
%{__aclocal}
%{__automake}
+%{__autoheader}
%{__autoconf}
# The compiler flags are as per their "official" spec ;)
-CXXFLAGS="%{rpmcflags} -felide-constructors -fno-rtti -fno-exceptions %{!?debug:-fomit-frame-pointer}"
-CFLAGS="%{rpmcflags} %{!?debug:-fomit-frame-pointer}"
+CXXFLAGS="%{rpmcflags} -fno-implicit-templates -fno-exceptions -fno-rtti"
+CFLAGS="%{rpmcflags}"
+CPPFLAGS="%{rpmcppflags}"
# NOTE: the PS, FIND_PROC, KILL, CHECK_PID are not used by PLD Linux
# and therefore do not add BR on these. These are here just to satisfy
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT/etc/{logrotate.d,rc.d/init.d,sysconfig,mysql,ssl/certs/mysql} \
+install -d $RPM_BUILD_ROOT/etc/{logrotate.d,rc.d/init.d,sysconfig,mysql,certs/mysql,skel} \
$RPM_BUILD_ROOT/var/{log/{archive,}/mysql,lib/mysql} \
$RPM_BUILD_ROOT{%{_infodir},%{_mysqlhome}}
libsdir=/tmp
# libsdir is to avoid installing innodb static libs in $RPM_BUILD_ROOT../libs
-install Docs/mysql.info $RPM_BUILD_ROOT%{_infodir}
+cp -a Docs/mysql.info $RPM_BUILD_ROOT%{_infodir}
-install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/mysql
-install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/mysql
-install %{SOURCE3} $RPM_BUILD_ROOT/etc/logrotate.d/mysql
+install -p mysql.init $RPM_BUILD_ROOT/etc/rc.d/init.d/mysql
+cp -a %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/mysql
+cp -a %{SOURCE3} $RPM_BUILD_ROOT/etc/logrotate.d/mysql
# This is template for configuration file which is created after 'service mysql init'
-install %{SOURCE4} mysqld.conf
-install %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/mysql/clusters.conf
+cp -a %{SOURCE4} mysqld.conf
+cp -a %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/mysql/clusters.conf
touch $RPM_BUILD_ROOT/var/log/mysql/{err,log,update}
# remove innodb directives from mysqld.conf if mysqld is configured without
awk 'BEGIN { RS="\n\n" } !/bdb/ { printf("%s\n\n", $0) }' < mysqld.tmp > mysqld.conf
%endif
+%if %{with sphinx}
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/mysql/sphinx.a
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/mysql/sphinx.la
+# TODO: patch build with -avoid-version
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/mysql/sphinx.so.0
+mv $RPM_BUILD_ROOT%{_libdir}/mysql/sphinx.so{.0.0.0,}
+%endif
+
install mysqld.conf $RPM_BUILD_ROOT%{_datadir}/mysql/mysqld.conf
cp -a %{SOURCE13} $RPM_BUILD_ROOT%{_sysconfdir}/mysql/mysql-client.conf
+cp -a %{SOURCE15} $RPM_BUILD_ROOT/etc/skel/.my.cnf
# NDB
-install %{SOURCE7} $RPM_BUILD_ROOT/etc/rc.d/init.d/mysql-ndb
-install %{SOURCE8} $RPM_BUILD_ROOT/etc/sysconfig/mysql-ndb
-install %{SOURCE9} $RPM_BUILD_ROOT/etc/rc.d/init.d/mysql-ndb-mgm
-install %{SOURCE10} $RPM_BUILD_ROOT/etc/sysconfig/mysql-ndb-mgm
-install %{SOURCE11} $RPM_BUILD_ROOT/etc/rc.d/init.d/mysql-ndb-cpc
-install %{SOURCE12} $RPM_BUILD_ROOT/etc/sysconfig/mysql-ndb-cpc
+install -p %{SOURCE7} $RPM_BUILD_ROOT/etc/rc.d/init.d/mysql-ndb
+cp -a %{SOURCE8} $RPM_BUILD_ROOT/etc/sysconfig/mysql-ndb
+install -p %{SOURCE9} $RPM_BUILD_ROOT/etc/rc.d/init.d/mysql-ndb-mgm
+cp -a %{SOURCE10} $RPM_BUILD_ROOT/etc/sysconfig/mysql-ndb-mgm
+install -p %{SOURCE11} $RPM_BUILD_ROOT/etc/rc.d/init.d/mysql-ndb-cpc
+cp -a %{SOURCE12} $RPM_BUILD_ROOT/etc/sysconfig/mysql-ndb-cpc
mv -f $RPM_BUILD_ROOT%{_libdir}/mysql/lib* $RPM_BUILD_ROOT%{_libdir}
sed -i -e 's,%{_libdir}/mysql,%{_libdir},' $RPM_BUILD_ROOT{%{_libdir}/libmysqlclient{,_r}.la,%{_bindir}/mysql_config}
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/make_win_bin_dist.1
rm $RPM_BUILD_ROOT%{_bindir}/comp_err
rm $RPM_BUILD_ROOT%{_mandir}/man1/comp_err.1
rm $RPM_BUILD_ROOT%{_mandir}/man1/mysql_install_db.1
rm $RPM_BUILD_ROOT%{_mandir}/man1/mysql_waitpid.1
-rm $RPM_BUILD_ROOT%{_mandir}/man1/make_win_src_distribution.1
rm $RPM_BUILD_ROOT%{_datadir}/mysql/mysqld_multi.server
# no package for tests
rm $RPM_BUILD_ROOT%{_mandir}/man1/mysql-test-run.pl.1
rm $RPM_BUILD_ROOT%{_mandir}/man1/mysql_client_test_embedded.1
# orphaned manuals
-rm $RPM_BUILD_ROOT%{_mandir}/man1/ndb_print_backup_file.1
-rm $RPM_BUILD_ROOT%{_mandir}/man1/ndb_print_schema_file.1
-rm $RPM_BUILD_ROOT%{_mandir}/man1/ndb_print_sys_file.1
rm $RPM_BUILD_ROOT%{_mandir}/man1/mysqltest_embedded.1
# in %doc
%postun libs -p /sbin/ldconfig
%triggerpostun -- mysql < 4.0.20-2.4
-# For clusters in /etc/mysql/clusters.conf
+# For clusters in /etc/%{name}/clusters.conf
if [ -f /etc/sysconfig/mysql ]; then
. /etc/sysconfig/mysql
if [ -n "$MYSQL_DB_CLUSTERS" ]; then
for i in "$MYSQL_DB_CLUSTERS"; do
- echo "$i/mysqld.conf=$i" >> /etc/mysql/clusters.conf
+ echo "$i/mysqld.conf=$i" >> /etc/%{name}/clusters.conf
done
echo "# Do not use **obsolete** option MYSQL_DB_CLUSTERS" >> /etc/sysconfig/mysql
- echo "# USE /etc/mysql/clusters.conf instead" >> /etc/sysconfig/mysql
- echo "Converted clusters from MYSQL_DB_CLUSTERS to /etc/mysql/clusters.conf."
- echo "You NEED to fix your /etc/sysconfig/mysql and verify /etc/mysql/clusters.conf."
+ echo "# USE /etc/%{name}/clusters.conf instead" >> /etc/sysconfig/mysql
+ echo "Converted clusters from MYSQL_DB_CLUSTERS to /etc/%{name}/clusters.conf."
+ echo "You NEED to fix your /etc/sysconfig/mysql and verify /etc/%{name}/clusters.conf."
fi
fi
%triggerpostun -- mysql < 4.1.1
# For better compatibility with prevoius versions:
-for config in $(awk -F= '!/^#/ && /=/{print $1}' /etc/mysql/clusters.conf); do
+for config in $(awk -F= '!/^#/ && /=/{print $1}' /etc/%{name}/clusters.conf); do
if echo "$config" | grep -q '^/'; then
config_file="$config"
- elif [ -f "/etc/mysql/$config" ]; then
- config_file=/etc/mysql/$config
+ elif [ -f "/etc/%{name}/$config" ]; then
+ config_file=/etc/%{name}/$config
else
- clusterdir=$(awk -F= "/^$config/{print \$2}" /etc/mysql/clusters.conf)
+ 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/mysql/clusters.conf"
+ echo >&2 "Please remove extra (leading) spaces from /etc/%{name}/clusters.conf"
exit 1
fi
config_file="$clusterdir/mysqld.conf"
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/mysql
%attr(754,root,root) /etc/rc.d/init.d/mysql
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/mysql
-%dir /etc/ssl/certs/mysql
+%dir /etc/certs/mysql
%attr(640,root,mysql) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mysql/clusters.conf
%attr(755,root,root) %{_sbindir}/innochecksum
%attr(755,root,root) %{_sbindir}/my_print_defaults
%attr(755,root,root) %{_sbindir}/mysql_upgrade
%attr(755,root,root) %{_sbindir}/mysqlcheck
%attr(755,root,root) %{_sbindir}/mysqld
+%if %{with sphinx}
+%dir %{_libdir}/%{name}
+%attr(755,root,root) %{_libdir}/%{name}/sphinx.so
+%endif
%{_mandir}/man1/innochecksum.1*
%{_mandir}/man1/my_print_defaults.1*
%{_mandir}/man1/myisamchk.1*
%{_mandir}/man1/perror.1*
%{_mandir}/man1/replace.1*
+%files -n mysqlhotcopy
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/mysqlhotcopy
+%{_mandir}/man1/mysqlhotcopy.1*
+
%files extras-perl
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/mysql_convert_table_format
%attr(755,root,root) %{_bindir}/mysql_zap
%attr(755,root,root) %{_bindir}/mysqlaccess
%attr(755,root,root) %{_bindir}/mysqldumpslow
-%attr(755,root,root) %{_bindir}/mysqlhotcopy
%{_mandir}/man1/mysql_convert_table_format.1*
%{_mandir}/man1/mysql_explain_log.1*
%{_mandir}/man1/mysql_find_rows.1*
%{_mandir}/man1/mysql_zap.1*
%{_mandir}/man1/mysqlaccess.1*
%{_mandir}/man1/mysqldumpslow.1*
-%{_mandir}/man1/mysqlhotcopy.1*
%files client
%defattr(644,root,root,755)
+%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/skel/.my.cnf
%attr(755,root,root) %{_bindir}/mysql
%attr(755,root,root) %{_bindir}/mysqladmin
%attr(755,root,root) %{_bindir}/mysqlbinlog
%files libs
%defattr(644,root,root,755)
-%doc EXCEPTIONS-CLIENT
%attr(751,root,root) %dir %{_sysconfdir}/mysql
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mysql/mysql-client.conf
%attr(755,root,root) %{_libdir}/libmysqlclient.so.*.*