File mysql-cluster.spec of Package mysql-cluster.import4837

#
# spec file for package mysql-cluster
#
# Copyright (c) 2011 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/
#

# norootforbuild

# Few definitions which will alter build
%define prefered   0
%define cluster    1
%define builtin_plugins partition,csv,heap,myisam,ndbcluster,innobase

%if %{?rel:0}%{!?rel:1}
%define rel 1
%endif
#Distribution:   %dist
#Packager:       %packager
#Vendor:         %vendor

Name:           mysql-cluster
Summary:        A True Multiuser, Multithreaded SQL Database Server
Version:        7.1.14
Release:        0.<RELEASE2>
%define srv_vers   5.1.56
License:        GPLv2 ; with additional permissions: EXCEPTIONS-CLIENT
Group:          Productivity/Databases/Servers
Url:            http://www.mysql.com
Source:         mysql-cluster-gpl-%{version}.tar.bz2
Source2:        baselibs.conf
Source3:        README.debug
Source4:        suse-test-run
Source5:        mysql.SuSEfirewall2
Source7:        rc.mysql-multi
Source8:        README.SuSE
Source9:        mysql-patches.tar.bz2
Source10:       build.inc
Source11:       install.inc
Source12:       series
Source13:       default_plugins.cnf
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
%if 0%{?suse_version}
PreReq:         pwdutils
%else
PreReq:         /usr/sbin/useradd /usr/sbin/usermod /usr/sbin/groupadd 
%endif
PreReq:         coreutils sed grep
%if 0%{?suse_version}
PreReq:         %install_info_prereq %insserv_prereq
%endif
BuildRequires:  bison gcc-c++ ncurses-devel openssl-devel procps readline-devel zlib-devel
%if 0%{?suse_version}
BuildRequires:  pwdutils 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 = %{version} perl-base
Provides:       mysql-Max = %{srv_vers}
Provides:       mysql = %{srv_vers}
Conflicts:      otherproviders(mysql)

%description
SQL is the most popular database language in the world. MySQL is a
client/server implementation that consists of a server daemon (mysqld)
and many different client programs and libraries.

MySQL Cluster is the industry’s only true real-time database that combines the
flexibility of a high availability relational database with the low Total Cost
of Ownership (TCO) of open source. It features a “shared-nothing” distributed
architecture with no single point of failure to assure 99.999% availability,
allowing you to meet your most demanding mission-critical application
requirements.

The official way to pronounce MySQL is "My Ess Que Ell" (Not
MY-SEQUEL).

This package only contains the server-side programs.

Authors:
--------
    Michael Widenius <monty@mysql.com>
    David Axmark <davida@mysql.com>



%if ! 0%{?prefered} > 0
#-------------------------------------------------------------------------------

%package -n libmysqlclusterclient16
#-------------------------------------------------------------------------------
Summary:        MySQL Cluster Shared Libraries
License:        GPLv2 ; with additional permissions: EXCEPTIONS-CLIENT
Group:          Development/Libraries/Other

%description -n libmysqlclusterclient16
This package contains the shared libraries (.so) which certain
languages and applications need to dynamically load and use MySQL Cluster.

Authors:
--------
    Michael Widenius <monty@mysql.com>
    David Axmark <davida@mysql.com>

#-------------------------------------------------------------------------------
%package -n libmysqlclusterclient_r16
#-------------------------------------------------------------------------------
Summary:        MySQL Cluster Shared Libraries
License:        GPLv2 ; with additional permissions: EXCEPTIONS-CLIENT
Group:          Development/Libraries/Other

%description -n libmysqlclusterclient_r16
This package contains the shared libraries (.so) which certain
languages and applications need to dynamically load and use MySQL Cluster.

Authors:
--------
    Michael Widenius <monty@mysql.com>
    David Axmark <davida@mysql.com>


%endif
%if 0%{?prefered} > 0
#-------------------------------------------------------------------------------

%package -n libmysqlclient-devel
#-------------------------------------------------------------------------------
# mysql-devel was last used in openSUSE 10.2
Provides:       mysql-devel = %srv_vers-%release
Requires:       libmysqlclient16 = %srv_vers libmysqlclient_r16 = %srv_vers glibc-devel zlib-devel openssl-devel
Summary:        MySQL Cluster Development Header Files and Libraries
License:        GPLv2 ; with additional permissions: EXCEPTIONS-CLIENT
Group:          Development/Libraries/C and C++

%description -n libmysqlclient-devel
This package contains the development header files and libraries
necessary to develop MySQL Cluster client applications.

Authors:
--------
    Michael Widenius <monty@mysql.com>
    David Axmark <davida@mysql.com>

