3 %bcond_without corosync # Corosync stack support
4 %bcond_without heartbeat # Heartbeat stack support
5 %bcond_without servicelog # ServiceLog support [IBM PPC specific]
6 %bcond_without ipmi # IPMI ServiceLog support [IBM PPC specific]
7 %bcond_without doc # documentation
10 %undefine with_servicelog
12 %if %{without servicelog}
15 Summary: The scalable High-Availability cluster resource manager
16 Summary(pl.UTF-8): Skalowalny zarządca zasobów klastrów o wysokiej dostępności
20 License: GPL v2+, LGPL v2.1+
21 Group: Applications/System
22 #Source0Download: https://github.com/ClusterLabs/pacemaker/releases
23 Source0: https://github.com/ClusterLabs/pacemaker/archive/Pacemaker-%{version}.tar.gz
24 # Source0-md5: 4e0b76f7ba00535514a97dcf9cd47813
25 Source1: %{name}.tmpfiles
27 Source3: %{name}.service
28 Patch0: %{name}-automake.patch
29 Patch1: %{name}-manpage_xslt.patch
30 Patch2: %{name}-update.patch
31 Patch3: %{name}-libesmtp.patch
32 Patch4: %{name}-libs.patch
33 Patch5: %{name}-heartbeat-libexecdir.patch
34 Patch6: %{name}-no-common.patch
35 Patch7: %{name}-inkscape.patch
36 URL: http://clusterlabs.org/wiki/Main_Page
37 %{?with_ipmi:BuildRequires: OpenIPMI-devel}
38 BuildRequires: asciidoc
39 BuildRequires: autoconf >= 2.59
40 BuildRequires: automake
42 BuildRequires: bzip2-devel
43 BuildRequires: cluster-glue-libs-devel
44 %{?with_corosync:BuildRequires: corosync-devel >= 2.0}
45 BuildRequires: dbus-devel
46 BuildRequires: docbook-style-xsl
47 BuildRequires: e2fsprogs-devel
49 BuildRequires: gettext-tools
50 BuildRequires: glib2-devel >= 2.0
51 BuildRequires: gnutls-devel
52 BuildRequires: help2man
53 %{?with_heartbeat:BuildRequires: heartbeat-devel >= 3.0.6}
54 BuildRequires: libesmtp-devel
55 BuildRequires: libltdl-devel
56 BuildRequires: libqb-devel >= 0.13
57 %{?with_servicelog:BuildRequires: libservicelog-devel}
58 BuildRequires: libtool
59 BuildRequires: libuuid-devel
60 BuildRequires: libxml2-devel >= 2.0
61 BuildRequires: libxslt-devel
62 BuildRequires: libxslt-progs
63 BuildRequires: ncurses-devel >= 5.4
64 BuildRequires: net-snmp-devel
65 BuildRequires: pam-devel
66 BuildRequires: pciutils-devel
67 BuildRequires: pkgconfig
68 BuildRequires: python-devel
69 BuildRequires: rpm-pythonprov
70 BuildRequires: rpmbuild(macros) >= 1.644
71 BuildRequires: systemd-units
74 BuildRequires: inkscape >= 1.0
75 BuildRequires: publican
77 Requires: %{name}-libs = %{version}-%{release}
78 Requires: cluster-glue
79 Requires: resource-agents
80 Provides: group(haclient)
81 Provides: user(hacluster)
82 Suggests: pacemaker-shell
83 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
86 Pacemaker makes use of your cluster infrastructure (either
87 Corosync/OpenAIS or Heartbeat) to stop, start and monitor the health
88 of the services (aka. resources) you want the cluster to provide.
90 It can do this for clusters of practically any size and comes with a
91 powerful dependency model that allows the administrator to accurately
92 express the relationships (both ordering and location) between the
95 Pacemaker was formely a part of Heartbeat.
97 %description -l pl.UTF-8
98 Pacemaker wykorzystuje infrastrukturę klastrową (Corosync/OpenAIS lub
99 Heartbeat) do zatrzymywania, uruchamiania i monitorowania działania
100 usług (tzw. zasobów), które ma udostępniać klaster.
102 Jest w stanie obsłużyć klastry praktycznie dowolnych rozmiarów,
103 zawiera elastyczny model zależności, pozwalający administratorowi
104 dokładnie opisać powiązania (zarówno kolejność, jak i położenie)
105 między zasobami klastra.
107 Pacemaker był wcześniej częścią pakietu Heartbeat.
110 Summary: Pacemaker libraries
111 Summary(pl.UTF-8): Biblioteki Pacemakera
113 Requires: libqb >= 0.13
116 Shared libraries for Pacemaker.
118 %description libs -l pl.UTF-8
119 Biblioteki współdzielone Pacemakera.
122 Summary: Header files for Pacemaker libraries
123 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek Pacemakera
124 Group: Development/Libraries
125 Requires: %{name}-libs = %{version}-%{release}
128 Header files for Pacemaker libraries.
130 %description devel -l pl.UTF-8
131 Pliki nagłówkowe bibliotek Pacemakera.
134 Summary: Static Pacemaker libraries
135 Summary(pl.UTF-8): Statyczne biblioteki Pacemakera
136 Group: Development/Libraries
137 Requires: %{name}-devel = %{version}-%{release}
140 Static Pacemaker libraries.
142 %description static -l pl.UTF-8
143 Statyczne biblioteki Pacemakera.
146 Summary: Remote services manager for Pacemaker
147 Summary(pl.UTF-8): Zarządca usług zdalnych dla Pacemakera
148 Group: Applications/System
149 Requires: systemd-units >= 38
150 Requires: %{name} = %{version}-%{release}
153 This package allows running Pacemaker-managed services on 'virtual'
154 nodes without actual cluster stack. This is useful to manage services
155 in virtual machines or containers running on a Pacemaker cluster.
157 %description remote -l pl.UTF-8
158 Ten pakiet pozwala na uruchamianie usług zarządzanych przez Pacemakera
159 na węzłach "wirtualnych" bez zainstalowanego całego stosu klastrowego.
160 Jest to przydatne przy zarządzaniu usługami na maszynach wirtualncych
161 lub w kontenerach uruchomionych na klastrze opartym o Pacemaker.
164 Summary: Pacemaker for Heartbeat cluster
165 Summary(pl.UTF-8): Pacemaker dla klastra Heartbeat
166 Group: Applications/System
167 Requires: %{name} = %{version}-%{release}
168 Requires: heartbeat >= 3.0.6
169 Obsoletes: pacemaker < 1.1
171 %description heartbeat
172 This package allows using Pacemaker on a Heartbeat cluster.
174 %description heartbeat -l pl.UTF-8
175 Ten pakiet pozwala na używanie Pacemakera na klastrze Heartbeat.
178 Summary: Pacemaker for Corosync cluster
179 Summary(pl.UTF-8): Pacemaker dla klastra Corosync
180 Group: Applications/System
181 Requires: %{name} = %{version}-%{release}
183 Requires: systemd-units >= 38
184 %{?with_heartbeat:%requires_eq heartbeat-libs}
186 %description corosync
187 This package allows using Pacemaker on a Corosync cluster.
189 %description corosync -l pl.UTF-8
190 Ten pakiet pozwala na używanie Pacemakera na klastrze Corosync.
193 Summary: Pacemaker documentation
194 Summary(pl.UTF-8): Dokumentacja do Pacemakera
198 Pacemaker documentation.
200 %description doc -l pl.UTF-8
201 Dokumentacja do Pacemakera.
204 %setup -qn pacemaker-Pacemaker-%{version}
221 CPPFLAGS="%{rpmcppflags} %{?with_heartbeat:-I/usr/include/heartbeat}"
222 # enable systemd explicitly to avoid configure checks via dbus-send or systemctl
224 --disable-fatal-warnings \
225 --disable-silent-rules \
229 --with-corosync%{!?with_corosync:=no} \
231 --with-heartbeat%{!?with_heartbeat:=no} \
232 --with-initdir=/etc/rc.d/init.d \
238 rm -rf $RPM_BUILD_ROOT
239 install -d $RPM_BUILD_ROOT{/var/run/crm,/var/log}
242 mibdir=%{_datadir}/mibs \
243 DESTDIR=$RPM_BUILD_ROOT
245 touch $RPM_BUILD_ROOT/var/log/pacemaker.log
247 %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/pacemaker/tests
249 %{__rm} -r $RPM_BUILD_ROOT%{_docdir}/pacemaker/{COPYING,README.markdown,acls.*,crm_fencing.*,licenses}
251 install -D %{SOURCE1} $RPM_BUILD_ROOT%{systemdtmpfilesdir}/%{name}.conf
253 install -D %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}
254 install -D %{SOURCE3} $RPM_BUILD_ROOT%{systemdunitdir}/%{name}.service
258 rm -rf $RPM_BUILD_ROOT
261 %groupadd -g 60 haclient
262 %useradd -u 17 -d /var/lib/heartbeat/cores/hacluster -c "Heartbeat User" -g haclient hacluster
265 /sbin/chkconfig --add %{name}
266 %service %{name} restart "%{name} daemon"
267 %systemd_post %{name}.service
270 if [ "$1" = "0" ]; then
271 %service %{name} stop
272 /sbin/chkconfig --del %{name}
276 %systemd_preun %{name}.service
282 /sbin/chkconfig --add pacemaker_remote
283 %service pacemaker_remote restart "pacemaker_remote daemon"
284 %systemd_post pacemaker_remote.service
287 %systemd_preun %{name}.service
292 %post libs -p /sbin/ldconfig
293 %postun libs -p /sbin/ldconfig
296 %defattr(644,root,root,755)
297 %doc ChangeLog README.markdown doc/*.html doc/{executioner,msg-schema,security}.txt doc/{openstack,pcs-crmsh-quick-ref}.md
298 %attr(755,root,root) %{_sbindir}/attrd_updater
299 %attr(755,root,root) %{_sbindir}/cibadmin
300 %attr(755,root,root) %{_sbindir}/crm_attribute
301 %attr(755,root,root) %{_sbindir}/crm_diff
302 %attr(755,root,root) %{_sbindir}/crm_error
303 %attr(755,root,root) %{_sbindir}/crm_failcount
304 %attr(755,root,root) %{_sbindir}/crm_master
305 %attr(755,root,root) %{_sbindir}/crm_mon
306 %attr(755,root,root) %{_sbindir}/crm_node
307 %attr(755,root,root) %{_sbindir}/crm_report
308 %attr(755,root,root) %{_sbindir}/crm_resource
309 %attr(755,root,root) %{_sbindir}/crm_simulate
310 %attr(755,root,root) %{_sbindir}/crm_shadow
311 %attr(755,root,root) %{_sbindir}/crm_standby
312 %attr(755,root,root) %{_sbindir}/crm_ticket
313 %attr(755,root,root) %{_sbindir}/crm_verify
314 %attr(755,root,root) %{_sbindir}/crmadmin
315 %attr(755,root,root) %{_sbindir}/fence_legacy
316 %attr(755,root,root) %{_sbindir}/fence_pcmk
317 %attr(755,root,root) %{_sbindir}/iso8601
318 %attr(755,root,root) %{_sbindir}/stonith_admin
319 %if %{with servicelog}
321 %attr(755,root,root) %{_sbindir}/ipmiservicelogd
323 %attr(755,root,root) %{_sbindir}/notifyServicelogEvent
325 %dir %{_libexecdir}/%{name}
326 %attr(755,root,root) %{_libexecdir}/%{name}/attrd
327 %attr(755,root,root) %{_libexecdir}/%{name}/cib
328 %attr(755,root,root) %{_libexecdir}/%{name}/cibmon
329 %attr(755,root,root) %{_libexecdir}/%{name}/crmd
330 %attr(755,root,root) %{_libexecdir}/%{name}/lrmd
331 %attr(755,root,root) %{_libexecdir}/%{name}/lrmd_internal_ctl
332 %attr(755,root,root) %{_libexecdir}/%{name}/lrmd_test
333 %attr(755,root,root) %{_libexecdir}/%{name}/pengine
334 %attr(755,root,root) %{_libexecdir}/%{name}/stonith-test
335 %attr(755,root,root) %{_libexecdir}/%{name}/stonithd
336 %{_datadir}/pacemaker
337 %{_datadir}/mibs/PCMK-MIB.txt
339 %{systemdunitdir}/crm_mon.service
340 %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/pacemaker
341 %ghost /var/log/pacemaker.log
342 %{_mandir}/man7/crmd.7*
343 %{_mandir}/man7/ocf_pacemaker_*.7*
344 %{_mandir}/man7/pengine.7*
345 %{_mandir}/man7/stonithd.7*
346 %{_mandir}/man8/attrd_updater.8*
347 %{_mandir}/man8/cibadmin.8*
348 %{_mandir}/man8/crm_attribute.8*
349 %{_mandir}/man8/crm_diff.8*
350 %{_mandir}/man8/crm_error.8*
351 %{_mandir}/man8/crm_failcount.8*
352 %{_mandir}/man8/crm_master.8*
353 %{_mandir}/man8/crm_mon.8*
354 %{_mandir}/man8/crm_node.8*
355 %{_mandir}/man8/crm_report.8*
356 %{_mandir}/man8/crm_resource.8*
357 %{_mandir}/man8/crm_shadow.8*
358 %{_mandir}/man8/crm_simulate.8*
359 %{_mandir}/man8/crm_standby.8*
360 %{_mandir}/man8/crm_ticket.8*
361 %{_mandir}/man8/crm_verify.8*
362 %{_mandir}/man8/crmadmin.8*
363 %{_mandir}/man8/fence_legacy.8*
364 %{_mandir}/man8/fence_pcmk.8*
365 %{_mandir}/man8/iso8601.8*
366 %{_mandir}/man8/stonith_admin.8*
367 %if %{with servicelog}
369 %{_mandir}/man8/ipmiservicelogd.8*
371 %{_mandir}/man8/notifyServicelogEvent.8*
374 %dir %{_prefix}/lib/ocf/resource.d/.isolation
375 %attr(755,root,root) %{_prefix}/lib/ocf/resource.d/.isolation/docker-wrapper
376 %dir %{_prefix}/lib/ocf/resource.d/pacemaker
377 %attr(755,root,root) %{_prefix}/lib/ocf/resource.d/pacemaker/ClusterMon
378 %attr(755,root,root) %{_prefix}/lib/ocf/resource.d/pacemaker/Dummy
379 %attr(755,root,root) %{_prefix}/lib/ocf/resource.d/pacemaker/HealthCPU
380 %attr(755,root,root) %{_prefix}/lib/ocf/resource.d/pacemaker/HealthSMART
381 %attr(755,root,root) %{_prefix}/lib/ocf/resource.d/pacemaker/Stateful
382 %attr(755,root,root) %{_prefix}/lib/ocf/resource.d/pacemaker/SysInfo
383 %attr(755,root,root) %{_prefix}/lib/ocf/resource.d/pacemaker/SystemHealth
384 %attr(755,root,root) %{_prefix}/lib/ocf/resource.d/pacemaker/attribute
385 %attr(755,root,root) %{_prefix}/lib/ocf/resource.d/pacemaker/controld
386 %attr(755,root,root) %{_prefix}/lib/ocf/resource.d/pacemaker/ifspeed
387 %attr(755,root,root) %{_prefix}/lib/ocf/resource.d/pacemaker/o2cb
388 %attr(755,root,root) %{_prefix}/lib/ocf/resource.d/pacemaker/ping
389 %attr(755,root,root) %{_prefix}/lib/ocf/resource.d/pacemaker/pingd
390 %attr(755,root,root) %{_prefix}/lib/ocf/resource.d/pacemaker/remote
392 %dir /var/lib/%{name}
393 %dir %attr(750,hacluster,haclient) /var/lib/%{name}/blackbox
394 %dir %attr(750,hacluster,haclient) /var/lib/%{name}/cib
395 %dir %attr(750,hacluster,haclient) /var/lib/%{name}/pengine
396 %dir %attr(750,hacluster,haclient) %{_var}/run/crm
397 %{systemdtmpfilesdir}/%{name}.conf
400 %defattr(644,root,root,755)
401 %attr(755,root,root) %{_libdir}/libcib.so.*.*.*
402 %attr(755,root,root) %ghost %{_libdir}/libcib.so.4
403 %attr(755,root,root) %{_libdir}/libcrmcluster.so.*.*.*
404 %attr(755,root,root) %ghost %{_libdir}/libcrmcluster.so.4
405 %attr(755,root,root) %{_libdir}/libcrmcommon.so.*.*.*
406 %attr(755,root,root) %ghost %{_libdir}/libcrmcommon.so.3
407 %attr(755,root,root) %{_libdir}/libcrmservice.so.*.*.*
408 %attr(755,root,root) %ghost %{_libdir}/libcrmservice.so.3
409 %attr(755,root,root) %{_libdir}/liblrmd.so.*.*.*
410 %attr(755,root,root) %ghost %{_libdir}/liblrmd.so.1
411 %attr(755,root,root) %{_libdir}/libpe_rules.so.*.*.*
412 %attr(755,root,root) %ghost %{_libdir}/libpe_rules.so.2
413 %attr(755,root,root) %{_libdir}/libpe_status.so.*.*.*
414 %attr(755,root,root) %ghost %{_libdir}/libpe_status.so.16
415 %attr(755,root,root) %{_libdir}/libpengine.so.*.*.*
416 %attr(755,root,root) %ghost %{_libdir}/libpengine.so.16
417 %attr(755,root,root) %{_libdir}/libstonithd.so.*.*.*
418 %attr(755,root,root) %ghost %{_libdir}/libstonithd.so.2
419 %attr(755,root,root) %{_libdir}/libtransitioner.so.*.*.*
420 %attr(755,root,root) %ghost %{_libdir}/libtransitioner.so.2
423 %defattr(644,root,root,755)
424 %attr(755,root,root) %{_libdir}/libcib.so
425 %attr(755,root,root) %{_libdir}/libcrmcluster.so
426 %attr(755,root,root) %{_libdir}/libcrmcommon.so
427 %attr(755,root,root) %{_libdir}/libcrmservice.so
428 %attr(755,root,root) %{_libdir}/liblrmd.so
429 %attr(755,root,root) %{_libdir}/libpe_rules.so
430 %attr(755,root,root) %{_libdir}/libpe_status.so
431 %attr(755,root,root) %{_libdir}/libpengine.so
432 %attr(755,root,root) %{_libdir}/libstonithd.so
433 %attr(755,root,root) %{_libdir}/libtransitioner.so
435 %{_libdir}/libcrmcluster.la
436 %{_libdir}/libcrmcommon.la
437 %{_libdir}/libcrmservice.la
438 %{_libdir}/liblrmd.la
439 %{_libdir}/libpe_rules.la
440 %{_libdir}/libpe_status.la
441 %{_libdir}/libpengine.la
442 %{_libdir}/libstonithd.la
443 %{_libdir}/libtransitioner.la
444 %{_includedir}/pacemaker
445 %{_pkgconfigdir}/pacemaker.pc
446 %{_pkgconfigdir}/pacemaker-cib.pc
447 %{_pkgconfigdir}/pacemaker-cluster.pc
448 %{_pkgconfigdir}/pacemaker-fencing.pc
449 %{_pkgconfigdir}/pacemaker-lrmd.pc
450 %{_pkgconfigdir}/pacemaker-pengine.pc
451 %{_pkgconfigdir}/pacemaker-service.pc
454 %defattr(644,root,root,755)
456 %{_libdir}/libcrmcluster.a
457 %{_libdir}/libcrmcommon.a
458 %{_libdir}/libcrmservice.a
460 %{_libdir}/libpe_rules.a
461 %{_libdir}/libpe_status.a
462 %{_libdir}/libpengine.a
463 %{_libdir}/libstonithd.a
464 %{_libdir}/libtransitioner.a
467 %defattr(644,root,root,755)
468 %attr(755,root,root) %{_sbindir}/pacemaker_remoted
469 %attr(755,root,root) /etc/rc.d/init.d/pacemaker_remote
470 %{systemdunitdir}/pacemaker_remote.service
471 %{_mandir}/man8/pacemaker_remoted.8*
473 %if %{with heartbeat}
475 %defattr(644,root,root,755)
476 %attr(755,root,root) %{_sbindir}/crm_uuid
477 %{_mandir}/man8/crm_uuid.8*
482 %defattr(644,root,root,755)
483 %attr(755,root,root) %{_sbindir}/pacemakerd
484 %attr(755,root,root) /etc/rc.d/init.d/%{name}
485 %{systemdunitdir}/%{name}.service
486 %{_mandir}/man8/pacemakerd.8*
491 %defattr(644,root,root,755)
492 %dir %{_docdir}/pacemaker
493 %{_docdir}/pacemaker/Clusters_from_Scratch
494 %{_docdir}/pacemaker/Pacemaker_Development
495 %{_docdir}/pacemaker/Pacemaker_Explained
496 %{_docdir}/pacemaker/Pacemaker_Remote