# # spec file for package pacemaker # # 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 %global pcmk_docdir %{_docdir}/%{name} %if 0%{?suse_version} %define _libexecdir %{_libdir} %endif %define with_extra_warnings 0 %define with_debugging 1 %define with_ais_support 1 %define with_heartbeat_support 0 %define with_regression_tests 0 %define with_gcov 0 %define gname haclient %define uname hacluster %define doc_pkg heartbeat-doc-1.0 %if 0%{?fedora_version} %define pkg_group System Environment/Daemons %else %define pkg_group Productivity/Clustering/HA %endif Name: pacemaker Summary: The Pacemaker scalable High-Availability cluster resource manager Version: 1.1.6 Release: 0 License: GPLv2+ ; LGPLv2.1+ Url: http://www.clusterlabs.org Group: Productivity/Clustering/HA Source: pacemaker.tar.bz2 Source2: %{doc_pkg}.tar.gz Source100: pacemaker.rpmlintrc Patch1: pacemaker-cts-startcmd.patch Patch2: acl_fix_d44ff2711662.patch Patch10: crm_history.patch Patch11: crm_history_peinputs.patch Patch12: crm_history_pssh.patch Patch13: crm_history_1_d0359dca5dba.patch Patch14: crm_history_2_29fd4f04c01f.patch Patch15: crm_history_3_b3a014c0f85b.patch Patch16: crm_history_4_a09974a06cdf.patch Patch17: crm_history_5_c3068d22de72.patch Patch18: crm_history-fix-hb_report-limit.patch Patch19: crm_history_6_441f4448eba6.patch Patch20: crm_history_7_3f3c348aaaed.patch Patch21: crm_history_8_3681d3471fde.patch Patch22: crm_path_bnc712605.patch Patch23: crm_deleteunmanaged.patch Patch24: crm_lrmsecrets_3a81b7eae666.patch Patch25: crm_history_9_709ef91cfada.patch Patch26: crm_history_10_d21f988a419c.patch Patch27: crm_history_11_ccd0c1e1edf9.patch Patch28: crm_pager_f77e52725f2d.patch Patch29: crm_tickets_825cb3e79d7b.patch Patch30: crm_site_9b07d41c73b4.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build AutoReqProv: on Conflicts: heartbeat < 3.0 # We need libglue2, not libheartbeat2 Conflicts: libheartbeat2 < 3.0.0 PreReq: cluster-glue >= 1.0.6 Requires: resource-agents openais python python-xml Requires: libpacemaker3 = %{version}-%{release} python-curses BuildRequires: e2fsprogs-devel glib2-devel gnutls-devel libesmtp-devel libglue-devel libxml2-devel libxslt-devel ncurses-devel net-snmp-devel pam-devel pkgconfig python-devel resource-agents swig %if %with_regression_tests BuildRequires: openais procps python python-curses python-xml vim-base %endif %if %with_ais_support BuildRequires: libcorosync-devel Requires: corosync %endif %if %with_heartbeat_support BuildRequires: heartbeat-devel Requires: heartbeat %endif %if 0%{?suse_version} BuildRequires: libbz2-devel Suggests: graphviz Recommends: libdlm resource-agents Recommends: python-pssh %if 0%{?suse_version} > 1100 BuildRequires: docbook-xsl-stylesheets %endif %endif %if 0%{?fedora_version} || 0%{?centos_version} || 0%{?rhel_version} BuildRequires: which %endif %if 0%{?mandriva_version} BuildRequires: libbzip2-devel %endif %description Pacemaker is an advanced, scalable High-Availability cluster resource manager for Linux-HA (Heartbeat) and/or OpenAIS. It supports "n-node" clusters with significant capabilities for managing resources and dependencies. It will run scripts at initialization, when machines go up or down, when related resources fail and can be configured to periodically check resource health. Authors: -------- Andrew Beekhof %package -n libpacemaker3 License: GPLv2+ ; LGPLv2.1+ Summary: The Pacemaker scalable High-Availability cluster resource manager Group: Productivity/Clustering/HA %description -n libpacemaker3 Pacemaker is an advanced, scalable High-Availability cluster resource manager for Linux-HA (Heartbeat) and/or OpenAIS. It supports "n-node" clusters with significant capabilities for managing resources and dependencies. It will run scripts at initialization, when machines go up or down, when related resources fail and can be configured to periodically check resource health. Authors: -------- Andrew Beekhof %package -n libpacemaker-devel License: GPLv2 ; GPLv2+ ; LGPLv2.1+ Summary: The Pacemaker scalable High-Availability cluster resource manager Group: Development/Libraries/C and C++ Requires: %{name} = %{version}-%{release} Requires: libpacemaker3 = %{version}-%{release} Requires: libglue-devel %if %with_regression_tests # For the regression tests, we can run them only if all pacemaker # packages are installed, so we pull that in here for the regression # builds; this is supposed to be disabled for shipping code. Requires: pacemaker %endif %description -n libpacemaker-devel Pacemaker is an advanced, scalable High-Availability cluster resource manager for Linux-HA (Heartbeat) and/or OpenAIS. It supports "n-node" clusters with significant capabilities for managing resources and dependencies. It will run scripts at initialization, when machines go up or down, when related resources fail and can be configured to periodically check resource health. Authors: -------- Andrew Beekhof %prep ########################################################### %setup -a 2 -n pacemaker -q %patch1 -p1 %patch2 -p1 -R %patch10 -p1 %patch11 -p1 %patch12 -p1 %patch13 -p1 %patch14 -p1 %patch15 -p1 %patch16 -p1 %patch17 -p1 %patch18 -p1 %patch19 -p1 %patch20 -p1 %patch21 -p1 %patch22 -p1 %patch23 -p1 %patch24 -p1 %patch25 -p1 %patch26 -p1 %patch27 -p1 %patch28 -p1 %patch29 -p1 %patch30 -p1 ########################################################### %build export SUSE_ASNEEDED=0 CFLAGS="${CFLAGS} ${RPM_OPT_FLAGS}" export CFLAGS ./autogen.sh %configure --localstatedir=%{_var} \ --docdir=%{pcmk_docdir} \ %if %with_gcov --with-gcov=1 \ %endif --with-acl=true \ --enable-fatal-warnings=no make %{_smp_mflags} if [ -e /usr/share/xml/docbook/stylesheet/nwalsh/current ]; then make -C %{doc_pkg} man fi ########################################################### %install export SUSE_ASNEEDED=0 ########################################################### make DESTDIR=$RPM_BUILD_ROOT install if [ -e %{doc_pkg}/cibadmin.8 ]; then install -d $RPM_BUILD_ROOT/%{_mandir}/man8 for file in `ls -1 %{doc_pkg}/*.8`; do install -p -m 644 $file $RPM_BUILD_ROOT/%{_mandir}/man8 done fi chmod a+x $RPM_BUILD_ROOT/%{_libdir}/heartbeat/crm_primitive.py chmod a+x $RPM_BUILD_ROOT/%{_libdir}/heartbeat/hb2openais-helper.py rm $RPM_BUILD_ROOT/%{_libdir}/service_crm.so # Don't want to ship this just yet: rm $RPM_BUILD_ROOT/etc/init.d/pacemaker || true rm $RPM_BUILD_ROOT/usr/sbin/pacemaker{d,} || true %if %with_gcov GCOV_BASE=$RPM_BUILD_ROOT/%{_var}/lib/pacemaker/gcov mkdir -p $GCOV_BASE find . -name '*.gcno' -type f | while read F ; do D=`dirname $F` mkdir -p ${GCOV_BASE}/$D cp $F ${GCOV_BASE}/$D done %endif #%if %with_ais_support # mkdir -p $RPM_BUILD_ROOT/%{_libexecdir}/lcrso # cp $RPM_BUILD_ROOT/%{_libdir}/service_crm.so $RPM_BUILD_ROOT/%{_libexecdir}/lcrso/pacemaker.lcrso #%endif # Cleanup [ -d $RPM_BUILD_ROOT/usr/man ] && rm -rf $RPM_BUILD_ROOT/usr/man [ -d $RPM_BUILD_ROOT/usr/share/libtool ] && rm -rf $RPM_BUILD_ROOT/usr/share/libtool 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 ########################################################### %clean ########################################################### if [ -n "${RPM_BUILD_ROOT}" -a "${RPM_BUILD_ROOT}" != "/" ] then rm -rf $RPM_BUILD_ROOT fi rm -rf $RPM_BUILD_DIR/pacemaker ########################################################### %post -n libpacemaker3 -p /sbin/ldconfig %postun -n libpacemaker3 -p /sbin/ldconfig %if %with_regression_tests %post -n libpacemaker-devel if [ ! -e /tmp/.pcmk_regression_tests_ran ]; then touch /tmp/.pcmk_regression_tests_ran # Needed so that the shell doesn't get stuck on escape # sequences export TERM=dumb /usr/share/pacemaker/tests/cli/regression.sh || true /usr/share/pacemaker/tests/pengine/regression.sh -V || true echo Now running shell regression tests ; date if ! /usr/share/pacemaker/tests/shell/regression.sh ; then echo "Shell tests failed." cat crmtestout/regression.out fi fi %endif %files ########################################################### %defattr(-,root,root) %dir %{_libdir}/heartbeat %dir %{_var}/lib/heartbeat %dir %{pcmk_docdir} %exclude %{_datadir}/pacemaker/tests %{_datadir}/pacemaker %{_libdir}/heartbeat/* %{_sbindir}/cibadmin %{_sbindir}/crm_attribute %{_sbindir}/crm_diff %{_sbindir}/crm_failcount %{_sbindir}/crm_master %{_sbindir}/crm_mon %{_sbindir}/crm %{_sbindir}/crm_resource %{_sbindir}/crm_report %{_sbindir}/crm_standby %{_sbindir}/crm_ticket %{_sbindir}/crm_verify %{_sbindir}/crmadmin %{_sbindir}/iso8601 %{_sbindir}/attrd_updater %{_sbindir}/ptest %{_sbindir}/crm_shadow %{_sbindir}/cibpipe %{_sbindir}/crm_node %{_sbindir}/crm_simulate %{_sbindir}/fence_legacy %{_sbindir}/stonith_admin %{py_sitedir}/crm %dir %attr (750, %{uname}, %{gname}) %{_var}/lib/heartbeat/crm %dir %attr (750, %{uname}, %{gname}) %{_var}/lib/pengine %ghost %dir %attr (750, %{uname}, %{gname}) %{_var}/run/crm %dir /usr/lib/ocf %dir /usr/lib/ocf/resource.d /usr/lib/ocf/resource.d/pacemaker %{_datadir}/snmp/mibs/PCMK-MIB.txt %if %with_ais_support %dir %{_libexecdir}/lcrso %{_libexecdir}/lcrso %{_libexecdir}/lcrso/pacemaker.lcrso %endif %if !0%{?_without_heartbeat} %{_sbindir}/crm_uuid %else %exclude %{_sbindir}/crm_uuid %endif %exclude /usr/lib/ocf/resource.d/pacemaker/o2cb # Packaged elsewhere %exclude %{pcmk_docdir}/AUTHORS %exclude %{pcmk_docdir}/COPYING %exclude %{pcmk_docdir}/COPYING.LIB %exclude %{_libdir}/pkgconfig %doc %{pcmk_docdir} # %doc %{pcmk_docdir}/*.html %doc %{_mandir}/man8/*.8* %doc %{_mandir}/man7/*.7* %doc %{pcmk_docdir}/README.hb2openais %doc %{pcmk_docdir}/acls.txt %doc %{pcmk_docdir}/crm_fencing.txt %files -n libpacemaker3 %defattr(-,root,root) %{_libdir}/libcib.so.* %{_libdir}/libcrmcommon.so.* %{_libdir}/libcrmcluster.so.* %{_libdir}/libpe_status.so.* %{_libdir}/libpe_rules.so.* %{_libdir}/libpengine.so.* %{_libdir}/libtransitioner.so.* %{_libdir}/libstonithd.so.* %files -n libpacemaker-devel %defattr(-,root,root) #%doc %{_datadir}/doc/%{name}-%{version} %{py_sitedir}/cts %{_datadir}/pacemaker/tests %{_includedir}/pacemaker # %{_includedir}/heartbeat/fencing %{_libdir}/*.so %{_libdir}/pkgconfig/*.pc %if %with_gcov %dir %{_var}/lib/pacemaker /%{_var}/lib/pacemaker %endif %changelog