#-------------------------------------------------------------------------------
%package -n libmysqld0
#-------------------------------------------------------------------------------
License:        GPLv2 ; with additional permissions: EXCEPTIONS-CLIENT
Summary:        MySQL Cluster embedded server development files
# the headers files are the shared
Requires:       libmysqlclient-devel = %srv_vers
Group:          Development/Libraries/C and C++

%description -n libmysqld0
This package contains the development header files and libraries
for developing application that embed the MySQL Cluster server


#-------------------------------------------------------------------------------
%package -n libmysqld-devel
#-------------------------------------------------------------------------------
License:        GPLv2 ; with additional permissions: EXCEPTIONS-CLIENT
Summary:        MySQL Cluster embedded server development files
# the headers files are the shared
Requires:       libmysqlclient-devel = %srv_vers
Requires:       libmysqld0 = %srv_vers
Group:          Development/Libraries/C and C++

%description -n libmysqld-devel
This package contains the development header files and libraries
for developing application that embed the MySQL Cluster server

#-------------------------------------------------------------------------------
%package -n libmysqlclient16
#-------------------------------------------------------------------------------
Summary:        MySQL Cluster Shared Libraries
License:        GPLv2 ; with additional permissions: EXCEPTIONS-CLIENT
Group:          Development/Libraries/Other

%description -n libmysqlclient16
This package contains the shared libraries (.so) which certain
languages and applications need to dynamically load and use MySQL.

Authors:
--------
    Michael Widenius <monty@mysql.com>
    David Axmark <davida@mysql.com>


#-------------------------------------------------------------------------------
%package -n libmysqlclient_r16
#-------------------------------------------------------------------------------
Summary:        MySQL Cluster Shared Libraries
License:        GPLv2 ; with additional permissions: EXCEPTIONS-CLIENT
Group:          Development/Libraries/Other

%description -n libmysqlclient_r16
This package contains the shared libraries (.so) which certain
languages and applications need to dynamically load and use MySQL.

Authors:
--------
    Michael Widenius <monty@mysql.com>
    David Axmark <davida@mysql.com>

%endif
#-------------------------------------------------------------------------------

%package client
#-------------------------------------------------------------------------------
License:        GPLv2 ; with additional permissions: EXCEPTIONS-CLIENT
Summary:        MySQL Cluster Client
Group:          Productivity/Databases/Clients
Provides:       mysql-client = %{srv_vers}
Conflicts:      otherproviders(mysql-client)

%description client
This package contains the standard MySQL Cluster clients.

Authors:
--------
    Michael Widenius <monty@mysql.com>
    David Axmark <davida@mysql.com>


#-------------------------------------------------------------------------------
%package bench
#-------------------------------------------------------------------------------
Requires:       %{name}-client perl-DBD-mysql
License:        LGPLv2.1
Summary:        MySQL Cluster - Benchmarks
Group:          Productivity/Databases/Tools
Provides:       mysql-bench = %{srv_vers}
Conflicts:      otherproviders(mysql-bench)

%description bench
This package contains MySQL Cluster benchmark scripts and data.

To run these database benchmarks, start the script "run-all-tests" in
the directory /usr/share/sql-bench after starting MySQL.

Authors:
--------
    Michael Widenius <monty@mysql.com>
    David Axmark <davida@mysql.com>

#-------------------------------------------------------------------------------
%if %{defined mdkversion}

%package debuging
License:        GPLv2 ; with additional permissions: EXCEPTIONS-CLIENT
%else

%package debug
%endif
#-------------------------------------------------------------------------------
License:        GPLv2 ; with additional permissions: EXCEPTIONS-CLIENT
Summary:        MySQL Cluster server with debug options turned on
Group:          Productivity/Databases/Servers
Requires:       %{name} = %{version}
Provides:       mysql-debug = %{srv_vers}
Conflicts:      otherproviders(mysql-debug)

%if %{defined mdkversion}

%description debuging

%else

%description debug

%endif
A version of the mysql server 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 won't replace the
standard server. Read /usr/share/doc/packages/mysql/README.debug for
information on how to use the debug server.

Authors:
--------
    Michael Widenius <monty@mysql.com>
    David Axmark <davida@mysql.com>

#-------------------------------------------------------------------------------

%package test
#-------------------------------------------------------------------------------
License:        GPLv2 ; with additional permissions: EXCEPTIONS-CLIENT
Summary:        MySQL Cluster testsuite
Group:          Productivity/Databases/Servers
Requires:       %{name} = %{version}
Requires:       %{name}-client = %{version}
Requires:       perl-DBD-mysql
Requires:       %{name}-tools = %{version}
Requires:       %{name}-bench = %{version}
Provides:       mysql-test = %{srv_vers}
Conflicts:      otherproviders(mysql-test)
Requires:       %{name}-ndb-storage = %{version}
Requires:       %{name}-ndb-tools = %{version}
Requires:       %{name}-ndb-management = %{version}

