# # spec file for package mariadb # # Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ # # Few definitions which will alter build %define preferred 01 %define use_systemd 01 %define use_cmake 01 %define cluster 00 %define have_info 0 %define builtin_plugins partition,csv,heap,aria,pbxt,myisam,myisammrg,xtradb %define use_extra_provides 1 %define extra_provides mariadb_100 %if ! %{defined _rundir} %define _rundir %{_localstatedir}/run %endif %if %{?rel:0}%{!?rel:1} %define rel 1 %endif #Distribution: %dist #Packager: %packager #Vendor: %vendor Name: mariadb Summary: Server part of MariaDB License: SUSE-GPL-2.0-with-FLOSS-exception Group: Productivity/Databases/Servers Version: 10.0.11 Release: 0 %define srv_vers 5.6.17 Url: http://www.mariab.org Source: mariadb-%{version}.tar.bz2 Source2: baselibs.conf Source3: README.debug Source4: suse-test-run Source5: mysql.SuSEfirewall2 Source7: README.install Source8: README.SuSE Source9: mysql-patches.tar.bz2 Source10: build.inc Source11: install.inc Source12: series Source13: configuration-tweaks.tar.bz2 Source14: my.ini Source15: rc.mysql.sysvinit Source16: rc.mysql.systemd Source17: mysql.service BuildRoot: %{_tmppath}/%{name}-%{version}-build %if 0%{?suse_version} PreReq: pwdutils %if %have_info PreReq: %install_info_prereq %insserv_prereq %endif %endif BuildRequires: autoconf BuildRequires: automake BuildRequires: bison BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: libaio-devel BuildRequires: libedit-devel BuildRequires: libtool BuildRequires: ncurses-devel BuildRequires: openssl-devel BuildRequires: pam-devel BuildRequires: procps BuildRequires: readline-devel BuildRequires: zlib-devel %if 0%{?suse_version} BuildRequires: pwdutils BuildRequires: tcpd-devel %endif %if 0%{?suse_version} > 1030 || 0%{?fedora_version} > 8 BuildRequires: fdupes %endif %if 0%{?fedora_version} > 11 BuildRequires: sqlite %endif %if 0%{?suse_version} > 1030 Recommends: logrotate %else Requires: logrotate %endif # required by rcmysql Requires: %{name}-client Requires: %{name}-errormessages = %version Requires: perl-base # systemd requirements for openSUSE >= 12.1 %if 0%{?suse_version} >= 1210 BuildRequires: systemd %{?systemd_requires} %endif %if "%{name}" != mysql Provides: mysql = %{srv_vers} %endif Provides: mysql-Max = %{srv_vers} %if 0%{?use_extra_provides} > 0 Provides: %{extra_provides} = %{version} Obsoletes: %{extra_provides} < %{version} %endif %if 0%{?preferred} > 0 %if "%{name}" != mysql Obsoletes: mysql < %{srv_vers} %endif Obsoletes: mysql-Max < %{srv_vers} %endif Conflicts: otherproviders(mysql) %description MariaDB is a backward compatible, drop-in replacement branch of the MySQL Database Server. It includes all major open source storage engines, including the Maria storage engine. This package only contains the server-side programs. %if 0%{?preferred} > 0 %package -n libmysqlclient-devel # mysql-devel was last used in openSUSE 10.2 Provides: mysql-devel = %srv_vers-%release Obsoletes: mysql-devel < %srv_vers Requires: glibc-devel Requires: libmysqlclient18 = %version Requires: libmysqlclient_r18 = %version Requires: openssl-devel Requires: zlib-devel Summary: MariaDB development header files and libraries Group: Development/Libraries/C and C++ %description -n libmysqlclient-devel This package contains the development header files and libraries necessary to develop client applications for MariaDB. %package -n libmysqld18 Summary: MariaDB embedded server development files Group: Development/Libraries/C and C++ Requires: %{name}-errormessages = %version %description -n libmysqld18 This package contains the development header files and libraries for developing applications that embed the MariaDB. %package -n libmysqld-devel Summary: MariaDB embedded server development files Group: Development/Libraries/C and C++ # the headers files are the shared Requires: libmysqlclient-devel = %version Requires: libmysqld18 = %version Requires: tcpd-devel %description -n libmysqld-devel This package contains the development header files and libraries for developing applications that embed the MariaDB. %endif %package -n libmysqlclient18 Summary: Shared Libraries for MariaDB Group: Development/Libraries/Other %description -n libmysqlclient18 This package contains the shared libraries (.so) which certain languages and applications need to dynamically load and use MariaDB. %package -n libmysqlclient_r18 Summary: Shared Libraries for MariaDB Group: Development/Libraries/Other Requires: libmysqlclient18 %description -n libmysqlclient_r18 This package contains the shared libraries (.so) which certain languages and applications need to dynamically load and use MariaDB. %package client Summary: Client for MariaDB Group: Productivity/Databases/Clients %if "%{name}" != mysql Provides: mysql-client = %{srv_vers} %endif %if 0%{?suse_version} PreReq: pwdutils %endif %if 0%{?use_extra_provides} > 0 Provides: %{extra_provides}-client = %{version} Obsoletes: %{extra_provides}-client < %{version} %endif Requires: %{name}-errormessages = %version %if 0%{?preferred} > 0 %if "%{name}" != mysql Obsoletes: mysql-client < %{srv_vers} %endif %endif Conflicts: otherproviders(mysql-client) %description client This package contains the standard clients for MariaDB. %package errormessages Summary: MySQL Community Server development header files and libraries Group: Development/Libraries/C and C++ %description errormessages This package provides the translated error messages for the standalone server daemon as well as the embedded server %package bench Requires: %{name}-client Requires: perl-DBD-mysql Summary: Benchmarks for MariaDB Group: Productivity/Databases/Tools %if "%{name}" != mysql Provides: mysql-bench = %{srv_vers} %endif %if 0%{?use_extra_provides} > 0 Provides: %{extra_provides}-bench = %{version} Obsoletes: %{extra_provides}-bench < %{version} %endif %if 0%{?preferred} > 0 %if "%{name}" != mysql Obsoletes: mysql-bench < %{srv_vers} %endif %endif Conflicts: otherproviders(mysql-bench) %description bench This package contains benchmark scripts and data for MariaDB. To run these database benchmarks, start the script "run-all-tests" in the directory /usr/share/sql-bench after starting MariaDB. %package debug-version Summary: MariaDB with debug options turned on Group: Productivity/Databases/Servers Requires: %{name} = %{version} Provides: %{name}-debug = %{srv_vers} Provides: mysql-debug = %{srv_vers} %if 0%{?use_extra_provides} > 0 Provides: %{extra_provides}-debug-verion = %{version} Obsoletes: %{extra_provides}-debug-version < %{version} %endif %if 0%{?preferred} > 0 Obsoletes: mysql-debug < %{srv_vers} %endif Conflicts: otherproviders(mysql-debug) %description debug-version A version of the MariaDB that has some debug code turned on. It should be only used to track down problems with the standard servers. Note that merely installing this package will bot replace the standard server. Read /usr/share/doc/packages/mysql/README.debug for information on how to use the debug server. %package test Summary: Testsuite for MariaDB Group: Productivity/Databases/Servers Requires: %{name} = %{version} Requires: %{name}-bench = %{version} Requires: %{name}-client = %{version} Requires: %{name}-tools = %{version} Requires: perl-DBD-mysql %if "%{name}" != mysql Provides: mysql-test = %{srv_vers} %endif %if 0%{?use_extra_provides} > 0 Provides: %{extra_provides}-test = %{version} Obsoletes: %{extra_provides}-test < %{version} %endif %if 0%{?preferred} > 0 %if "%{name}" != mysql Obsoletes: mysql-test < %{srv_vers} %endif %endif Conflicts: otherproviders(mysql-test) %description test This package contains the test scripts and data for MariaDB. To run the testsuite, run /usr/share/mysql-test/suse-test-run. %package tools Summary: MariaDB tools Group: Productivity/Databases/Servers Requires: perl-DBD-mysql # make sure this package is installed when updating from 10.2 and older Provides: mysql-client:/usr/bin/perror %if "%{name}" != mysql Provides: mysql-tools = %{srv_vers} %endif Provides: mysql:/usr/bin/mysqlhotcopy %if 0%{?use_extra_provides} > 0 Provides: %{extra_provides}-tools = %{version} Obsoletes: %{extra_provides}-tools < %{version} %endif %if 0%{?preferred} > 0 %if "%{name}" != mysql Obsoletes: mysql-tools < %{srv_vers} %endif %endif Conflicts: otherproviders(mysql-tools) %description tools A set of scripts for administering a MariaDB or developing applications with MariaDB. %if 0%{?cluster} > 0 %if 0%{?cluster} > 1 %package -n libndbclient6 Summary: Shared Libraries for cluster client Group: Development/Libraries/Other %description -n libndbclient6 This package contains the shared libraries (.so) which certain languages and applications need to dynamically load and use MariaDB cluster. %endif %package ndb-storage Summary: MariaDB - ndbcluster storage engine Group: Productivity/Databases/Servers %if "%{name}" != mysql Provides: mysql-ndb-storage = %{srv_vers} Obsoletes: mysql-ndb-storage < %{srv_vers} %endif Conflicts: otherproviders(mysql-ndb-storage) %description ndb-storage This package contains the ndbcluster storage engine. It is necessary to have this package installed on all computers that should store ndbcluster table data. %package ndb-management Summary: MariaDB - ndbcluster storage engine management Group: Productivity/Databases/Servers %if "%{name}" != mysql Provides: mysql-ndb-management = %{srv_vers} Obsoletes: mysql-ndb-management < %{srv_vers} %endif Conflicts: otherproviders(mysql-ndb-management) %description ndb-management This package contains ndbcluster storage engine management. It is necessary to have this package installed on at least one computer in the cluster. %package ndb-tools Summary: MariaDB - ndbcluster storage engine basic tools Group: Productivity/Databases/Servers %if "%{name}" != mysql Provides: mysql-ndb-tools = %{srv_vers} Obsoletes: mysql-ndb-tools < %{srv_vers} %endif Conflicts: otherproviders(mysql-ndb-tools) %description ndb-tools This package contains ndbcluster storage engine basic tools. %package ndb-extra Summary: MariaDB - ndbcluster storage engine extra tools Group: Productivity/Databases/Servers %if "%{name}" != mysql Provides: mysql-ndb-extra = %{srv_vers} Obsoletes: mysql-ndb-extra < %{srv_vers} %endif Conflicts: otherproviders(mysql-ndb-extra) %description ndb-extra This package contains some extra ndbcluster storage engine tools for the advanced user. They should be used with caution. %endif %prep %setup -q -n mariadb-%{version} -D -a 9 cp %_sourcedir/README.SuSE . cp %_sourcedir/suse-test-run . # apply patches from series mysql-patches/tools/quilt-setup.sh "%{S:12}" mysql-patches/tools/apply-series.sh "%{S:12}" # remove unneeded manpages ('make install' basically installs everything under # man/*) rm -f man/mysqlman.1 # dummy fallback manpage [ \! -f man/CMakeLists.txt ] || sed -i 's|mysqlman.1||' man/CMakeLists.txt rm -f man/mysql.server.1 # init script, not installed in our rpm [ \! -f man/CMakeLists.txt ] || sed -i 's|mysql.server.1||' man/CMakeLists.txt rm -f man/make_win_*.1 # windows build scripts rm -f man/comp_err.1 # built-time utility # 5.1 Carrier Grade Edition only / still under development as of 5.1.22 rm -f man/ndbd_redo_log_reader.1 # breaks VPATH builds when in sourcedir, is generated in the builddirs rm -f sql/sql_builtin.cc sed -i 's|@localstatedir@|/var/log|' support-files/mysql-log-rotate.sh %if 0%{preferred} < 1 for i in `grep -Rl mysqlclient .`; do sed -i 's|mysqlclient|mysqlclient|g' $i sed -i 's|-libmysqlclient-symbols.patch|-libmysqlclient-symbols.patch|g' $i done %endif # Broken test that needs sources rm -f mysql-test/t/file_contents.test mysql-test/r/file_contents.result # Specify perl path on shebangs for i in `grep -Rl '^#!@PERL@$' .`; do sed -i 's|@PERL@|/usr/bin/perl|' $i done %build %{expand:%(cat %_sourcedir/build.inc)} %install %{expand:%(cat %_sourcedir/install.inc)} %pre /usr/sbin/groupadd -r mysql >/dev/null 2>/dev/null || : /usr/sbin/useradd -r -o -g mysql -u 60 -c "MySQL database admin" \ -s /bin/false -d /var/lib/mysql mysql 2> /dev/null || : /usr/sbin/usermod -g mysql -s /bin/false mysql 2> /dev/null || : # systemd requirment %if 0%{?suse_version} >= 1210 %service_add_pre mysql.service %endif %pre client /usr/sbin/groupadd -r mysql >/dev/null 2>/dev/null || : /usr/sbin/useradd -r -o -g mysql -u 60 -c "MySQL database admin" \ -s /bin/false -d /var/lib/mysql mysql 2> /dev/null || : /usr/sbin/usermod -g mysql -s /bin/false mysql 2> /dev/null || : %post # systemd requirment %if 0%{?suse_version} >= 1210 %service_add_post mysql.service %endif ####################################################################### # preun and posttran takes care of restart # ####################################################################### %preun [ $1 = 1 ] || /usr/sbin/rcmysql stop || true %pretrans -p if posix.access("/usr/sbin/rcmysql", "x") then restart = os.execute("/usr/sbin/rcmysql status > /dev/null") if restart == 0 then os.execute("/usr/sbin/rcmysql stop") os.execute("/bin/mkdir -p %{_rundir}/mysql/restart") end end %posttrans %if %have_info [ -z "`ls %{_infodir}/mysql.info.* 2> /dev/null`" ] || \ %install_info --info-dir=%{_infodir} %{_infodir}/mysql.info.* %endif if [ -d /var/lib/mysql ]; then touch /var/lib/mysql/.run-mysql_upgrade chown -R --no-dereference mysql:mysql /var/lib/mysql fi for i in /var/lib/mysql/{.protected,.tmp}; do ( [ -d "$i" ] && rmdir "$i" ) || : done # start mysql again if it should run if [ "`ls /etc/rc.d/rc*.d/S*mysql 2> /dev/null`" ] || [ -d %{_rundir}/mysql/restart ]; then [ -x /usr/sbin/rcmysql ] && /usr/sbin/rcmysql start rmdir %{_rundir}/mysql/restart || : fi # warn on first run datadir="/var/lib/mysql" if [ -x /usr/bin/my_print_defaults ]; then datadir="`/usr/bin/my_print_defaults mysqld mysql_server | sed -n 's|--datadir=||p'`" [ "$datadir" ] || datadir="/var/lib/mysql" fi if [ \! -d "$datadir/mysql" ]; then cat > /var/adm/update-messages/%{name}-%{version}-%{release} << EOF %(cat %_sourcedir/README.install) EOF fi ####################################################################### # Various ldconfig post scripts # ####################################################################### %post -n libmysqlclient18 -p /sbin/ldconfig %postun -n libmysqlclient18 -p /sbin/ldconfig %post -n libmysqlclient_r18 -p /sbin/ldconfig %postun -n libmysqlclient_r18 -p /sbin/ldconfig %if 0%{cluster} > 1 %post -n libndbclient6 -p /sbin/ldconfig %postun -n libndbclient6 -p /sbin/ldconfig %endif %if 0%{preferred} > 0 %post -n libmysqld18 -p /sbin/ldconfig %postun -n libmysqld18 -p /sbin/ldconfig %endif %postun if [ $1 = 0 ]; then %if %have_info %install_info_delete --info-dir=%{_infodir} %{_infodir}/mysql.info.* %endif %{insserv_cleanup} rm -f "/var/lib/systemd/migrated/mysql.service" if [ -x /usr/bin/systemctl ]; then /usr/bin/systemctl daemon-reload >/dev/null 2>&1 || : fi fi ####################################################################### # Files section # ####################################################################### %files -f mysql.files %defattr(-, root, root) %config(noreplace) %attr(0640, root, mysql) /etc/my.cnf %dir %attr(0750, root, mysql) /etc/my.cnf.d %config(noreplace) %attr(0640, root, mysql) /etc/my.cnf.d/* %config /etc/logrotate.d/mysql %doc %{_defaultdocdir}/%{name} %if %have_info %doc %{_infodir}/mysql.info.* %endif %if 0%{?suse_version} >= 1210 && 0%{?use_systemd} > 0 %dir /usr/lib/mysql /usr/lib/mysql/rcmysql /usr/lib/systemd/system/mysql.service %else /etc/init.d/mysql %endif /usr/sbin/rcmysql %dir /usr/share/%{name} %dir /usr/share/mysql /usr/share/%{name}/charsets/ /usr/share/%{name}/*.sql %ghost %dir %attr(755,mysql,mysql)%{_rundir}/mysql %dir %{_libdir}/mysql %{_libdir}/mysql/mysqld.sym %config /etc/sysconfig/SuSEfirewall2.d/services/mysql %dir %_libdir/mysql/plugin %_libdir/mysql/plugin/[!d]*.so %files errormessages -f errormessages.files %defattr(-, root, root) /usr/share/%{name}/*/errmsg.sys %files client -f mysql-client.files %defattr(-, root, root) %if 0%{preferred} > 0 %files -n libmysqlclient-devel -f libmysqlclient-devel.files %defattr(-, root, root) /usr/include/mysql %{_libdir}/libmysqlclient.so %{_libdir}/libmysqlclient_r.so %dir /usr/share/aclocal /usr/share/aclocal/mysql.m4 %files -n libmysqld-devel %defattr(-,root,root) %_libdir/libmysqld.a %_libdir/libmysqld.so %files -n libmysqld18 %defattr(-,root,root) %_libdir/libmysqld.so.* %endif %files -n libmysqlclient18 %defattr(-, root, root) %{_libdir}/libmysqlclient.so.* %if 0%{cluster} > 1 %files -n libndbclient6 %defattr(-, root, root) %{_libdir}/libndbclient.so.* %endif %files -n libmysqlclient_r18 %defattr(-, root, root) %{_libdir}/libmysqlclient_r.so.* %files bench -f mysql-bench.files %defattr(-, root, root) /usr/share/sql-bench %files debug-version %defattr(-, root, root) /usr/sbin/mysqld-debug %{_libdir}/mysql/mysqld-debug.sym %files test -f mysql-test.files %defattr(-, root, root) %{_bindir}/my_safe_process %_mandir/man1/mysql-test-run.pl.1* %_mandir/man1/mysql-stress-test.pl.1* /usr/share/mysql-test/valgrind.supp %dir %attr(755, root, root)/usr/share/mysql-test /usr/share/mysql-test/[^v]* %dir %attr(755, mysql, mysql) /usr/share/mysql-test/var %files tools -f mysql-tools.files %defattr(-, root, root) %_bindir/mysqlrepair %_bindir/mysqlanalyze %_bindir/mysqloptimize %if 0%{cluster} > 0 %files ndb-storage -f mysql-ndb-storage.files %files ndb-management -f mysql-ndb-management.files %files ndb-tools -f mysql-ndb-tools.files %files ndb-extra -f mysql-ndb-extra.files %endif %changelog