-%include /usr/lib/rpm/macros.perl
+# TODO
+# - merge mibs subpackage from 2.1 branch
+# - cleanup deps, users for 3.x
+# - fixup deps, inner deps, think of subpackages, ugprade path from 2.1
+#
Summary: Heartbeat - subsystem for High-Availability Linux
-Summary(es): Subsistema heartbeat para Linux "High-Availability"
-Summary(pl): Podsystem heartbeat dla systemów o podwy¿szonej niezawodno¶ci
-Summary(pt_BR): Implementa sistema de monitoração (heartbeats) visando Alta Disponibilidade
+Summary(es.UTF-8): Subsistema heartbeat para Linux "High-Availability"
+Summary(pl.UTF-8): Podsystem heartbeat dla systemów o podwyższonej niezawodności
+Summary(pt_BR.UTF-8): Implementa sistema de monitoração (heartbeats) visando Alta Disponibilidade
Name: heartbeat
-Version: 1.99.5
-Release: 0.3
+Version: 3.0.6
+Release: 2
License: GPL v2+
-Group: Applications/System
-Source0: http://linux-ha.org/download/%{name}-%{version}.tar.gz
-# Source0-md5: 808dd7884954553515757af6ad6dedb2
+Group: Networking/Daemons
+Source0: http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/STABLE-%{version}.tar.bz2
+# Source0-md5: 8a5e1fc2b44750c052d1007226a84dbe
Source1: %{name}.init
-Source2: ldirectord.init
-Patch0: %{name}-sh.patch
-Patch1: %{name}-ipmi.patch
-Patch2: %{name}-ac.patch
-URL: http://linux-ha.org/
-BuildRequires: OpenIPMI-devel >= 2.0.0
-BuildRequires: autoconf
+Patch0: %{name}-ac.patch
+Patch1: %{name}-libs.patch
+Patch2: %{name}-tls.patch
+Patch3: %{name}-tipc.patch
+URL: http://www.linux-ha.org/Heartbeat
+BuildRequires: autoconf >= 2.53
BuildRequires: automake
-BuildRequires: gdbm-devel
-BuildRequires: glib2-devel
-BuildRequires: libnet-devel >= 1.1.0
+BuildRequires: bzip2-devel
+BuildRequires: cluster-glue-libs-devel
+BuildRequires: docbook-dtd44-xml
+BuildRequires: docbook-style-xsl
+BuildRequires: glib2-devel >= 2.0
+BuildRequires: glibc-misc
+BuildRequires: gnutls-devel
+BuildRequires: hbaapi-devel
BuildRequires: libltdl-devel
BuildRequires: libtool
BuildRequires: libuuid-devel
-BuildRequires: libwrap-devel
-BuildRequires: libxml2-devel
-BuildRequires: net-snmp-devel >= 5.1
-BuildRequires: perl-devel >= 1:5.8.1
+BuildRequires: libxslt-progs
+BuildRequires: ncurses-devel >= 5.4
BuildRequires: pkgconfig
-BuildRequires: rpm-devel
-BuildRequires: rpm-perlprov
-BuildRequires: rpmbuild(macros) >= 1.202
-BuildRequires: swig >= 1.3.19
-PreReq: rc-scripts
-Requires(pre): /bin/id
-Requires(pre): /usr/bin/getgid
-Requires(pre): /usr/sbin/groupadd
-Requires(pre): /usr/sbin/useradd
-Requires(post,preun): /sbin/chkconfig
-Requires(post,postun): /sbin/ldconfig
-Requires(postun): /usr/sbin/groupdel
-Requires(postun): /usr/sbin/userdel
+BuildRequires: python
+BuildRequires: python-devel
+BuildRequires: rpm-pythonprov
+BuildRequires: rpmbuild(macros) >= 1.268
+BuildRequires: zlib-devel
+Requires: %{name}-libs = %{version}-%{release}
+Requires: cluster-glue
+Requires: psmisc >= 22.5-2
+Requires: rc-scripts
+Requires: resource-agents >= 3.9.2-2
Requires: syslogdaemon
-Provides: group(haclient)
-Provides: user(hacluster)
+Requires: which
+# disappeared
+Obsoletes: perl-heartbeat
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+%define specflags -fgnu89-inline
+
%description
heartbeat is a basic heartbeat subsystem for Linux-HA. It will run
scripts at initialization, and when machines go up or down. This
It implements the following kinds of heartbeats:
- Bidirectional Serial Rings ("raw" serial ports)
-%description -l es
-heartbeat es un sistema básico para Linux-HA. La función de este
-software es ejecutar scripts en la inicialización y al apagar las
-máquinas que lo utilizan.
-
-%description -l pl
-heartbeat jest podstawowym podsystemem dla systemów o podwy¿szonej
-dostêpno¶ci budowanych w oparciu o Linuksa. Zajmuje siê uruchamianiem
-skryptów podczas startu i zamykania systemu. Ta wersja pakietu pozwala
-na przejmowanie adresów IP. Oprogramowanie dzia³a poprawnie dla
-konfiguracji sk³adaj±cej siê z 2 hostów, mo¿na je równie¿ stosowaæ do
+%description -l es.UTF-8
+heartbeat es un sistema básico para Linux-HA. La función de este
+software es ejecutar scripts en la inicialización y al apagar las
+máquinas que lo utilizan.
+
+%description -l pl.UTF-8
+heartbeat jest podstawowym podsystemem dla systemów o podwyższonej
+dostępności budowanych w oparciu o Linuksa. Zajmuje się uruchamianiem
+skryptów podczas startu i zamykania systemu. Ta wersja pakietu pozwala
+na przejmowanie adresów IP. Oprogramowanie działa poprawnie dla
+konfiguracji składającej się z 2 hostów, można je również stosować do
bardziej skomplikowanych konfiguracji.
-%package stonith
-Summary: Provides an interface to Shoot The Other Node In The Head
-Summary(pl): Interfejs do "odstrzelenia" drugiego wêz³a w klastrze
-Group: Applications/System
-
-%description stonith
-Provides an interface to Shoot The Other Node In The Head.
-
-%description stonith -l pl
-STONITH (Shoot The Other Node In The Head) to interfejs s³u¿±cy do
-"odstrzelenia" drugiego wêz³a w klastrze.
+%package libs
+Summary: Heartbeat libraries
+Summary(pl.UTF-8): Biblioteki heartbeat
+Group: Libraries
+Conflicts: heartbeat < 2.99.2-0.1
-%package ldirectord
-Summary: Monitor virtual services provided by LVS
-Summary(pl): Demon monitoruj±cy wirtualne us³ugi dostarczane poprzez LVS
-Group: Applications/System
-PreReq: rc-scripts
-Requires(post,preun): /sbin/chkconfig
-Requires: ipvsadm
-
-%description ldirectord
-ldirectord is a stand-alone daemon to monitor services of real
-for virtual services provided by The Linux Virtual Server
-(http://www.linuxvirtualserver.org/).
+%description libs
+Heartbeat libraries.
-%description ldirectord -l pl
-ldirectord to samodzielny demon monitoruj±cy rzeczywiste us³ugi dla
-wirtualnych us³ug dostarczanych poprzez Linux Virtual Server
-(http://www.linuxvirtualserver.org/).
+%description libs -l pl.UTF-8
+Biblioteki heartbeat.
%package devel
-Summary: Heartbeat developement header files and libraries
-Summary(pl): Pliki nag³ówkowe i biblioteki heartbeat
+Summary: Heartbeat development header files
+Summary(pl.UTF-8): Pliki nagłówkowe bibliotek heartbeat
Group: Development/Libraries
-Requires: %{name} = %{version}-%{release}
+Requires: %{name}-libs = %{version}-%{release}
+Requires: cluster-glue-libs-devel
+Requires: glib2-devel >= 2.0
+Requires: libltdl-devel
%description devel
-Heartbeat developement header files and libraries.
+Heartbeat development header files.
-%description devel -l pl
-Pliki nag³ówkowe i biblioteki heartbeat.
+%description devel -l pl.UTF-8
+Pliki nagłówkowe bibliotek heartbeat.
%package static
Summary: Heartbeat static libraries
-Summary(pl): Biblioteki statyczne heartbeat
+Summary(pl.UTF-8): Biblioteki statyczne heartbeat
Group: Development/Libraries
Requires: %{name}-devel = %{version}-%{release}
%description static
Heartbeat static libraries.
-%description -l static
+%description static -l pl.UTF-8
Biblioteki statyczne heartbeat.
-%package -n perl-heartbeat
-Summary: Perl binding for Heartbeat
-Summary(pl): Dowi±zania Perla dla Heartbeata
-Group: Development/Languages/Perl
+%package cts
+Summary: Cluster Test Suite
+Summary(pl.UTF-8): Zestaw testów klastra
+Group: Applications/System
Requires: %{name} = %{version}-%{release}
-%description -n perl-heartbeat
-Perl binding for Heartbeat.
+%description cts
+Cluster Test Suite for heartbeat.
-%description -n perl-heartbeat -l pl
-Dowi±zania Perla dla Heartbeata.
+%description cts -l pl.UTF-8
+Zestaw testów klastra opartego o heartbeat.
%prep
-%setup -q
+%setup -qn Heartbeat-3-0-STABLE-%{version}
%patch0 -p1
%patch1 -p1
%patch2 -p1
-
-rm -rf libltdl
+%patch3 -p1
%build
%{__libtoolize} --ltdl
%{__aclocal}
%{__autoconf}
+%{__autoheader}
%{__automake}
%configure \
- PING=/bin/ping \
- MOUNT=/bin/mount \
- FSCK=/sbin/fsck \
--with-initdir=/etc/rc.d/init.d \
- --enable-lrm \
- --enable-crm \
- --enable-perl-vendor
+ --with-systemdunitdir=%{systemdunitdir} \
+ --docdir=%{_docdir}/%{name}-%{version} \
+ --enable-fatal-warnings=no \
+ --enable-mgmt \
+ --enable-quorumd \
+ --enable-snmp-subagent
%{__make}
%install
rm -rf $RPM_BUILD_ROOT
-
-%{__make} install \
+%{__make} -j1 install \
DESTDIR=$RPM_BUILD_ROOT
-rm -f $RPM_BUILD_ROOT%{_sysconfdir}/ha.d/resource.d/ldirectord
-ln -sf %{_sbindir}/ldirectord $RPM_BUILD_ROOT%{_sysconfdir}/ha.d/resource.d/ldirectord
+install -d $RPM_BUILD_ROOT/var/run/heartbeat/{crm,dopd}
# plugins are lt_dlopened, but using *.so names, so *.la are not used
-rm -f $RPM_BUILD_ROOT%{_libdir}/{heartbeat,pils,stonith}/plugins/*/*.{la,a}
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/heartbeat/plugins/*/*.{la,a}
-rm -f $RPM_BUILD_ROOT/etc/rc.d/init.d/heartbeat
-install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/heartbeat
+%{__rm} $RPM_BUILD_ROOT/etc/rc.d/init.d/heartbeat
+install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/heartbeat
> $RPM_BUILD_ROOT/etc/ha.d/haresources
echo -e "auth 2\n2 crc" > $RPM_BUILD_ROOT/etc/ha.d/authkeys
-install doc/ha.cf $RPM_BUILD_ROOT/etc/ha.d
+cp -a doc/ha.cf $RPM_BUILD_ROOT/etc/ha.d
+
+for tool in hb_addnode hb_delnode hb_standby hb_takeover; do
+ tool=%{_datadir}/%{name}/$tool
+ [ -x $RPM_BUILD_ROOT$tool ] || exit 1
+ ln -s $tool $RPM_BUILD_ROOT%{_bindir}
+done
+
+%{__rm} $RPM_BUILD_ROOT%{_datadir}/heartbeat/cts/README
-rm -f $RPM_BUILD_ROOT/etc/rc.d/init.d/ldirectord
-install %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/ldirectord
-install ldirectord/ldirectord.cf $RPM_BUILD_ROOT%{_sysconfdir}/ha.d
+%{__rm} -r $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
%clean
rm -rf $RPM_BUILD_ROOT
-%pre
-%groupadd -g 60 haclient
-%useradd -u 17 -d /var/lib/heartbeat/cores/hacluster -c "Heartbeat User" -g haclient hacluster
-
%post
-/sbin/ldconfig
/sbin/chkconfig --add heartbeat
+%service heartbeat restart
%preun
-Uninstall_PPP_hack() {
- file2hack=/etc/ppp/ip-up.local
- echo "NOTE: Restoring /$file2hack"
- MARKER="Heartbeat"
- ed -s $file2hack <<-!EOF 2>/dev/null
-H
-g/ $MARKER\$/d
-w
-!EOF
-}
-
if [ "$1" = "0" ]; then
+ %service -q heartbeat stop
/sbin/chkconfig --del heartbeat
- if [ ! -x /etc/ppp/ip-up.heart ]; then
- Uninstall_PPP_hack
- fi
fi
-%postun
-/sbin/ldconfig
-if [ "$1" = "0" ]; then
- %userremove hacluster
- %groupremove haclient
-fi
-
-%post stonith -p /sbin/ldconfig
-%postun stonith -p /sbin/ldconfig
+%post libs -p /sbin/ldconfig
+%postun libs -p /sbin/ldconfig
%files
%defattr(644,root,root,755)
%doc doc/{*.html,AUTHORS,apphbd.cf,authkeys,ha.cf,haresources,startstop}
-%attr(755,root,root) %{_libdir}/lib*.so.*.*.*
+%attr(755,root,root) %{_bindir}/cl_respawn
+%attr(2755,root,haclient) %{_bindir}/cl_status
+%attr(755,root,root) %{_bindir}/hb_addnode
+%attr(755,root,root) %{_bindir}/hb_delnode
+%attr(755,root,root) %{_bindir}/hb_standby
+%attr(755,root,root) %{_bindir}/hb_takeover
%dir %{_libdir}/heartbeat
-%dir %{_libdir}/heartbeat/cts
-%attr(755,root,root) %{_libdir}/heartbeat/cts/*.py
%dir %{_libdir}/heartbeat/plugins
-%dir %{_libdir}/heartbeat/plugins/*
-%attr(755,root,root) %{_libdir}/heartbeat/plugins/*/*.so
-%attr(755,root,root) %{_libdir}/heartbeat/[!cp]*
-%attr(755,root,root) %{_libdir}/heartbeat/c[!t]*
-%attr(755,root,root) %{_libdir}/heartbeat/p[!l]*
-%dir %{_libdir}/pils
-%dir %{_libdir}/pils/plugins
-%dir %{_libdir}/pils/plugins/*
-%attr(755,root,root) %{_libdir}/pils/plugins/*/*.so
-%dir %{_sysconfdir}/ha.d
-%attr(755,root,root) %{_sysconfdir}/ha.d/rc.d
-%attr(755,root,root) %{_sysconfdir}/ha.d/resource.d
+%dir %{_libdir}/heartbeat/plugins/HBauth
+%attr(755,root,root) %{_libdir}/heartbeat/plugins/HBauth/*.so
+%dir %{_libdir}/heartbeat/plugins/HBcomm
+%attr(755,root,root) %{_libdir}/heartbeat/plugins/HBcomm/*.so
+%dir %{_libdir}/heartbeat/plugins/quorum
+%attr(755,root,root) %{_libdir}/heartbeat/plugins/quorum/*.so
+%dir %{_libdir}/heartbeat/plugins/quorumd
+%attr(755,root,root) %{_libdir}/heartbeat/plugins/quorumd/*.so
+%dir %{_libdir}/heartbeat/plugins/tiebreaker
+%attr(755,root,root) %{_libdir}/heartbeat/plugins/tiebreaker/*.so
+%attr(755,root,root) %{_libdir}/heartbeat/api_test
+%attr(755,root,root) %{_libdir}/heartbeat/apphbd
+%attr(755,root,root) %{_libdir}/heartbeat/apphbtest
+%attr(755,root,root) %{_libdir}/heartbeat/ccm
+%attr(755,root,root) %{_libdir}/heartbeat/ccm_testclient
+%attr(755,root,root) %{_libdir}/heartbeat/clmtest
+%attr(755,root,root) %{_libdir}/heartbeat/dopd
+%attr(755,root,root) %{_libdir}/heartbeat/drbd-peer-outdater
+%attr(755,root,root) %{_libdir}/heartbeat/heartbeat
+%attr(755,root,root) %{_libdir}/heartbeat/ipfail
+%attr(755,root,root) %{_libdir}/heartbeat/mlock
+%attr(755,root,root) %{_libdir}/heartbeat/quorumd
+%attr(755,root,root) %{_libdir}/heartbeat/quorumdtest
+%dir %{_datadir}/heartbeat
+%attr(755,root,root) %{_datadir}/heartbeat/BasicSanityCheck
+%attr(755,root,root) %{_datadir}/heartbeat/ResourceManager
+%attr(755,root,root) %{_datadir}/heartbeat/TestHeartbeatComm
+%attr(755,root,root) %{_datadir}/heartbeat/ha_*
+%attr(755,root,root) %{_datadir}/heartbeat/hb_*
+%attr(755,root,root) %{_datadir}/heartbeat/mach_down
+%attr(755,root,root) %{_datadir}/heartbeat/req_resource
%{_sysconfdir}/ha.d/README.config
+%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ha.d/authkeys
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ha.d/ha.cf
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ha.d/haresources
%attr(755,root,root) %{_sysconfdir}/ha.d/harc
-%{_sysconfdir}/ha.d/shellfuncs
+%dir %{_sysconfdir}/ha.d/rc.d
+%attr(755,root,root) %{_sysconfdir}/ha.d/rc.d/*
+%attr(755,root,root) %{_sysconfdir}/ha.d/resource.d/*
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/heartbeat
%attr(754,root,root) /etc/rc.d/init.d/heartbeat
-%attr(755,root,root) %{_libdir}/ocf
+%{systemdunitdir}/heartbeat.service
+%dir /var/run/heartbeat
+%attr(750,hacluster,haclient) %dir /var/run/heartbeat/ccm
+%attr(750,hacluster,haclient) %dir /var/run/heartbeat/crm
+%attr(750,hacluster,haclient) %dir /var/run/heartbeat/dopd
%dir /var/lib/heartbeat
-#%%attr(750,root,haclient) %dir /var/lib/heartbeat/api
-#%%attr(1770,root,haclient) %dir /var/lib/heartbeat/casual
-#%%attr(755,hacluster,haclient) %dir /var/lib/heartbeat/ccm
-%attr(755,root,haclient) %dir /var/lib/heartbeat/ccm
-#%%attr(755,root,haclient) %dir /var/lib/heartbeat/ckpt
-#%%attr(600,root,root) /var/lib/heartbeat/fifo
-%{_mandir}/man1/*.1*
-%{_mandir}/man8/[a-h]*.8*
-/var/lib/heartbeat/cores
-%attr(755,root,root) %{_bindir}/cl*
-%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/ha.d/haresources
-%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/ha.d/authkeys
-%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/ha.d/ha.cf
-%{_datadir}/snmp/mibs/*mib
-
-%files stonith
-%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/libstonith.so.*.*.*
-%dir %{_libdir}/stonith
-%dir %{_libdir}/stonith/plugins
-%dir %{_libdir}/stonith/plugins/external
-%dir %{_libdir}/stonith/plugins/stonith2
-%attr(755,root,root) %{_libdir}/stonith/plugins/*/*
-%attr(755,root,root) %{_sbindir}/meatclient
-%attr(755,root,root) %{_sbindir}/stonith
-%{_mandir}/man8/stonith.8*
-%{_mandir}/man8/meatclient.8*
-
-%files ldirectord
+%{systemdtmpfilesdir}/%{name}.conf
+%{_mandir}/man1/cl_status.1*
+%{_mandir}/man1/hb_addnode.1*
+%{_mandir}/man1/hb_delnode.1*
+%{_mandir}/man1/hb_standby.1*
+%{_mandir}/man1/hb_takeover.1*
+%{_mandir}/man5/authkeys.5*
+%{_mandir}/man5/ha.cf.5*
+%{_mandir}/man8/apphbd.8*
+%{_mandir}/man8/heartbeat.8*
+
+%files libs
%defattr(644,root,root,755)
-%dir %{_sysconfdir}/ha.d/conf
-%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/ha.d/ldirectord.cf
-%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/ldirectord
-%attr(754,root,root) /etc/rc.d/init.d/ldirectord
-%attr(755,root,root) %{_sbindir}/*ldirectord*
-%{_mandir}/man8/*ldirectord*.8*
+%attr(755,root,root) %{_libdir}/libapphb.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libapphb.so.2
+%attr(755,root,root) %{_libdir}/libccmclient.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libccmclient.so.1
+%attr(755,root,root) %{_libdir}/libclm.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libclm.so.1
+%attr(755,root,root) %{_libdir}/libhbclient.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libhbclient.so.1
%files devel
%defattr(644,root,root,755)
-%{_includedir}/*
-%{_libdir}/*.la
+%attr(755,root,root) %{_libdir}/libapphb.so
+%attr(755,root,root) %{_libdir}/libccmclient.so
+%attr(755,root,root) %{_libdir}/libclm.so
+%attr(755,root,root) %{_libdir}/libhbclient.so
+%{_libdir}/libapphb.la
+%{_libdir}/libccmclient.la
+%{_libdir}/libclm.la
+%{_libdir}/libhbclient.la
+%{_includedir}/heartbeat/HB*.h
+%{_includedir}/heartbeat/apphb*.h
+%{_includedir}/heartbeat/hb_*.h
+%{_includedir}/heartbeat/heartbeat.h
+%{_includedir}/ocf
+%{_includedir}/saf
%files static
%defattr(644,root,root,755)
-%{_libdir}/*.a
+%{_libdir}/libapphb.a
+%{_libdir}/libccmclient.a
+%{_libdir}/libclm.a
+%{_libdir}/libhbclient.a
-%files -n perl-heartbeat
+%files cts
%defattr(644,root,root,755)
-%{perl_vendorarch}/heartbeat
-%dir %{perl_vendorarch}/auto/heartbeat
-%dir %{perl_vendorarch}/auto/heartbeat/cl_raw
-%{perl_vendorarch}/auto/heartbeat/cl_raw/cl_raw.bs
-%attr(755,root,root) %{perl_vendorarch}/auto/heartbeat/cl_raw/cl_raw.so
-%{_mandir}/man3/heartbeat::*.3pm*
+%doc cts/README
+%dir %{_datadir}/heartbeat/cts
+%attr(755,root,root) %{_datadir}/heartbeat/cts/*.py
+%{_datadir}/heartbeat/cts/*.py[co]
+%attr(755,root,root) %{_datadir}/heartbeat/cts/*.sh
+%attr(755,root,root) %{_datadir}/heartbeat/cts/*Dummy