%description test
This package contains the MySQL Cluster test scripts and data.

To run the testsuite, run /usr/share/mysql-test/suse-test-run.

Authors:
--------
    Michael Widenius <monty@mysql.com>
    David Axmark <davida@mysql.com>


#-------------------------------------------------------------------------------
%package tools
#-------------------------------------------------------------------------------
License:        GPLv2 ; with additional permissions: EXCEPTIONS-CLIENT
Summary:        MySQL Cluster tools
Group:          Productivity/Databases/Servers
Requires:       perl-DBD-mysql
# make sure this package is installed when updating from 10.2 and older
Provides:       mysql:/usr/bin/mysqlhotcopy mysql-client:/usr/bin/perror
Provides:       mysql-tools = %{srv_vers}
Conflicts:      otherproviders(mysql-tools)

%description tools
A set of scripts for administering a MySQL Cluster server or developing
applications with MySQL.

Authors:
--------
    Michael Widenius <monty@mysql.com>
    David Axmark <davida@mysql.com>

%if 0%{?cluster} > 0
#-------------------------------------------------------------------------------

%package ndb-storage
#-------------------------------------------------------------------------------
License:        GPLv2 ; with additional permissions: EXCEPTIONS-CLIENT
Summary:        MySQL Cluster - ndbcluster storage engine
Group:          Productivity/Databases/Servers
Provides:       mysql-ndb-storage = %{srv_vers}
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
#-------------------------------------------------------------------------------
License:        GPLv2 ; with additional permissions: EXCEPTIONS-CLIENT
Summary:        MySQL Cluster - ndbcluster storage engine management
Group:          Productivity/Databases/Servers
Provides:       mysql-ndb-management = %{srv_vers}
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
#-------------------------------------------------------------------------------
License:        GPLv2 ; with additional permissions: EXCEPTIONS-CLIENT
Summary:        MySQL Cluster - ndbcluster storage engine basic tools
Group:          Productivity/Databases/Servers
Provides:       mysql-ndb-tools = %{srv_vers}
Conflicts:      otherproviders(mysql-ndb-tools)

%description ndb-tools
This package contains ndbcluster storage engine basic tools.


#-------------------------------------------------------------------------------
%package ndb-extra
#-------------------------------------------------------------------------------
License:        GPLv2 ; with additional permissions: EXCEPTIONS-CLIENT
Summary:        MySQL Cluster - ndbcluster storage engine extra tools
Group:          Productivity/Databases/Servers
Provides:       mysql-ndb-extra = %{srv_vers}
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 mysql-cluster-gpl-%{version} -D -a 9
cp %_sourcedir/README.SuSE .
cp %_sourcedir/suse-test-run .
# apply patches from series
ln -s mysql-patches/patches .
cp %_sourcedir/series patches
mysql-patches/apply-series.sh patches/series
# remove unneeded manpages ('make install' basically installs everything under
# man/*)
rm -f man/mysqlman.1        # dummy fallback manpage
rm -f man/mysql.server.1    # init script, not installed in our rpm
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%{?prefered} > 0
for i in `grep -Rl mysqlclient .`; do
	sed -i 's|mysqlclient|mysqlclusterclient|g' $i
done
%endif

#-------------------------------------------------------------------------------

%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 || :

#-------------------------------------------------------------------------------

%preun
#-------------------------------------------------------------------------------
[ $1 = 1 ] || /usr/sbin/rcmysql stop
%pretrans
if [ -x /usr/sbin/rcmysql ]; then
	RESTART=""
	/usr/sbin/rcmysql status > /dev/null && RESTART="yes"
	/usr/sbin/rcmysql stop
	[ "$RESTART" ] && mkdir -p /var/run/mysql/restart
fi
dbfile=var/mysql/mysql/db.ISM
olddir=var/mysql
newdir=var/lib/mysql
# Do the database files still belong to root (very old installation)?
# Change ownerships
if [ -O $dbfile ]
then
chown -Rv mysql:mysql var/mysql/
fi

#-------------------------------------------------------------------------------

%posttrans
#-------------------------------------------------------------------------------
%install_info --info-dir=%{_infodir} %{_infodir}/mysql.info.*
if [ -d /var/lib/mysql ]; then
	touch /var/lib/mysql/.run-mysql_upgrade
	chown -R 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 /var/run/mysql/restart ]; then
	[ -x /usr/sbin/rcmysql ] && /usr/sbin/rcmysql start
	rmdir /var/run/mysql/restart || :
fi

%if ! 0%{prefered} > 0
#-------------------------------------------------------------------------------

%post -n libmysqlclusterclient16
#-------------------------------------------------------------------------------
/sbin/ldconfig
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------

