# # spec file for package mariadb # # Copyright (c) 2014 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/ # %define preferred 01 %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 %define srv_vers 5.6.21 %if ! %{defined _rundir} %define _rundir %{_localstatedir}/run %endif %bcond_with jemalloc %bcond_with oqgraph %bcond_with cassandra Name: mariadb Version: 10.0.15 Release: 0 Summary: Server part of MariaDB License: SUSE-GPL-2.0-with-FLOSS-exception Group: Productivity/Databases/Servers Url: https://www.mariadb.org Source: https://downloads.mariadb.org/f/mariadb-%{version}/source/mariadb-%{version}.tar.gz 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 BuildRequires: bison %if %{with oqgraph} || %{with cassandra} BuildRequires: boost-devel %endif BuildRequires: cmake BuildRequires: fdupes BuildRequires: gcc-c++ %if %{with jemalloc} BuildRequires: jemalloc-devel %endif %if %{with oqgraph} BuildRequires: judy-devel %endif BuildRequires: libaio-devel BuildRequires: libbz2-devel BuildRequires: libedit-devel BuildRequires: libevent-devel %if %{with cassandra} BuildRequires: libthrift-devel %endif BuildRequires: libtool BuildRequires: libxml2-devel BuildRequires: lzo-devel BuildRequires: ncurses-devel BuildRequires: openssl-devel BuildRequires: pam-devel BuildRequires: procps BuildRequires: pwdutils BuildRequires: readline-devel BuildRequires: sqlite BuildRequires: tcpd-devel BuildRequires: zlib-devel BuildRequires: pkgconfig(systemd) # required by rcmysql Requires: %{name}-client Requires: %{name}-errormessages = %{version} Requires: perl-base Requires(pre): pwdutils Recommends: logrotate Provides: mysql-Max = %{srv_vers} # Compatibility with Fedora/CentOS Provides: mysql-server = %{srv_vers} Provides: mariadb-server = %{srv_vers} # Compatibility with old version Provides: %{name}-debug-version = %{srv_vers} Obsoletes: %{name}-debug-version < %{srv_vers} Provides: %{name}-debug = %{srv_vers} Obsoletes: %{name}-debug < %{srv_vers} BuildRoot: %{_tmppath}/%{name}-%{version}-build Conflicts: otherproviders(mysql) Conflicts: otherproviders(mysql-server) Conflicts: otherproviders(mariadb-server) Conflicts: otherproviders(mysql-debug) %{?systemd_requires} %if 0%{have_info} > 0 Requires(post): %{install_info_prereq} %insserv_prereq %endif %if "%{name}" != mysql Provides: mysql = %{srv_vers} Provides: mysql-debug = %{srv_vers} %endif %if 0%{?use_extra_provides} > 0 Provides: %{extra_provides} = %{version} Obsoletes: %{extra_provides} < %{version} Provides: %{extra_provides}-debug-version = %{version} Obsoletes: %{extra_provides}-debug-version < %{version} %endif %if 0%{?preferred} > 0 Obsoletes: mysql-Max < %{srv_vers} %if "%{name}" != mysql Obsoletes: mysql < %{srv_vers} Obsoletes: mysql-debug < %{srv_vers} %endif %endif %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 Summary: MariaDB development header files and libraries Group: Development/Libraries/C and C++ Requires: glibc-devel Requires: libmysqlclient_r18 = %{version} Requires: libmysqlclient18 = %{version} Requires: openssl-devel Requires: zlib-devel # mysql-devel was last used in openSUSE 10.2 Provides: mysql-devel = %{srv_vers}-%{release} Obsoletes: mysql-devel < %{srv_vers} %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 Requires: %{name}-errormessages = %{version} Conflicts: otherproviders(mysql-client) %if "%{name}" != mysql Provides: mysql-client = %{srv_vers} %endif Requires(pre): pwdutils %if 0%{?use_extra_provides} > 0 Provides: %{extra_provides}-client = %{version} Obsoletes: %{extra_provides}-client < %{version} %endif %if 0%{?preferred} > 0 %if "%{name}" != mysql Obsoletes: mysql-client < %{srv_vers} %endif %endif %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 Summary: Benchmarks for MariaDB Group: Productivity/Databases/Tools Requires: %{name}-client Requires: perl-DBD-mysql Conflicts: otherproviders(mysql-bench) %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 %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 %{_datadir}/sql-bench after starting MariaDB. %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 Conflicts: otherproviders(mysql-test) %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 %description test This package contains the test scripts and data for MariaDB. To run the testsuite, run %{_datadir}/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:%{_bindir}/perror Provides: mysql:%{_bindir}/mysqlhotcopy Conflicts: otherproviders(mysql-tools) %if "%{name}" != mysql Provides: mysql-tools = %{srv_vers} %endif %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 %description tools A set of scripts for administering a MariaDB or developing applications with MariaDB. %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 "%{SOURCE12}" mysql-patches/tools/apply-series.sh "%{SOURCE12}" # 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@|%{_localstatedir}/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@|%{_bindir}/perl|' $i done %build %{expand:%(cat %{_sourcedir}/build.inc)} %install %{expand:%(cat %{_sourcedir}/install.inc)} %pre %{_sbindir}/groupadd -r mysql >/dev/null 2>/dev/null || : %{_sbindir}/useradd -r -o -g mysql -u 60 -c "MySQL database admin" \ -s /bin/false -d %{_localstatedir}/lib/mysql mysql 2> /dev/null || : %{_sbindir}/usermod -g mysql -s /bin/false mysql 2> /dev/null || : %service_add_pre mysql.service %pre client %{_sbindir}/groupadd -r mysql >/dev/null 2>/dev/null || : %{_sbindir}/useradd -r -o -g mysql -u 60 -c "MySQL database admin" \ -s /bin/false -d %{_localstatedir}/lib/mysql mysql 2> /dev/null || : %{_sbindir}/usermod -g mysql -s /bin/false mysql 2> /dev/null || : %post %service_add_post mysql.service ####################################################################### # preun and posttran takes care of restart # ####################################################################### %preun [ $1 = 1 ] || %{_sbindir}/rcmysql stop || true %pretrans -p if posix.access("%{_sbindir}/rcmysql", "x") then restart = os.execute("%{_sbindir}/rcmysql status > /dev/null") if restart == 0 then os.execute("%{_sbindir}/rcmysql stop") os.execute("/bin/mkdir -p %{_rundir}/mysql/restart") end end %posttrans %if 0%{have_info} > 0 [ -z "`ls %{_infodir}/mysql.info.* 2> /dev/null`" ] || \ %install_info --info-dir=%{_infodir} %{_infodir}/mysql.info.* %endif if [ -d %{_localstatedir}/lib/mysql ]; then touch %{_localstatedir}/lib/mysql/.run-mysql_upgrade fi for in in protected tmp; do rmdir %{_localstatedir}/lib/mysql/.$i 2>/dev/null || : done # start mysql again if it should run if [ "`ls %{_sysconfdir}/rc.d/rc*.d/S*mysql 2> /dev/null`" ] || [ -d %{_rundir}/mysql/restart ]; then [ -x %{_sbindir}/rcmysql ] && %{_sbindir}/rcmysql start # Might not be there, so ignoring errors rmdir %{_rundir}/mysql/restart 2> /dev/null || : fi # warn on first run datadir="%{_localstatedir}/lib/mysql" if [ -x %{_bindir}/my_print_defaults ]; then datadir="`%{_bindir}/my_print_defaults mysqld mysql_server | sed -n 's|--datadir=||p'`" [ "$datadir" ] || datadir="%{_localstatedir}/lib/mysql" fi if [ \! -d "$datadir/mysql" ]; then cat > %{_localstatedir}/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%{preferred} > 0 %post -n libmysqld18 -p /sbin/ldconfig %postun -n libmysqld18 -p /sbin/ldconfig %endif %postun if [ $1 = 0 ]; then %if 0%{have_info} > 0 %install_info_delete --info-dir=%{_infodir} %{_infodir}/mysql.info.* %endif %insserv_cleanup rm -f "%{_localstatedir}/lib/systemd/migrated/mysql.service" if [ -x %{_bindir}/systemctl ]; then %{_bindir}/systemctl daemon-reload >/dev/null 2>&1 || : fi fi ####################################################################### # Files section # ####################################################################### %files -f mysql.files %defattr(-, root, root) %config(noreplace) %attr(0640, root, mysql) %{_sysconfdir}/my.cnf %dir %attr(0750, root, mysql) %{_sysconfdir}/my.cnf.d %config(noreplace) %attr(0640, root, mysql) %{_sysconfdir}/my.cnf.d/* %config %{_sysconfdir}/logrotate.d/mysql %doc %{_defaultdocdir}/%{name} %if 0%{have_info} > 0 %doc %{_infodir}/mysql.info.* %endif %dir %{_libexecdir}/mysql %{_libexecdir}/mysql/rcmysql %{_libexecdir}/systemd/system/mysql.service %{_sbindir}/rcmysql %dir %{_datadir}/%{name} %dir %{_datadir}/mysql %{_datadir}/%{name}/charsets/ %{_datadir}/%{name}/*.sql %dir %{_libdir}/mysql %{_libdir}/mysql/mysqld.sym %config %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/mysql %dir %{_libdir}/mysql/plugin %{_libdir}/mysql/plugin/[!d]*.so %files errormessages -f errormessages.files %defattr(-, root, root) %{_datadir}/%{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) %{_includedir}/mysql %{_libdir}/libmysqlclient.so %{_libdir}/libmysqlclient_r.so %dir %{_datadir}/aclocal %{_datadir}/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.* %files -n libmysqlclient_r18 %defattr(-, root, root) %{_libdir}/libmysqlclient_r.so.* %files bench -f mysql-bench.files %defattr(-, root, root) %{_datadir}/sql-bench %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* %{_datadir}/mysql-test/valgrind.supp %dir %attr(755, root, root)%{_datadir}/mysql-test %{_datadir}/mysql-test/[^v]* %dir %attr(755, mysql, mysql) %{_datadir}/mysql-test/var %files tools -f mysql-tools.files %defattr(-, root, root) %{_bindir}/mysqlrepair %{_bindir}/mysqlanalyze %{_bindir}/mysqloptimize %changelog