mariadb/mariadb.spec

514 lines
16 KiB
RPMSpec
Raw Normal View History

#
# 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 <lua>
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