%postun -n libmysqlclusterclient16
#-------------------------------------------------------------------------------
/sbin/ldconfig
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------

%post -n libmysqlclusterclient_r16
#-------------------------------------------------------------------------------
/sbin/ldconfig
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------

%postun -n libmysqlclusterclient_r16
#-------------------------------------------------------------------------------
/sbin/ldconfig
#-------------------------------------------------------------------------------

%endif
%if 0%{prefered} > 0
#-------------------------------------------------------------------------------

%post -n libmysqlclient16
#-------------------------------------------------------------------------------
/sbin/ldconfig
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------

%postun -n libmysqlclient16
#-------------------------------------------------------------------------------
/sbin/ldconfig
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------

%post -n libmysqlclient_r16
#-------------------------------------------------------------------------------
/sbin/ldconfig
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------

%postun -n libmysqlclient_r16
#-------------------------------------------------------------------------------
/sbin/ldconfig
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------

%post -n libmysqld0
#-------------------------------------------------------------------------------
/sbin/ldconfig
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------

%postun -n libmysqld0
#-------------------------------------------------------------------------------
/sbin/ldconfig
#-------------------------------------------------------------------------------
%endif

#-------------------------------------------------------------------------------

%postun
#-------------------------------------------------------------------------------
if [ $1 = 0 ]; then
	%install_info_delete --info-dir=%{_infodir} %{_infodir}/mysql.info.*
	%{insserv_cleanup}
fi
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------

%clean
#-------------------------------------------------------------------------------
[ "$RPM_BUILD_ROOT" != "/" ] && [ -d $RPM_BUILD_ROOT ] && %{__rm} -rf $RPM_BUILD_ROOT
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------

%files -f mysql.files
#-------------------------------------------------------------------------------
%defattr(-, root, root)
%config(noreplace) %attr(0640, root, mysql) /etc/my.cnf
%dir %attr(0750, root, mysql) /etc/mysql
%config(noreplace) %attr(0640, root, mysql) /etc/mysql/*
%config /etc/logrotate.d/mysql
%doc %{_defaultdocdir}/%{name}
%doc %{_infodir}/mysql.info.*
/etc/init.d/mysql
/usr/sbin/rcmysql
/usr/share/mysql/
%dir %attr(755,mysql,mysql)/var/run/mysql
%dir %{_libdir}/mysql
%{_libdir}/mysql/mysqld.sym
%config /etc/sysconfig/SuSEfirewall2.d/services/mysql
%dir %_libdir/mysql/plugin
%_libdir/mysql/plugin/*.so
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------

%files client -f mysql-client.files
#-------------------------------------------------------------------------------
%defattr(-, root, root)
%config /etc/mysqlaccess.conf
#-------------------------------------------------------------------------------

%if ! 0%{prefered} > 0
#-------------------------------------------------------------------------------

%files -n libmysqlclusterclient16
#-------------------------------------------------------------------------------
%defattr(-, root, root)
%{_libdir}/libmysqlclusterclient.so.*
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------

%files -n libmysqlclusterclient_r16
#-------------------------------------------------------------------------------
%defattr(-, root, root)
%{_libdir}/libmysqlclusterclient_r.so.*
#-------------------------------------------------------------------------------
%endif

%if 0%{prefered} > 0
#-------------------------------------------------------------------------------

%files -n libmysqlclient-devel -f libmysqlclient-devel.files
#-------------------------------------------------------------------------------
%defattr(-, root, root)
/usr/include/mysql
%{_libdir}/libmysqlclient.so
%{_libdir}/libmysqlclient_r.so
/usr/share/aclocal/mysql.m4
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------

%files -n libmysqld-devel
#-------------------------------------------------------------------------------
%defattr(-,root,root)
%_libdir/libmysqld.a
%_libdir/libmysqld.so
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------

%files -n libmysqld0
#-------------------------------------------------------------------------------
%defattr(-,root,root)
%_libdir/libmysqld.so.*
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------

%files -n libmysqlclient16
#-------------------------------------------------------------------------------
%defattr(-, root, root)
%{_libdir}/libmysqlclient.so.*
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------

%files -n libmysqlclient_r16
#-------------------------------------------------------------------------------
%defattr(-, root, root)
%{_libdir}/libmysqlclient_r.so.*
#-------------------------------------------------------------------------------
%endif

#-------------------------------------------------------------------------------

%files bench -f mysql-bench.files
#-------------------------------------------------------------------------------
%defattr(-, root, root)
/usr/share/sql-bench
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------
%if %{defined mdkversion}

%files debuging
%else

%files debug
%endif
#-------------------------------------------------------------------------------
%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)
/usr/bin/mysqlanalyze
/usr/bin/mysqloptimize
/usr/bin/mysqlrepair
#-------------------------------------------------------------------------------

%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