File cluster-glue.spec of Package cluster-glue

#
# spec file for package cluster-glue
#
# Copyright (c) 2017 SUSE LINUX 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/
#


%global glue_release 1

%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
# Enable warnings for Factory
%define warnings_fatal yes
%endif
# Directory where we install documentation
%global glue_docdir %{_defaultdocdir}/%{name}

Name:           cluster-glue
Summary:        Reusable cluster components
License:        GPL-2.0 and LGPL-2.1+
Group:          Productivity/Clustering/HA
Version:        1.0.12+v1.git.1485976882.03d61cd
Release:        0
Url:            https://github.com/ClusterLabs/cluster-glue.git
Source:         %{name}-%{version}.tar.bz2
Source2:        baselibs.conf
Source3:        hb_report.in
# PATCH-FIX-OPENSUSE: load libplumb symbols manually (thanks to lge) (bnc#694243)
Patch1:         bug-694243_cluster-glue_symbol-conflict.patch
# PATCH-FIX-OPENSUSE: drop lrm as it's not used anymore by pacemaker
Patch4:         cluster-glue_droplrm.patch
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
BuildRequires:  OpenIPMI-devel
BuildRequires:  asciidoc
BuildRequires:  autoconf
BuildRequires:  automake
BuildRequires:  docbook-xsl-stylesheets
BuildRequires:  docbook_4
BuildRequires:  e2fsprogs-devel
BuildRequires:  glib2-devel
BuildRequires:  help2man
BuildRequires:  libaio-devel
BuildRequires:  libbz2-devel
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

Requires(pre):  %fillup_prereq

%if 0%{?suse_version} > 1230
BuildRequires:  systemd-rpm-macros
%{?systemd_requires}
%endif
Conflicts:      pacemaker < 1.1.8
Conflicts:      heartbeat-common < 3.0.2
Obsoletes:      heartbeat-common < 3.0.2
Requires:       perl-TimeDate
Requires:       sudo
# The following is necessary since sbd is dropped from
# cluster-glue itself:
Recommends:     sbd
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

%if ! %{defined _rundir}
%define _rundir %{_localstatedir}/run
%endif

%description
A collection of common tools that are useful for writing cluster managers
such as Pacemaker.
Provides a local resource manager that understands the OCF and LSB
standards, and an interface to common STONITH devices.

%package -n libglue2
Summary:        Reusable cluster libraries
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 stonith-bladehpi
Summary:        Stonith agent for IBM bladecenter
Group:          Productivity/Clustering/HA

%description -n stonith-bladehpi
This STONITH module talks to IBM BladeCenters via SNMP through
use of the OpenHPI BladeCenter plugin (snmp_bc). For more information
about installing OpenHPI, setting up the BladeCenter SNMP agent, etc.
please visit http://www.openhpi.org/.

%package -n libglue-devel
Summary:        Headers and libraries for writing cluster managers
Group:          Development/Libraries/C and C++
Requires:       %{name} = %{version}-%{release}
Requires:       libglue2 = %{version}-%{release}
Conflicts:      libheartbeat-devel < 3.0.2
Obsoletes:      libheartbeat-devel < 3.0.2

%description -n libglue-devel
Headers and shared libraries for a useful for writing cluster managers
such as Pacemaker.

%prep
%setup -q
%patch1 -p1
%patch4 -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-ipmilan=no \
    --enable-fatal-warnings=%{warnings_fatal} \
    --with-package-name=%{name} \
    --with-daemon-group=%{gname} \
    --with-daemon-user=%{uname}
%else
%configure \
    --enable-ipmilan=no \
    --enable-fatal-warnings=%{warnings_fatal} \
    --with-package-name=%{name} \
    --with-daemon-group=%{gname} \
    --with-daemon-user=%{uname} \
%if %{defined _unitdir}
    --with-systemdsystemunitdir=%{_unitdir} \
%endif
    --with-rundir=%{_rundir} \
    --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
install -D -m 755 %{S:3} %{buildroot}%{_sbindir}/hb_report
%if %{defined _unitdir}
ln -s /usr/sbin/service %{buildroot}%{_sbindir}/rclogd
%endif

%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
%if %{defined _unitdir}
  %service_add_pre logd.service
%endif

%if %{defined _unitdir}
%post
%service_add_post logd.service

%preun
%service_del_preun logd.service

%postun
%service_del_postun logd.service
%endif

%post -n libglue2
/sbin/ldconfig

%postun -n libglue2
/sbin/ldconfig

%files
%defattr(-,root,root)
%{_defaultdocdir}/%{name}/
%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
%{_sbindir}/ha_logger
%{_sbindir}/hb_report
%{_sbindir}/cibsecret
%{_sbindir}/meatclient
%{_sbindir}/stonith

%if %{defined _unitdir}
%{_unitdir}/logd.service
%endif

%doc %{_mandir}/man1/*
%doc %{_mandir}/man8/*
%doc AUTHORS
%doc COPYING
%doc logd/logd.cf
%{_sbindir}/rclogd
%{_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
%exclude %{_libdir}/stonith/plugins/stonith2/bladehpi.so
%{_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 stonith-bladehpi
%defattr(-,root,root)
%{_libdir}/stonith/plugins/stonith2/bladehpi.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
%exclude %{_includedir}/heartbeat/lrm
%{_includedir}/stonith
%{_includedir}/pils
%{_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
openSUSE Build Service is sponsored by