File cluster-glue.spec of Package cluster-glue
#
# spec file for package cluster-glue
#
# Copyright (c) 2012 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 uid 90
%define gname haclient
%define uname hacluster
%if 0%{?sles_version} == 11
# these three architectures have a problem with glib2
%ifarch ppc ppc64 ia64
%define warnings_fatal no
%else
%define warnings_fatal yes
%endif
%else
# Disable warnings for Factory
%define warnings_fatal no
%endif
# Directory where we install documentation
%global glue_docdir %{_defaultdocdir}/%{name}
Name: cluster-glue
Summary: The Heartbeat Subsystem for High-Availability Linux
License: GPL-2.0 ; LGPL-2.1+
Group: Productivity/Clustering/HA
Version: 1.0.9
Release: 0
Url: http://linux-ha.org/
Source: cluster-glue-%{version}.tar.bz2
Source2: baselibs.conf
Patch0: fix-runlevels.diff
Patch1: bug-694243_cluster-glue_symbol-conflict.patch
Patch2: bnc662816_cluster-glue_hb_report_abspath.patch
Patch4: bug-728579_glue-stonith-dev-id.patch
Patch5: fix-glib_h-include.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: OpenIPMI-devel
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: docbook-xsl-stylesheets
BuildRequires: docbook_4
BuildRequires: e2fsprogs-devel
BuildRequires: glib2-devel
BuildRequires: help2man
BuildRequires: libtool
BuildRequires: libxml2-devel
BuildRequires: libxslt
BuildRequires: net-snmp-devel
BuildRequires: openhpi-devel
BuildRequires: pkgconfig
BuildRequires: python-devel
%if 0%{?suse_version} > 1130
BuildRequires: libnet-devel
PreReq: sysvinit(network) sysvinit(syslog)
%else
BuildRequires: libnet
%endif
Conflicts: heartbeat-common < 3.0.2
Obsoletes: heartbeat-common < 3.0.2
Requires: perl-TimeDate
Requires(pre): /usr/sbin/groupadd /usr/bin/getent /usr/sbin/useradd
# SLES10 needs tcpd-devel but doesn't have libcurl
%if 0%{?suse_version} < 1020
BuildRequires: sgml-skel
BuildRequires: tcpd-devel
%else
BuildRequires: libcurl-devel
%endif
%description
heartbeat is a sophisticated multinode resource manager for High
Availability clusters.
It can failover arbitrary resources, ranging from IP addresses over NFS
to databases that are tied in via resource scripts. The resources can
have arbitrary dependencies for ordering or placement between them.
heartbeat contains a cluster membership layer, fencing, and local and
clusterwide resource management functionality.
1.2/1.0 based 2-node only configurations are supported in a legacy
mode.
heartbeat implements the following kinds of heartbeats:
- Serial ports
- UDP/IPv4 broadcast, multi-cast, and unicast
- IPv4 "ping" pseudo-cluster members.
%package -n libglue2
Summary: The Pacemaker scalable High-Availability cluster resource manager
Group: Productivity/Clustering/HA
Obsoletes: libheartbeat2 < 3.0.2
Conflicts: libheartbeat2 < 3.0.2
Requires: %{name} = %{version}-%{release}
%description -n libglue2
A collection of libraries that are useful for writing cluster managers
such as Pacemaker.
%package -n libglue-devel
Summary: The Heartbeat Subsystem for High-Availability Linux
Group: Productivity/Clustering/HA
Requires: %{name} = %{version}-%{release}
Requires: libglue2 = %{version}-%{release}
Conflicts: libheartbeat-devel < 3.0.2
Obsoletes: libheartbeat-devel < 3.0.2
%description -n libglue-devel
heartbeat is a sophisticated multinode resource manager for High
Availability clusters.
It can failover arbitrary resources, ranging from IP addresses over NFS
to databases that are tied in via resource scripts. The resources can
have arbitrary dependencies for ordering or placement between them.
heartbeat contains a cluster membership layer, fencing, and local and
clusterwide resource management functionality.
1.2/1.0 based 2-node only configurations are supported in a legacy
mode.
heartbeat implements the following kinds of heartbeats:
- Serial ports
- UDP/IPv4 broadcast, multi-cast, and unicast
- IPv4 "ping" pseudo-cluster members.
%prep
###########################################################
%setup -n cluster-glue -q
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch4 -p1
%patch5 -p1
###########################################################
%build
CFLAGS="${CFLAGS} ${RPM_OPT_FLAGS}"
export CFLAGS
./autogen.sh
# SLES <= 10 does not support ./configure --docdir=,
# hence, use this ugly hack
%if 0%{?suse_version} < 1020
export docdir=%{glue_docdir}
%configure \
--enable-fatal-warnings=%{warnings_fatal} \
--with-package-name=%{name} \
--with-daemon-group=%{gname} \
--with-daemon-user=%{uname}
%else
%configure \
--enable-fatal-warnings=%{warnings_fatal} \
--with-package-name=%{name} \
--with-daemon-group=%{gname} \
--with-daemon-user=%{uname} \
--docdir=%{glue_docdir}
%endif
make %{?_smp_mflags}
###########################################################
%install
###########################################################
make DESTDIR=$RPM_BUILD_ROOT install
# Dont package static libs or compiled python
find $RPM_BUILD_ROOT -name '*.a' -type f -print0 | xargs -0 rm -f
find $RPM_BUILD_ROOT -name '*.la' -type f -print0 | xargs -0 rm -f
find $RPM_BUILD_ROOT -name '*.pyc' -type f -print0 | xargs -0 rm -f
find $RPM_BUILD_ROOT -name '*.pyo' -type f -print0 | xargs -0 rm -f
test -d $RPM_BUILD_ROOT/sbin || mkdir $RPM_BUILD_ROOT/sbin
(
cd $RPM_BUILD_ROOT/sbin
ln -s /etc/init.d/logd rclogd
)
###########################################################
%pre
if
getent group %{gname} >/dev/null
then
: OK group haclient already present
else
/usr/sbin/groupadd -o -r -g %{uid} %{gname} 2>/dev/null || :
fi
if
getent passwd %{uname} >/dev/null
then
: OK hacluster user already present
else
/usr/sbin/useradd -r -g %{gname} -c "heartbeat processes" \
-d %{_var}/lib/heartbeat/cores/%{uname} -o -u %{uid} \
%{uname} 2>/dev/null || :
fi
%preun
%stop_on_removal logd
%post
%{insserv_force_if_yast logd}
%postun
%restart_on_update logd
%insserv_cleanup
%post -n libglue2
/sbin/ldconfig
%postun -n libglue2
/sbin/ldconfig
%files
###########################################################
%defattr(-,root,root)
%dir %{_libdir}/heartbeat
%dir %{_var}/lib/heartbeat
%dir %{_var}/lib/heartbeat/cores
%dir %attr (0700, root, root) %{_var}/lib/heartbeat/cores/root
%dir %attr (0700, nobody, nobody) %{_var}/lib/heartbeat/cores/nobody
%dir %attr (0700, %{uname}, %{gname}) %{_var}/lib/heartbeat/cores/%{uname}
%dir %{_libdir}/heartbeat/plugins
%dir %{_libdir}/heartbeat/plugins/RAExec
%dir %{_libdir}/heartbeat/plugins/InterfaceMgr
%dir %{_libdir}/heartbeat/plugins/compress
%dir %{_libdir}/stonith
%dir %{_libdir}/stonith/plugins
%dir %{_libdir}/stonith/plugins/stonith2
%dir %{_datadir}/%{name}
%{_datadir}/%{name}/ha_cf_support.sh
%{_datadir}/%{name}/openais_conf_support.sh
%{_datadir}/%{name}/utillib.sh
%{_datadir}/%{name}/ha_log.sh
%{_datadir}/%{name}/combine-logs.pl
%{_sbindir}/ha_logger
%{_sbindir}/hb_report
%{_sbindir}/lrmadmin
%{_sbindir}/cibsecret
%{_sbindir}/meatclient
%{_sbindir}/stonith
%{_sbindir}/sbd
%{_sysconfdir}/init.d/logd
%doc %{_mandir}/man1/*
%doc %{_mandir}/man8/*
%doc AUTHORS
%doc COPYING
%doc logd/logd.cf
%doc doc/stonith/README*
/sbin/rclogd
%{_libdir}/heartbeat/lrmd
%{_libdir}/heartbeat/ha_logd
%{_libdir}/heartbeat/plugins/RAExec/*.so
%{_libdir}/heartbeat/plugins/InterfaceMgr/*.so
%{_libdir}/heartbeat/plugins/compress/*.so
%{_libdir}/stonith/plugins/external
%exclude %{_libdir}/stonith/plugins/stonith2/null.so
%exclude %{_libdir}/stonith/plugins/stonith2/ssh.so
%exclude %{_libdir}/stonith/plugins/external/ssh
%{_libdir}/stonith/plugins/stonith2/*.so
%{_libdir}/stonith/plugins/stonith2/*.py
%{_libdir}/stonith/plugins/xen0-ha-dom0-stonith-helper
%files -n libglue2
%defattr(-,root,root)
%{_libdir}/lib*.so.*
%doc AUTHORS
%doc COPYING.LIB
%files -n libglue-devel
%defattr(-,root,root)
%dir %{_libdir}/heartbeat
%dir %{_libdir}/heartbeat/plugins
%dir %{_libdir}/heartbeat/plugins/test
%dir %{_datadir}/%{name}
%{_libdir}/lib*.so
%{_libdir}/heartbeat/ipctest
%{_libdir}/heartbeat/ipctransientclient
%{_libdir}/heartbeat/ipctransientserver
%{_libdir}/heartbeat/transient-test.sh
%{_libdir}/heartbeat/base64_md5_test
%{_libdir}/heartbeat/logtest
%{_includedir}/clplumbing
%{_includedir}/heartbeat
%{_includedir}/stonith
%{_includedir}/pils
%{_datadir}/%{name}/lrmtest
%{_libdir}/heartbeat/plugins/test/test.so
%{_libdir}/stonith/plugins/stonith2/null.so
%{_libdir}/stonith/plugins/stonith2/ssh.so
%{_libdir}/stonith/plugins/external/ssh
%doc AUTHORS
%doc COPYING
%doc COPYING.LIB
%changelog