mariadb/mariadb.spec
2014-11-14 19:24:46 +00:00

648 lines
19 KiB
RPMSpec

#
# 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/
#
# 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.14
Release: 0
%define srv_vers 5.6.20
Url: https://www.mariadb.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: libevent-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
%if 0%{?suse_version}
Requires: perl-base
%else
Requires: perl
%endif
# systemd requirements for openSUSE >= 12.1
%if 0%{?suse_version} >= 1210
BuildRequires: pkgconfig(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)
# Compatibility with Fedora/CentOS
Provides: mysql-server = %{srv_vers}
Provides: mariadb-server = %{srv_vers}
Conflicts: otherproviders(mysql-server)
Conflicts: otherproviders(mariadb-server)
%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 <lua>
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
fi
for in in protected tmp; do
rmdir /var/lib/mysql/.$i 2>/dev/null || :
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
# Might not be there, so ignoring errors
rmdir %{_rundir}/mysql/restart 2> /dev/null || :
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%{?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
%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