# TODO:
-# - init/sysconfig for NDB subpackages
-#
# - trigger that prepares system from pre-cluster into cluster
# - trigger /etc/mysqld.conf into /etc/mysql/mysqld.conf. Solve possible
# conflict with /var/lib/mysql/mysqld.conf
#
# Conditional build:
%bcond_with bdb # Berkeley DB support
+%bcond_without innodb # Without InnoDB support
+%bcond_without isam # Without ISAM table format (used in mysql 3.22)
+%bcond_without raid # Without raid
+%bcond_without ssl # Without OpenSSL
+%bcond_without tcpd # Without libwrap (tcp_wrappers) support
+%bcond_with big_tables # enable '--with-big-tables', some performance loss on 32bit arch, but can do >= 4GB database tables.
#
%include /usr/lib/rpm/macros.perl
Summary: MySQL: a very fast and reliable SQL database engine
Summary(fr): MySQL: un serveur SQL rapide et fiable
Summary(pl): MySQL: bardzo szybka i niezawodna baza danych (SQL)
+Summary(de): MySQL: ist eine SQL-Datenbank
Summary(pt_BR): MySQL: Um servidor SQL rápido e confiável
Summary(ru): MySQL - ÂÙÓÔÒÙÊ SQL-ÓÅÒ×ÅÒ
Summary(uk): MySQL - Û×ÉÄËÉÊ SQL-ÓÅÒ×ÅÒ
Summary(zh_CN): MySQLÊý¾Ý¿â·þÎñÆ÷
Name: mysql
Group: Applications/Databases
-Version: 4.1.9
-Release: 0.1
+Version: 4.1.12
+Release: 1.4
License: GPL + MySQL FLOSS Exception
-Source0: http://mysql.mirror.anlx.net/Downloads/MySQL-4.1/mysql-%{version}.tar.gz
-# Source0-md5: 7bc44befe155d619c4e4705f68874278
+Source0: http://mysql.dataphone.se/Downloads/MySQL-4.1/%{name}-%{version}.tar.gz
+# Source0-md5: 56a6f5cacd97ae290e07bbe19f279af1
Source1: %{name}.init
Source2: %{name}.sysconfig
Source3: %{name}.logrotate
Source10: %{name}-ndb-mgm.sysconfig
Source11: %{name}-ndb-cpc.init
Source12: %{name}-ndb-cpc.sysconfig
+Source13: %{name}-client.conf
Patch0: %{name}-libs.patch
Patch1: %{name}-libwrap.patch
Patch2: %{name}-c++.patch
Patch4: %{name}-sql-cxx-pic.patch
Patch5: %{name}-noproc.patch
Patch6: %{name}-fix_privilege_tables.patch
-Patch7: %{name}-nptl.patch
-Patch8: %{name}-mysqlaccess.patch
+Patch7: %{name}-align.patch
+Patch8: %{name}-client-config.patch
Icon: mysql.gif
URL: http://www.mysql.com/
#BuildRequires: ORBit-devel
-BuildRequires: /bin/ps
BuildRequires: autoconf
BuildRequires: automake
%{?with_bdb:BuildRequires: db3-devel}
BuildRequires: libstdc++-devel >= 5:3.0
BuildRequires: libtool
-BuildRequires: libwrap-devel
+%{?with_tcpd:BuildRequires: libwrap-devel}
BuildRequires: ncurses-devel >= 4.2
-BuildRequires: openssl-devel >= 0.9.7d
+%{?with_ssl:BuildRequires: openssl-devel >= 0.9.7d}
BuildRequires: perl-DBI
BuildRequires: perl-devel >= 1:5.6.1
BuildRequires: readline-devel >= 4.2
BuildRequires: rpm-perlprov >= 4.1-13
-BuildRequires: rpmbuild(macros) >= 1.159
+BuildRequires: rpmbuild(macros) >= 1.202
BuildRequires: texinfo
BuildRequires: zlib-devel
PreReq: rc-scripts >= 0.2.0
Requires(postun): /usr/sbin/userdel
Requires(postun): /usr/sbin/groupdel
Requires(post,preun): /sbin/chkconfig
+Requires(triggerpostun): sed >= 4.0
Requires: %{name}-libs = %{version}-%{release}
Requires: /usr/bin/setsid
Provides: MySQL-server
%define _mysqlhome /home/services/mysql
%define _noautoreqdep 'perl(DBD::mysql)'
-# workaround for buggy gcc 3.3.1
-%define specflags_alpha -mno-explicit-relocs
%description
MySQL is a true multi-user, multi-threaded SQL (Structured Query
MySQL oryginalnie by³ tworzony, poniewa¿ autorzy w Tcx potrzebowali
serwera SQL do obs³ugi bardzo du¿ych baz danych z szybko¶ci± o wiele
wiêksz±, ni¿ mogli zaoferowaæ inni producenci baz danych. U¿ywaj± go
-od 1996 roku w ¶rodowisku z ponad 40 bazami danych, 10 000 tabel,
-z których ponad 500 zawiera ponad 7 milionów rekordów - w sumie oko³o
+od 1996 roku w ¶rodowisku z ponad 40 bazami danych, 10 000 tabel, z
+których ponad 500 zawiera ponad 7 milionów rekordów - w sumie oko³o
50GB krytycznych danych.
Baza, na której oparty jest MySQL, sk³ada siê ze zbioru procedur,
wiele lat. Pomimo, ¿e MySQL jest ci±gle rozwijany, ju¿ oferuje bogaty
i u¿yteczny zbiór funkcji.
+%description -l de
+MySQL ist eine SQL-Datenbank. Allerdings ist sie im Gegensatz zu
+Oracle, DB2 oder PostgreSQL keine relationale Datenbank. Die Daten
+werden zwar in zweidimensionalen Tabellen gespeichert und können mit
+einem Primärschlüssel versehen werden. Es ist aber keine Definition
+eines Fremdschlüssels möglich. Der Benutzer ist somit bei einer
+MySQL-Datenbank völlig allein für die (referenzielle) Integrität der
+Daten verantwortlich. Allein durch die Nutzung externer
+Tabellenformate, wie InnoDB bzw Berkeley DB wird eine Relationalität
+ermöglicht. Diese Projekte sind aber getrennt von MySQL zu betrachten.
+
%description -l pt_BR
O MySQL é um servidor de banco de dados SQL realmente multiusuário e
multi-tarefa. A linguagem SQL é a mais popular linguagem para banco de
Summary(uk): MySQL - ÈÅÄÅÒÉ ÔÁ ¦Â̦ÏÔÅËÉ ÐÒÏÇÒÁͦÓÔÁ
Group: Development/Libraries
Requires: %{name}-libs = %{version}-%{release}
-Requires: openssl-devel
+%{?with_ssl:Requires: openssl-devel}
Requires: zlib-devel
Obsoletes: MySQL-devel
Obsoletes: libmysql10-devel
This package contains the standard MySQL NDB Storage Engine Daemon.
%description ndb -l pl
-Ten pakiet zawiera standardowego demona silnika przechowywania
-danych NDB.
+Ten pakiet zawiera standardowego demona silnika przechowywania danych
+NDB.
%package ndb-client
Summary: MySQL - NDB Clients
%prep
%setup -q
%patch0 -p1
-%patch1 -p1
+%{?with_tcpd:%patch1 -p1}
%patch2 -p1
%patch3 -p1
%ifarch alpha
%patch5 -p1
%patch6 -p1
%patch7 -p1
-%patch8 -p1
+%patch8 -p1
%{__perl} -pi -e 's@(ndb_bin_am_ldflags)="-static"@$1=""@' configure.in
%{__aclocal}
%{__automake}
%{__autoconf}
-CXXFLAGS="%{rpmcflags} -fno-rtti -fno-exceptions %{!?debug:-fomit-frame-pointer}"
+# 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}"
+
+# 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' \
--enable-shared \
--enable-static \
--enable-thread-safe-client \
- %{?with_bdb:--with-berkeley-db} \
+ --with%{!?with_bdb:out}-berkeley-db \
+ --with%{!?with_innodb:out}-innodb \
+ --with%{!?with_isam:out}-isam \
+ --with%{!?with_raid:out}-raid \
+ --with%{!?with_ssl:out}-openssl \
+ --with%{!?with_tcpd:out}-libwrap \
+ %{?with_big_tables:--with-big-tables} \
--with-comment="PLD Linux Distribution MySQL RPM" \
--with%{!?debug:out}-debug \
--with-embedded-server \
--with-extra-charsets=all \
- --with-libwrap \
--with-low-memory \
--with-mysqld-user=mysql \
--with-named-curses-libs="-lncurses" \
- --with-openssl \
- --with-pthread \
- --with-raid \
+ --with-named-thread-libs="-lpthread" \
--with-unix-socket-path=/var/lib/mysql/mysql.sock \
--with-vio \
--with-ndbcluster \
--without-readline \
+ --without-libedit \
--without-docs
# --with-mysqlfs
+# --with-ndb-test --with-ndb-docs
# 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)
+# cluster it wants)
echo -e "all:\ninstall:\nclean:\nlink_sources:\n" > libmysqld/examples/Makefile
install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/mysql
install %{SOURCE3} $RPM_BUILD_ROOT/etc/logrotate.d/mysql
# This is template for configuration file which is created after 'service mysql init'
-install %{SOURCE4} $RPM_BUILD_ROOT%{_datadir}/mysql/mysqld.conf
-install %{SOURCE5} $RPM_BUILD_ROOT/etc/mysql/clusters.conf
-install %{SOURCE6} $RPM_BUILD_ROOT/etc/monit
+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,isamlog.log}
+# remove innodb directives from mysqld.conf if mysqld is configured without
+%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 %{without bdb}
+ cp mysqld.conf mysqld.tmp
+ awk 'BEGIN { RS="\n\n" } !/bdb/ { printf("%s\n\n", $0) }' < mysqld.tmp > mysqld.conf
+%endif
+
+install mysqld.conf $RPM_BUILD_ROOT%{_datadir}/mysql/mysqld.conf
+install %{SOURCE13} $RPM_BUILD_ROOT%{_sysconfdir}/mysql/mysql-client.conf
+
# NDB
install %{SOURCE7} $RPM_BUILD_ROOT/etc/rc.d/init.d/mysql-ndb
install %{SOURCE8} $RPM_BUILD_ROOT/etc/sysconfig/mysql-ndb
install %{SOURCE11} $RPM_BUILD_ROOT/etc/rc.d/init.d/mysql-ndb-cpc
install %{SOURCE12} $RPM_BUILD_ROOT/etc/sysconfig/mysql-ndb-cpc
-# remove mysqld's *.po files
-find . $RPM_BUILD_ROOT%{_datadir}/%{name} -name \*.txt | xargs -n 100 rm -f
+# 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}
%{__perl} -pi -e 's,%{_libdir}/mysql,%{_libdir},;' $RPM_BUILD_ROOT%{_libdir}/libmysqlclient.la
+# remove known unpackaged files
rm -rf $RPM_BUILD_ROOT%{_prefix}/mysql-test
+# 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 our OS
+rm $RPM_BUILD_ROOT%{_bindir}/make_win_*_distribution
+rm $RPM_BUILD_ROOT%{_datadir}/%{name}/*.plist
+# unuseful stuff
+rm $RPM_BUILD_ROOT%{_datadir}/%{name}/*.spec
+
+# functionality in initscript / rpm
+rm $RPM_BUILD_ROOT%{_bindir}/mysql_create_system_tables
+rm $RPM_BUILD_ROOT%{_bindir}/mysql_install_db
+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}/fill_help_tables.sql
+rm $RPM_BUILD_ROOT%{_datadir}/%{name}/mysql-log-rotate
+rm $RPM_BUILD_ROOT%{_datadir}/%{name}/mysql.server
+rm $RPM_BUILD_ROOT%{_datadir}/%{name}/{pre,post}install
+rm $RPM_BUILD_ROOT%{_bindir}/mysql_waitpid
+
+# in %doc
+rm $RPM_BUILD_ROOT%{_datadir}/%{name}/*.{ini,cnf}
+
%clean
rm -rf $RPM_BUILD_ROOT
%pre
-if [ -n "`/usr/bin/getgid mysql`" ]; then
- if [ "`/usr/bin/getgid mysql`" != "89" ]; then
- echo "Error: group mysql doesn't have gid=89. Correct this before installing mysql." 1>&2
- exit 1
- fi
-else
- /usr/sbin/groupadd -g 89 mysql
-fi
-if [ -n "`/bin/id -u mysql 2>/dev/null`" ]; then
- if [ "`/bin/id -u mysql`" != "89" ]; then
- echo "Error: user mysql doesn't have uid=89. Correct this before installing mysql." 1>&2
- exit 1
- fi
-else
- /usr/sbin/useradd -u 89 \
- -d %{_mysqlhome} -s /bin/sh -g mysql \
- -c "MySQL Server" mysql 1>&2
-fi
+%groupadd -g 89 mysql
+%useradd -u 89 -d %{_mysqlhome} -s /bin/sh -g mysql -c "MySQL Server" mysql
%post
[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
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
+ 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)
+ config_file="$clusterdir/mysqld.conf"
+ fi
+ echo "Adding option old-passwords to config: $config_file"
+ echo "If you want to use new, better passwords - remove it"
+
+ # sed magic to add 'old-passwords' to [mysqld] section
+ sed -i -e '/./{H;$!d;};x;/\[mysqld\]/{
+ a
+ a; Compatibility options:
+ aold-passwords
+ }
+ ' $config_file
+done
+
%files
%defattr(644,root,root,755)
-%attr(640,root,root) %config(noreplace) %verify(not md5 size mtime) /etc/logrotate.d/mysql
+%doc support-files/*.cnf support-files/*.ini
+%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 size mtime) /etc/sysconfig/mysql
-%attr(751,root,root) %dir /etc/mysql
-%attr(640,root,mysql) %config(noreplace) %verify(not md5 size mtime) /etc/mysql/clusters.conf
-%attr(750,root,root) %config(noreplace) %verify(not md5 size mtime) /etc/monit/*.monitrc
+%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(750,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/monit/*.monitrc
%attr(755,root,root) %{_bindir}/isamchk
%attr(755,root,root) %{_bindir}/isamlog
%attr(755,root,root) %{_bindir}/myisamchk
%attr(755,root,root) %{_bindir}/myisampack
%attr(755,root,root) %{_bindir}/mysql_fix_privilege_tables
%attr(755,root,root) %{_bindir}/pack_isam
+%attr(755,root,root) %{_bindir}/my_print_defaults
%attr(755,root,root) %{_sbindir}/mysqld
%{_mandir}/man1/isamchk.1*
%{_mandir}/man1/isamlog.1*
%attr(751,root,root) /var/lib/mysql
%attr(750,mysql,mysql) %dir /var/log/mysql
%attr(750,mysql,mysql) %dir /var/log/archiv/mysql
-%attr(640,mysql,mysql) %config(noreplace) %verify(not md5 size mtime) /var/log/mysql/*
+%attr(640,mysql,mysql) %config(noreplace) %verify(not md5 mtime size) /var/log/mysql/*
%{_infodir}/mysql.info*
%dir %{_datadir}/mysql
%lang(hu) %{_datadir}/mysql/hungarian
%lang(it) %{_datadir}/mysql/italian
%lang(ja) %{_datadir}/mysql/japanese
+%lang(ja) %{_datadir}/mysql/japanese-sjis
%lang(ko) %{_datadir}/mysql/korean
%lang(nl) %{_datadir}/mysql/dutch
%lang(nb) %{_datadir}/mysql/norwegian
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/msql2mysql
%attr(755,root,root) %{_bindir}/perror
-%attr(755,root,root) %{_bindir}/my_print_defaults
%attr(755,root,root) %{_bindir}/replace
%attr(755,root,root) %{_bindir}/resolveip
+%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
%{_mandir}/man1/perror.1*
%{_mandir}/man1/replace.1*
%attr(755,root,root) %{_bindir}/mysql_zap
%attr(755,root,root) %{_bindir}/mysql_find_rows
%attr(755,root,root) %{_bindir}/mysqlaccess
+%attr(755,root,root) %{_bindir}/mysql_fix_extensions
+%attr(755,root,root) %{_bindir}/mysql_explain_log
+%attr(755,root,root) %{_bindir}/mysql_tableinfo
%{_mandir}/man1/mysql_zap.1*
%{_mandir}/man1/mysqlaccess.1*
%attr(755,root,root) %{_bindir}/mysqlshow
%attr(755,root,root) %{_bindir}/mysqlbinlog
%attr(755,root,root) %{_bindir}/mysqladmin
-%attr(755,root,root) %{_bindir}/mysqltest
%{_mandir}/man1/mysql.1*
%{_mandir}/man1/mysqladmin.1*
%{_mandir}/man1/mysqldump.1*
%defattr(644,root,root,755)
%doc EXCEPTIONS-CLIENT
%attr(755,root,root) %{_libdir}/lib*.so.*.*
+%attr(751,root,root) %dir %{_sysconfdir}/mysql
+%attr(644,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mysql/mysql-client.conf
%files devel
%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
+%attr(755,root,root) %{_bindir}/*resolve_stack_dump
%{_libdir}/lib*.la
%{_libdir}/lib*[!tr].a
%{_includedir}/mysql
%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/[bcgrst]*
+%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 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
%attr(754,root,root) /etc/rc.d/init.d/mysql-ndb
-%attr(640,root,root) %config(noreplace) %verify(not md5 size mtime) /etc/sysconfig/mysql-ndb
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/mysql-ndb
%files ndb-client
%defattr(644,root,root,755)
%defattr(644,root,root,755)
%attr(755,root,root) %{_sbindir}/ndb_mgmd
%attr(754,root,root) /etc/rc.d/init.d/mysql-ndb-mgm
-%attr(640,root,root) %config(noreplace) %verify(not md5 size mtime) /etc/sysconfig/mysql-ndb-mgm
-
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/mysql-ndb-mgm
%files ndb-cpc
%defattr(644,root,root,755)
%attr(755,root,root) %{_sbindir}/ndb_cpcd
%attr(754,root,root) /etc/rc.d/init.d/mysql-ndb-cpc
-%attr(640,root,root) %config(noreplace) %verify(not md5 size mtime) /etc/sysconfig/mysql-ndb-cpc
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/mysql-ndb-cpc