# TODO:
+# - 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
+# - 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 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
-#
+
%include /usr/lib/rpm/macros.perl
Summary: MySQL: a very fast and reliable SQL database engine
Summary(de.UTF-8): MySQL: ist eine SQL-Datenbank
Summary(uk.UTF-8): MySQL - швидкий SQL-сервер
Summary(zh_CN.UTF-8): MySQL数据库服务器
Name: mysql
-Version: 5.5.8
+%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#source
-Source0: http://vesta.informatik.rwth-aachen.de/mysql/Downloads/MySQL-5.5/%{name}-%{version}.tar.gz
-# Source0-md5: 42e866302b61f5e213afd33e04677017
-Source100: http://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz
-# Source100-md5: 7b9b618cb9b378f949bb1b91ddcc4f54
+# 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: 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
Source12: %{name}-ndb-cpc.sysconfig
Source13: %{name}-client.conf
Source14: my.cnf
-Patch0: %{name}-libs.patch
-Patch1: %{name}-libwrap.patch
+# from fedora
+Source15: lib%{name}.version
Patch2: %{name}-c++.patch
Patch3: %{name}-info.patch
-Patch4: %{name}-sql-cxx-pic.patch
-Patch5: %{name}-noproc.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
-Patch15: plugin-avoid-version.patch
-Patch16: %{name}-fix-dummy-thread-race-condition.patch
Patch18: %{name}-sphinx.patch
-# <percona patches, http://www.percona.com/percona-lab.html>
-Patch100: %{name}-userstats.patch
-Patch101: %{name}-microslow.patch
-Patch102: %{name}-acc-pslist.patch
-Patch103: %{name}-split_buf_pool_mutex_fixed_optimistic_safe.patch
-Patch104: %{name}-innodb_rw_lock.patch
-# </percona>
-URL: http://www.mysql.com/products/database/mysql/community_edition.html
-BuildRequires: autoconf
-BuildRequires: automake
+Patch19: %{name}-chain-certs.patch
+# from fedora
+Patch20: %{name}-dubious-exports.patch
+URL: http://www.mysql.com/products/community/
BuildRequires: bison
+BuildRequires: cmake >= 2.6
BuildRequires: groff
-BuildRequires: libstdc++-devel >= 5:3.0
+%if "%{pld_release}" == "ac"
+BuildRequires: libstdc++4-devel >= 5:4.0
+%else
+BuildRequires: libstdc++-devel >= 5:4.0
+%endif
BuildRequires: libtool
%{?with_tcpd:BuildRequires: libwrap-devel}
BuildRequires: ncurses-devel >= 4.2
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.597
BuildRequires: sed >= 4.0
BuildRequires: zlib-devel
Requires(post,preun): /sbin/chkconfig
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}
%define _noautoreqdep 'perl(DBD::mysql)'
-# readline/libedit detection goes wrong
-%undefine configure_cache
-
%description
MySQL is a true multi-user, multi-threaded SQL (Structured Query
Language) database server. SQL is the most popular database language
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
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
-%patch0 -p1
-#%{?with_tcpd:%patch1 -p1} # WHATS PURPOSE OF THIS PATCH?
#%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
-%patch15 -p1
-%patch16 -p1
-# <percona %patches>
-%patch100 -p1
-%patch101 -p1
-%patch102 -p1
-%patch103 -p1
-%patch104 -p1
-# </percona>
+%patch19 -p1
+%patch20 -p1
-%build
-%{__libtoolize}
-%{__aclocal} -I config/ac-macros
-%{__automake}
-%{__autoconf}
-
-# The compiler flags are as per their "official" spec ;)
-CXXFLAGS="%{rpmcxxflags} -fPIC -fno-implicit-templates -fno-rtti -fno-exceptions"
-CFLAGS="%{rpmcflags} -fPIC"
-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
-# configure.
-
-%configure \
- PS='/bin/ps' \
- FIND_PROC='/bin/ps p $$PID' \
- KILL='/bin/kill' \
- CHECK_PID='/bin/kill -0 $$PID' \
- --enable-assembler \
- --enable-largefile=yes \
- --enable-shared \
- --enable-static \
- --enable-thread-safe-client \
- --with%{!?with_ssl:out}-ssl=/usr \
- --with%{!?with_tcpd:out}-libwrap \
- %{?with_big_tables:--with-big-tables} \
- --with-comment="PLD Linux Distribution MySQL RPM" \
- --with%{!?debug:out}-debug%{?debug:=full} \
- --with-embedded-server \
- --with-extra-charsets=all \
- --with-low-memory \
- --with-mysqld-user=mysql \
- --with-named-curses-libs="-lncurses" \
- --with-named-thread-libs="-lpthread" \
- --with-unix-socket-path=/var/lib/mysql/mysql.sock \
- --with-plugins=max \
- --with-fast-mutexes \
- --without-readline \
- --without-libedit \
-%if %{with ndb}
- --with%{!?debug:out}-ndb-debug \
- --with-ndbcluster \
- --with-ndb-docs \
-%else
- --without-plugin-ndbcluster \
-%endif
- --with-docs
-
-#--with-error-inject
+# to get these files rebuild
+[ -f sql/sql_yacc.cc ] && rm sql/sql_yacc.cc
+[ -f sql/sql_yacc.h ] && rm sql/sql_yacc.h
+%build
+install -d build
+cd build
# NOTE that /var/lib/mysql/mysql.sock is symlink to real sock file
# (it defaults to first cluster but user may change it to whatever
# cluster it wants)
-echo -e "all:\ninstall:\nclean:\nlink_sources:\n" > libmysqld/examples/Makefile
-
-%{__make} \
- benchdir=$RPM_BUILD_ROOT%{_datadir}/sql-bench
+%if "%{pld_release}" == "ac"
+# add suffix, but allow ccache, etc in ~/.rpmmacros
+%{expand:%%define __cc %(echo '%__cc' | sed -e 's,-gcc,-gcc4,')}
+%{expand:%%define __cxx %(echo '%__cxx' | sed -e 's,-g++,-g++4,')}
+%{expand:%%define __cpp %(echo '%__cpp' | sed -e 's,-gcc,-gcc4,')}
+%endif
-%{__make} -C Docs mysql.info
+# upstream has fallen down badly on symbol versioning, do it ourselves
+install -d libmysql
+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 \
+ -DWITH_LIBEDIT=OFF \
+ -DWITH_READLINE=OFF \
+%if "%{pld_release}" == "ac"
+ -DWITH_SSL=%{?with_ssl:bundled}%{!?with_ssl:no} \
+%else
+ -DWITH_SSL=%{?with_ssl:system}%{!?with_ssl:no} \
+%endif
+ -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 \
+ -DINSTALL_MYSQLTESTDIR_RPM="" \
+ -DINSTALL_SQLBENCHDIR=%{_datadir} \
+ -DINSTALL_SUPPORTFILESDIR=%{_datadir}/%{name}-support \
+ ..
+
+%{__make}
%{?with_tests:%{__make} test}
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 install
-%{__make} install \
- DESTDIR=$RPM_BUILD_ROOT \
- benchdir=%{_datadir}/sql-bench \
- libsdir=/tmp
-# libsdir is to avoid installing innodb static libs in $RPM_BUILD_ROOT../libs
+%{__make} -C build install \
+ DESTDIR=$RPM_BUILD_ROOT
-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 %{SOURCE1} $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
-touch $RPM_BUILD_ROOT/var/log/mysql/{mysqld,query,slow}.log
+cp -a %{SOURCE4} mysqld.conf
+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
awk 'BEGIN { RS="\n\n" } !/bdb/ { printf("%s\n\n", $0) }' < mysqld.tmp > mysqld.conf
-install mysqld.conf $RPM_BUILD_ROOT%{_datadir}/mysql/mysqld.conf
-cp -a %{SOURCE13} $RPM_BUILD_ROOT%{_sysconfdir}/mysql/mysql-client.conf
+cp -a mysqld.conf $RPM_BUILD_ROOT%{_datadir}/%{name}/mysqld.conf
+cp -a %{SOURCE13} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/mysql-client.conf
cp -a %{SOURCE14} $RPM_BUILD_ROOT/etc/skel/.my.cnf
# NDB
%if %{with 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
%endif
-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}
+# symlinks point to the .so file, fix it
+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%{_prefix}/mysql-test
-
-# 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}/mysql/mysqld.sym -n mysqld.stack.
+# 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
-%{?debug:nm -n $RPM_BUILD_ROOT%{_sbindir}/mysqld > $RPM_BUILD_ROOT%{_datadir}/mysql/mysqld.sym}
+%{?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
mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/myisamlog
mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/myisampack
-mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/mysql_fix_privilege_tables
+#mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/mysql_fix_privilege_tables
mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/my_print_defaults
sed -i -e 's#/usr/bin/my_print_defaults#%{_sbindir}/my_print_defaults#g' $RPM_BUILD_ROOT%{_bindir}/mysql_install_db
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}*
-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.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}/mysql/ChangeLog
+# 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%{_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%{_datadir}/mysql/mi_test_all
-rm $RPM_BUILD_ROOT%{_datadir}/mysql/mi_test_all.res
-rm $RPM_BUILD_ROOT%{_datadir}/mysql/mysqld_multi.server
-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*
-
-# in %doc
-rm $RPM_BUILD_ROOT%{_datadir}/%{name}/*.{ini,cnf}
+%{__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}/mysql/plugin/ha_*.{a,la}
-rm -f $RPM_BUILD_ROOT%{_libdir}/mysql/plugin/ha_example.*
-rm -f $RPM_BUILD_ROOT%{_libdir}/mysql/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
%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"
%triggerpostun -- mysql < 5.1.0
configs=""
-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"
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
+
+ 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)
-%doc support-files/*.cnf support-files/*.ini ChangeLog
-%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
-%attr(640,root,mysql) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mysql/clusters.conf
+%doc build/support-files/*.cnf build/support-files/*.ini
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/%{name}
+%attr(754,root,root) /etc/rc.d/init.d/%{name}
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/%{name}
+%attr(640,root,mysql) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/clusters.conf
%attr(755,root,root) %{_sbindir}/innochecksum
%attr(755,root,root) %{_sbindir}/my_print_defaults
%attr(755,root,root) %{_sbindir}/myisamchk
%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_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) %{_bindir}/mysql_install_db
-%dir %{_libdir}/mysql
-%dir %{_libdir}/mysql/plugin
-%attr(755,root,root) %{_libdir}/mysql/plugin/ha_innodb_plugin.so
+%dir %{_libdir}/%{name}
+%dir %{_libdir}/%{name}/plugin
+%attr(755,root,root) %{_libdir}/%{name}/plugin/adt_null.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/auth.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/auth_socket.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/auth_test_plugin.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/ha_archive.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/ha_blackhole.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/ha_federated.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/mypluglib.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/qa_auth_client.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/qa_auth_interface.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/qa_auth_server.so
+%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}/mysql/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_install_db.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*
%if %{?debug:1}0
%attr(755,root,root) %{_bindir}/*resolve_stack_dump
-%{_datadir}/mysql/mysqld.sym
+%{_datadir}/%{name}/mysqld.sym
%{_mandir}/man1/*resolve_stack_dump.1*
%endif
%{_infodir}/mysql.info*
# This is template for configuration file which is created after 'service mysql init'
-%{_datadir}/mysql/mysqld.conf
-%{_datadir}/mysql/mysql_system_tables.sql
-%{_datadir}/mysql/mysql_system_tables_data.sql
-%{_datadir}/mysql/mysql_test_data_timezone.sql
-
-%{_datadir}/mysql/english
-%{_datadir}/mysql/fill_help_tables.sql
-%{_datadir}/mysql/mysql_fix_privilege_tables.sql
-%lang(cs) %{_datadir}/mysql/czech
-%lang(da) %{_datadir}/mysql/danish
-%lang(de) %{_datadir}/mysql/german
-%lang(el) %{_datadir}/mysql/greek
-%lang(es) %{_datadir}/mysql/spanish
-%lang(et) %{_datadir}/mysql/estonian
-%lang(fr) %{_datadir}/mysql/french
-%lang(hu) %{_datadir}/mysql/hungarian
-%lang(it) %{_datadir}/mysql/italian
-%lang(ja) %{_datadir}/mysql/japanese
-%lang(ko) %{_datadir}/mysql/korean
-%lang(nl) %{_datadir}/mysql/dutch
-%lang(nb) %{_datadir}/mysql/norwegian
-%lang(nn) %{_datadir}/mysql/norwegian-ny
-%lang(pl) %{_datadir}/mysql/polish
-%lang(pt) %{_datadir}/mysql/portuguese
-%lang(ro) %{_datadir}/mysql/romanian
-%lang(ru) %{_datadir}/mysql/russian
-%lang(sr) %{_datadir}/mysql/serbian
-%lang(sk) %{_datadir}/mysql/slovak
-%lang(sv) %{_datadir}/mysql/swedish
-%lang(uk) %{_datadir}/mysql/ukrainian
+%{_datadir}/%{name}/mysqld.conf
+%{_datadir}/%{name}/mysql_system_tables.sql
+%{_datadir}/%{name}/mysql_system_tables_data.sql
+%{_datadir}/%{name}/mysql_test_data_timezone.sql
+
+%{_datadir}/%{name}/english
+%{_datadir}/%{name}/fill_help_tables.sql
+#%{_datadir}/%{name}/mysql_fix_privilege_tables.sql
+%lang(cs) %{_datadir}/%{name}/czech
+%lang(da) %{_datadir}/%{name}/danish
+%lang(de) %{_datadir}/%{name}/german
+%lang(el) %{_datadir}/%{name}/greek
+%lang(es) %{_datadir}/%{name}/spanish
+%lang(et) %{_datadir}/%{name}/estonian
+%lang(fr) %{_datadir}/%{name}/french
+%lang(hu) %{_datadir}/%{name}/hungarian
+%lang(it) %{_datadir}/%{name}/italian
+%lang(ja) %{_datadir}/%{name}/japanese
+%lang(ko) %{_datadir}/%{name}/korean
+%lang(nl) %{_datadir}/%{name}/dutch
+%lang(nb) %{_datadir}/%{name}/norwegian
+%lang(nn) %{_datadir}/%{name}/norwegian-ny
+%lang(pl) %{_datadir}/%{name}/polish
+%lang(pt) %{_datadir}/%{name}/portuguese
+%lang(ro) %{_datadir}/%{name}/romanian
+%lang(ru) %{_datadir}/%{name}/russian
+%lang(sr) %{_datadir}/%{name}/serbian
+%lang(sk) %{_datadir}/%{name}/slovak
+%lang(sv) %{_datadir}/%{name}/swedish
+%lang(uk) %{_datadir}/%{name}/ukrainian
%files charsets
%defattr(644,root,root,755)
%dir %{_datadir}/mysql
-%{_datadir}/mysql/charsets
+%{_datadir}/%{name}/charsets
%files extras
%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)
-%doc EXCEPTIONS-CLIENT
%attr(751,root,root) %dir %{_sysconfdir}/mysql
-%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mysql/mysql-client.conf
+%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) %{_libdir}/libmysqlclient_r.so
%if %{with ndb}
%attr(755,root,root) %{_libdir}/libndbclient.so
-%{_libdir}/libndbclient.la
%endif
-%{_libdir}/libmysqlclient.la
-%{_libdir}/libmysqlclient_r.la
-# static-only
-%{_libdir}/libdbug.a
-%{_libdir}/libheap.a
-%{_libdir}/libmyisam.a
-%{_libdir}/libmyisammrg.a
-%{_libdir}/libmysqld.a
-%{_libdir}/libmystrings.a
-%{_libdir}/libmysys.a
-%{_libdir}/libvio.a
%{_includedir}/mysql
%{_aclocaldir}/mysql.m4
%{_mandir}/man1/mysql_config.1*