# TODO:
+# - trigger that prepares system from pre-cluster into cluster
# - C(XX)FLAGS for innodb subdirs are overriden by ./configure!
# - http://bugs.mysql.com/bug.php?id=16470
+# - innodb are dynamic (= as plugins) ?
+# - missing have_archive, have_merge
+# - is plugin_dir lib64 safe?
+# - Using NDB Cluster... could not find sci transporter in /{include, lib}
#
# Conditional build:
-%bcond_with bdb # Berkeley DB support
%bcond_without innodb # Without InnoDB support
%bcond_without raid # Without raid
%bcond_without ssl # Without OpenSSL
%bcond_without big_tables # Support tables with more than 4G rows even on 32 bit platforms
#
%include /usr/lib/rpm/macros.perl
-#define _snap 20060111
Summary: MySQL: a very fast and reliable SQL database engine
Summary(de): MySQL: ist eine SQL-Datenbank
Summary(fr): MySQL: un serveur SQL rapide et fiable
Summary(uk): MySQL - Û×ÉÄËÉÊ SQL-ÓÅÒ×ÅÒ
Summary(zh_CN): MySQLÊý¾Ý¿â·þÎñÆ÷
Name: mysql
-Version: 5.0.27
-Release: 3
+Version: 5.1.14
+Release: 0.1
License: GPL + MySQL FLOSS Exception
Group: Applications/Databases
-Source0: http://ftp.gwdg.de/pub/misc/mysql/Downloads/MySQL-5.0/%{name}-%{version}.tar.gz
-# Source0-md5: 584d423440a9d9c859678e3d4f2690b3
-#Source0: http://downloads.mysql.com/snapshots/mysql-5.0/%{name}-%{version}-nightly-%{_snap}.tar.gz
+Source0: http://mysql.dataphone.se/Downloads/MySQL-5.1/%{name}-%{version}-beta.tar.gz
+# Source0-md5: f02115e98c99558e062adcf2dc305283
Source1: %{name}.init
Source2: %{name}.sysconfig
Source3: %{name}.logrotate
Source4: %{name}d.conf
Source5: %{name}-clusters.conf
+Source6: %{name}.monitrc
Source7: %{name}-ndb.init
Source8: %{name}-ndb.sysconfig
Source9: %{name}-ndb-mgm.init
Source11: %{name}-ndb-cpc.init
Source12: %{name}-ndb-cpc.sysconfig
Source13: %{name}-client.conf
+Source14: %{name}-init_db.sql
+Source15: %{name}-init_db-data.sql
Patch0: %{name}-libs.patch
-
+Patch1: %{name}-libwrap.patch
Patch2: %{name}-c++.patch
Patch3: %{name}-info.patch
Patch4: %{name}-sql-cxx-pic.patch
Patch8: %{name}-client-config.patch
Patch9: %{name}-build.patch
Patch10: %{name}-alpha.patch
-Patch11: %{name}-ndb-ldflags.patch
-Patch12: %{name}-bug-20153.patch
+Patch11: %{name}-upgrade.patch
+Patch12: %{name}-NDB_CXXFLAGS.patch
URL: http://www.mysql.com/products/database/mysql/community_edition.html
BuildRequires: autoconf
BuildRequires: automake
-%{?with_bdb:BuildRequires: db3-devel}
BuildRequires: libstdc++-devel >= 5:3.0
BuildRequires: libtool
%{?with_tcpd:BuildRequires: libwrap-devel}
BuildRequires: sed >= 4.0
BuildRequires: texinfo
BuildRequires: zlib-devel
+Requires(post,postun): /sbin/ldconfig
Requires(post,preun): /sbin/chkconfig
Requires(postun): /usr/sbin/groupdel
Requires(postun): /usr/sbin/userdel
Provides: msqlormysql
Provides: user(mysql)
Obsoletes: MySQL
+Obsoletes: mysql-bench < 5.1.11
Obsoletes: mysql-server
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define _mysqlhome /home/services/mysql
%define _noautoreqdep 'perl(DBD::mysql)'
-# CFLAGS for innodb are altered
+
+# readline/libedit detection goes wrong
%undefine configure_cache
%description
ãÅÊ ÐÁËÅÔ Í¦ÓÔÉÔØ ÓÔÁÔÉÞΦ ¦Â̦ÏÔÅËÉ ÐÒÏÇÒÁͦÓÔÁ, ÎÅÏÂȦÄΦ ÄÌÑ
ÒÏÚÒÏÂËÉ ÐÒÏÇÒÁÍ-Ë̦¤ÎÔ¦×.
-%package bench
-Summary: MySQL - Benchmarks
-Summary(pl): MySQL - Programy testuj±ce szybko¶æ dzia³ania bazy
-Summary(pt): MySQL - Medições de desempenho
-Summary(ru): MySQL - ÂÅÎÞÍÁÒËÉ
-Summary(uk): MySQL - ÂÅÎÞÍÁÒËÉ
-Group: Applications/Databases
-Requires: %{name} = %{version}-%{release}
-Requires: %{name}-client
-Requires: perl(DBD::mysql)
-Obsoletes: MySQL-bench
-
-%description bench
-This package contains MySQL benchmark scripts and data.
-
-%description bench -l pl
-Programy testuj±ce szybko¶æ serwera MySQL.
-
-%description bench -l pt_BR
-Este pacote contém medições de desempenho de scripts e dados do MySQL.
-
-%description bench -l ru
-üÔÏÔ ÐÁËÅÔ ÓÏÄÅÒÖÉÔ ÓËÒÉÐÔÙ É ÄÁÎÎÙÅ ÄÌÑ ÏÃÅÎËÉ ÐÒÏÉÚ×ÏÄÉÔÅÌØÎÏÓÔÉ
-MySQL.
-
-%description bench -l uk
-ãÅÊ ÐÁËÅÔ Í¦ÓÔÉÔØ ÓËÒÉÐÔÉ ÔÁ ÄÁΦ ÄÌÑ ÏæÎËÉ ÐÒÏÄÕËÔÉ×ÎÏÓÔ¦ MySQL.
-
-%package doc
-Summary: MySQL manual
-Summary(pl): Podrêcznik u¿ytkownika MySQL
-Group: Applications/Databases
-
-%description doc
-This package contains manual in HTML format.
-
-%description doc -l pl
-Podrêcznik MySQL-a w formacie HTML.
-
%package ndb
Summary: MySQL - NDB Storage Engine Daemon
Summary(pl): MySQL - demon silnika przechowywania danych NDB
Ten pakiet zawiera standardowego demona MySQL NDB CPC.
%prep
-%setup -q %{?_snap:-n %{name}-%{version}-nightly-%{_snap}}
+%setup -q -n %{name}-%{version}-beta
%patch0 -p1
-
-%patch2 -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,
--enable-shared \
--enable-static \
--enable-thread-safe-client \
- --with%{!?with_bdb:out}-berkeley-db \
--with%{!?with_innodb:out}-innodb \
--with%{!?with_raid:out}-raid \
- --with%{!?with_ssl:out}-openssl \
+ --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 \
+ --with%{!?debug:out}-debug%{?debug:=full} \
--with%{!?debug:out}-ndb-debug \
--with-embedded-server \
--with-extra-charsets=all \
--with-named-thread-libs="-lpthread" \
--with-unix-socket-path=/var/lib/mysql/mysql.sock \
--with-archive-storage-engine \
+ --with-fast-mutexes \
--with-vio \
--with-ndbcluster \
--without-readline \
--without-libedit \
- --without-docs
-# --with-mysqlfs
-# --with-ndb-test --with-ndb-docs
+ --with-ndb-docs \
+ --with-docs
+
+#--with-error-inject
# 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
echo -e "all:\ninstall:\nclean:\nlink_sources:\n" > libmysqld/examples/Makefile
-%{__make} \
- benchdir=$RPM_BUILD_ROOT%{_datadir}/sql-bench
-
-%{__make} -C Docs mysql.info
+%{__make}
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT/etc/{logrotate.d,rc.d/init.d,sysconfig,mysql} \
+install -d $RPM_BUILD_ROOT/etc/{logrotate.d,rc.d/init.d,sysconfig,mysql,monit} \
$RPM_BUILD_ROOT/var/{log/{archiv,}/mysql,lib/mysql} \
$RPM_BUILD_ROOT{%{_infodir},%{_mysqlhome}}
-%if %{with bdb}
-install -d $RPM_BUILD_ROOT/var/lib/mysql/bdb/{log,tmp}
-%endif
-
# 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
# 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
+install %{SOURCE6} $RPM_BUILD_ROOT%{_sysconfdir}/monit
touch $RPM_BUILD_ROOT/var/log/mysql/{err,log,update}
# remove innodb directives from mysqld.conf if mysqld is configured without
-%if !%{with innodb}
- echo "BASE_TABLETYPE=MyISAM" >> $RPM_BUILD_ROOT/etc/sysconfig/mysql
+%if %{without innodb}
cp mysqld.conf mysqld.tmp
awk 'BEGIN { RS="\n\n" } !/innodb/ { printf("%s\n\n", $0) }' < mysqld.tmp > mysqld.conf
%endif
# remove berkeley-db directives from mysqld.conf if mysqld is configured without
-%if !%{with bdb}
- cp mysqld.conf mysqld.tmp
- awk 'BEGIN { RS="\n\n" } !/bdb/ { printf("%s\n\n", $0) }' < mysqld.tmp > mysqld.conf
-%endif
+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
-install %{SOURCE13} $RPM_BUILD_ROOT%{_sysconfdir}/mysql/mysql-client.conf
+cp -a %{SOURCE14} $RPM_BUILD_ROOT%{_datadir}/mysql/init_db.sql
+cp -a %{SOURCE15} $RPM_BUILD_ROOT%{_datadir}/mysql/init_db-data.sql
+cp -a %{SOURCE13} $RPM_BUILD_ROOT%{_sysconfdir}/mysql/mysql-client.conf
# NDB
install %{SOURCE7} $RPM_BUILD_ROOT/etc/rc.d/init.d/mysql-ndb
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
-# remove .txt variants for .sys messages
-rm -f $RPM_BUILD_ROOT%{_datadir}/%{name}/*/*.txt
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}
# 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
+
# rename not to be so generic name
-mv $RPM_BUILD_ROOT%{_bindir}/{,mysql_}comp_err
mv $RPM_BUILD_ROOT%{_bindir}/{,mysql_}resolve_stack_dump
# not useful without -debug build
%{!?debug:rm -f $RPM_BUILD_ROOT%{_bindir}/mysql_resolve_stack_dump}
# 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 /usr/share/mysql/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}
rm $RPM_BUILD_ROOT%{_datadir}/%{name}/errmsg.txt
rm $RPM_BUILD_ROOT%{_bindir}/mysql_waitpid
rm $RPM_BUILD_ROOT%{_mandir}/man1/mysql.server*
-rm $RPM_BUILD_ROOT%{_mandir}/man1/safe_mysqld*
rm $RPM_BUILD_ROOT%{_mandir}/man1/mysqlman.1*
+rm $RPM_BUILD_ROOT%{_bindir}/resolveip
+
+# 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
# in %doc
rm $RPM_BUILD_ROOT%{_datadir}/%{name}/*.{ini,cnf}
+# afaik not needed
+rm $RPM_BUILD_ROOT%{_libdir}/mysql/ha_{example,blackhole,federated}.{a,la}
+
%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
%groupremove mysql
EOF
#'
+%triggerpostun -- mysql < 5.1
+configs=""
+for config in $(awk -F= '!/^#/ && /=/{print $1}' /etc/mysql/clusters.conf); do
+ if echo "$config" | grep -q '^/'; then
+ config_file="$config"
+ elif [ -f "/etc/mysql/$config" ]; then
+ config_file=/etc/mysql/$config
+ else
+ clusterdir=$(awk -F= "/^$config/{print \$2}" /etc/mysql/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"
+ 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 scripts for all MySQL clusters.'
+echo 'Thus, you should invoke:'
+for config in $configs; do
+ datadir=$(awk -F= '!/^#/ && $1 ~ /datadir/{print $2}' $config)
+ echo "# mysql_upgrade --datadir=$datadir"
+done
+) | %banner -e %{name}-5.1
+
%files
%defattr(644,root,root,755)
%doc support-files/*.cnf support-files/*.ini
%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
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/monit/*.monitrc
%attr(755,root,root) %{_bindir}/innochecksum
%attr(755,root,root) %{_bindir}/myisamchk
%attr(755,root,root) %{_bindir}/myisamlog
%attr(755,root,root) %{_bindir}/mysql_fix_privilege_tables
%attr(755,root,root) %{_bindir}/my_print_defaults
%attr(755,root,root) %{_bindir}/mysql_upgrade
-%attr(755,root,root) %{_bindir}/mysql_upgrade_shell
+%attr(755,root,root) %{_bindir}/mysqlcheck
%attr(755,root,root) %{_sbindir}/mysqld
+%dir %{_libdir}/mysql
+%attr(755,root,root) %{_libdir}/mysql/ha_blackhole.so.*.*.*
+%attr(755,root,root) %{_libdir}/mysql/ha_example.so.*.*.*
+%attr(755,root,root) %{_libdir}/mysql/ha_federated.so.*.*.*
%{_mandir}/man1/mysql_fix_privilege_tables.1*
%{_mandir}/man1/mysqld.1*
%{_mandir}/man1/myisamchk.1*
%{_mandir}/man1/myisamlog.1*
%{_mandir}/man1/myisampack.1*
%{_mandir}/man1/mysql_upgrade.1*
+%{_mandir}/man1/mysqlcheck.1*
%{_mandir}/man8/mysqld.8*
%attr(700,mysql,mysql) %{_mysqlhome}
%{_datadir}/mysql/mysqld.conf
%{_datadir}/mysql/english
%{_datadir}/mysql/fill_help_tables.sql
+%{_datadir}/mysql/init_db-data.sql
+%{_datadir}/mysql/init_db.sql
%{_datadir}/mysql/mysql_fix_privilege_tables.sql
%lang(cs) %{_datadir}/mysql/czech
%lang(da) %{_datadir}/mysql/danish
%attr(755,root,root) %{_bindir}/myisam_ftdump
%attr(755,root,root) %{_bindir}/mysql_secure_installation
%attr(755,root,root) %{_bindir}/mysql_tzinfo_to_sql
-%attr(755,root,root) %{_bindir}/mysqlcheck
%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/mysqlcheck.1*
%{_mandir}/man1/perror.1*
%{_mandir}/man1/replace.1*
%files extras-perl
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/mysql_convert_table_format
-%attr(755,root,root) %{_bindir}/mysql_explain_log
%attr(755,root,root) %{_bindir}/mysql_find_rows
%attr(755,root,root) %{_bindir}/mysql_fix_extensions
%attr(755,root,root) %{_bindir}/mysql_setpermission
-%attr(755,root,root) %{_bindir}/mysql_tableinfo
%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_explain_log.1*
%{_mandir}/man1/mysql_zap.1*
%{_mandir}/man1/mysqlaccess.1*
%{_mandir}/man1/mysqlhotcopy.1*
%files client
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/mysql
+%attr(755,root,root) %{_bindir}/mysqladmin
+%attr(755,root,root) %{_bindir}/mysqlbinlog
%attr(755,root,root) %{_bindir}/mysqlbug
%attr(755,root,root) %{_bindir}/mysqldump
%attr(755,root,root) %{_bindir}/mysqlimport
-%attr(755,root,root) %{_sbindir}/mysqlmanager*
%attr(755,root,root) %{_bindir}/mysqlshow
-%attr(755,root,root) %{_bindir}/mysqlbinlog
-%attr(755,root,root) %{_bindir}/mysqladmin
+%attr(755,root,root) %{_bindir}/mysqlslap
%attr(755,root,root) %{_bindir}/mysqltest*
+%attr(755,root,root) %{_sbindir}/mysqlmanager*
%{_mandir}/man1/mysql.1*
%{_mandir}/man1/mysqladmin.1*
-%{_mandir}/man1/mysqldump.1*
-%{_mandir}/man1/mysqlshow.1*
-%{_mandir}/man1/mysqlmanager.1*
%{_mandir}/man1/mysqlbinlog.1*
+%{_mandir}/man1/mysqldump.1*
%{_mandir}/man1/mysqlimport.1*
+%{_mandir}/man1/mysqlmanager.1*
+%{_mandir}/man1/mysqlshow.1*
+%{_mandir}/man1/mysqlslap.1*
%{_mandir}/man8/mysqlmanager.8*
%files libs
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/mysql_config
%attr(755,root,root) %{_libdir}/lib*.so
-%attr(755,root,root) %{_bindir}/*comp_err
%{?debug:%attr(755,root,root) %{_bindir}/*resolve_stack_dump}
%{?debug:%{_datadir}/mysql/mysqld.sym}
%{_libdir}/lib*.la
%defattr(644,root,root,755)
%{_libdir}/lib*[tr].a
-%files bench
-%defattr(644,root,root,755)
-%attr(755,root,root) %{_bindir}/mysqltest
-%attr(755,root,root) %{_bindir}/mysql_client_test
-%dir %{_datadir}/sql-bench
-%{_datadir}/sql-bench/[CDRl]*
-%attr(755,root,root) %{_datadir}/sql-bench/[bcgirst]*
-# wrong dir?
-%{_datadir}/mysql/mi_test_all.res
-%attr(755,root,root) %{_datadir}/mysql/mi_test_all
-
-#%files doc
-#%defattr(644,root,root,755)
-#%doc Docs/manual.html Docs/manual_toc.html
-
%files ndb
%defattr(644,root,root,755)
%attr(755,root,root) %{_sbindir}/ndbd