[pacemaker/f16] Sync with master
Andrew Beekhof
beekhof at fedoraproject.org
Thu Oct 6 06:29:33 UTC 2011
commit 13d047b33b6ee3922d2e3651c57fee72509e14fa
Author: Andrew Beekhof <andrew at beekhof.net>
Date: Thu Oct 6 17:29:24 2011 +1100
Sync with master
.gitignore | 1 +
pacemaker.spec | 373 ++++++++++++++++++++++++++++++++++---------------------
sources | 2 +-
3 files changed, 232 insertions(+), 144 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index c4eb20f..e2628cc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
/Pacemaker-1.1.4.tar.bz2
/Pacemaker-1.1.5.tar.bz2
/Pacemaker-1.1.6.tar.bz2
+/ClusterLabs-pacemaker-89678d4.tar.gz
diff --git a/pacemaker.spec b/pacemaker.spec
index 4126015..81a4244 100644
--- a/pacemaker.spec
+++ b/pacemaker.spec
@@ -2,110 +2,137 @@
%global uname hacluster
%global pcmk_docdir %{_docdir}/%{name}
+%global specversion 3
+%global upstream_version 89678d4
+%global upstream_prefix ClusterLabs-pacemaker
+
+# Compatibility macros for distros (fedora) that don't provide Python macros by default
+# Do this instead of trying to conditionally include {_rpmconfigdir}/macros.python
+%{!?py_ver: %{expand: %%global py_ver %%(echo `python -c "import sys; print sys.version[:3]"`)}}
+%{!?py_prefix: %{expand: %%global py_prefix %%(echo `python -c "import sys; print sys.prefix"`)}}
+%{!?py_libdir: %{expand: %%global py_libdir %%{expand:%%%%{py_prefix}/%%%%{_lib}/python%%%%{py_ver}}}}
+%{!?py_sitedir: %{expand: %%global py_sitedir %%{expand:%%%%{py_libdir}/site-packages}}}
+
+# Compatibility macro wrappers for legacy RPM versions that do not
+# support conditional builds
+%{!?bcond_without: %{expand: %%global bcond_without() %%{expand:%%%%{!?_without_%%{1}:%%%%global with_%%{1} 1}}}}
+%{!?bcond_with: %{expand: %%global bcond_with() %%{expand:%%%%{?_with_%%{1}:%%%%global with_%%{1} 1}}}}
+%{!?with: %{expand: %%global with() %%{expand:%%%%{?with_%%{1}:1}%%%%{!?with_%%{1}:0}}}}
+%{!?without: %{expand: %%global without() %%{expand:%%%%{?with_%%{1}:0}%%%%{!?with_%%{1}:1}}}}
+
+# Conditionals
+# Invoke "rpmbuild --without <feature>" or "rpmbuild --with <feature>"
+# to disable or enable specific features
+
# Supported cluster stacks, must support at least one
%bcond_without cman
-%bcond_without ais
-%bcond_without heartbeat
+%bcond_without doc
+%bcond_without corosync
+%bcond_with heartbeat
# ESMTP is not available in RHEL, only in EPEL. Allow people to build
# the RPM without ESMTP in case they choose not to use EPEL packages
%bcond_with esmtp
-
-# SNMP trap support only works with Net-SNMP 5.4 and above
-# And links against libperl.so which is borked on fedora
%bcond_with snmp
-# Support additional trace logging
-%bcond_with tracedata
+# Build with/without support for profiling tools
+%bcond_with profiling
+%bcond_with gcov
-%bcond_without doc
+# Support additional trace logging
+%bcond_without tracedata
# We generate some docs using Publican, but its not available everywhere
-%bcond_with publican
-
-%global specversion 1
-%global upstream_version Pacemaker-1.1.6
-%global upstream_prefix Pacemaker-1-1-
+%bcond_without publican
# Use a different versioning scheme
%bcond_with pre_release
+%if %{with profiling}
+# This disables -debuginfo package creation and also the stripping binaries/libraries
+# Useful if you want sane profiling data
+%global debug_package %{nil}
+%endif
+
%if %{with pre_release}
-%global pcmk_release 0.%{specversion}.%{upstream_version}.hg
+%global pcmk_release 0.%{specversion}.%{upstream_version}.git
%else
%global pcmk_release %{specversion}
%endif
-# Compatibility macros for distros that don't provide Python macros by default.
-# Do this instead of trying to conditionally include
-# {_rpmconfigdir}/macros.python which doesn't always exist
-%{!?py_ver: %{expand: %%global py_ver %%(echo `python -c "import sys; print sys.version[:3]"`)}}
-%{!?py_prefix: %{expand: %%global py_prefix %%(echo `python -c "import sys; print sys.prefix"`)}}
-%{!?py_libdir: %{expand: %%global py_libdir %%{expand:%%%%{py_prefix}/%%%%{_lib}/python%%%%{py_ver}}}}
-%{!?py_sitedir: %{expand: %%global py_sitedir %%{expand:%%%%{py_libdir}/site-packages}}}
-
-Name: pacemaker
-Summary: Scalable High-Availability cluster resource manager
-Version: 1.1.6
-Release: %{pcmk_release}%{?dist}
-License: GPLv2+ and LGPLv2+
-Url: http://www.clusterlabs.org
-Group: System Environment/Daemons
-Source0: http://hg.clusterlabs.org/pacemaker/1.1/archive/%{upstream_version}.tar.bz2
-
-BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
-AutoReqProv: on
-Requires(pre): cluster-glue
-Requires: resource-agents
-Requires: %{name}-libs = %{version}-%{release}
-Requires: %{name}-cli = %{version}-%{release}
+Name: pacemaker
+Summary: Scalable High-Availability cluster resource manager
+Version: 1.1.6
+Release: %{pcmk_release}%{?dist}
+License: GPLv2+ and LGPLv2+
+Url: http://www.clusterlabs.org
+Group: System Environment/Daemons
+
+# export VER={upstream_version}
+# wget --no-check-certificate -O ClusterLabs-pacemaker-${VER}.tar.gz https://github.com/ClusterLabs/pacemaker/tarball/${VER}
+Source0: %{upstream_prefix}-%{upstream_version}.tar.gz
+BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
+AutoReqProv: on
+Requires(pre): cluster-glue
+Requires: resource-agents
+Requires: %{name}-libs = %{version}-%{release}
+Requires: %{name}-cluster-libs = %{version}-%{release}
+Requires: %{name}-cli = %{version}-%{release}
+Requires: python >= 2.4
+Conflicts: heartbeat < 2.99
%if %{with snmp}
-Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
+Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
%endif
# Required for core functionality
-BuildRequires: automake autoconf libtool pkgconfig libtool-ltdl-devel python-devel
-BuildRequires: glib2-devel cluster-glue-libs-devel libxml2-devel libxslt-devel
-BuildRequires: pkgconfig python-devel gcc-c++ bzip2-devel gnutls-devel pam-devel
+BuildRequires: automake autoconf libtool pkgconfig python libtool-ltdl-devel
+BuildRequires: glib2-devel cluster-glue-libs-devel libxml2-devel libxslt-devel
+BuildRequires: pkgconfig python-devel gcc-c++ bzip2-devel gnutls-devel pam-devel
# Enables optional functionality
-BuildRequires: help2man ncurses-devel openssl-devel libselinux-devel docbook-style-xsl resource-agents
+BuildRequires: ncurses-devel openssl-devel libselinux-devel docbook-style-xsl resource-agents
+
+
+%if %{with cman}
+BuildRequires: clusterlib-devel
+%endif
%if %{with esmtp}
-BuildRequires: libesmtp-devel
+BuildRequires: libesmtp-devel
%endif
%if %{with snmp}
-BuildRequires: net-snmp-devel >= 5.4
-Requires: net-snmp >= 5.4
+%ifarch alpha %{ix86} x86_64
+BuildRequires: lm_sensors-devel
%endif
-%if %{with ais}
-BuildRequires: corosynclib-devel
+BuildRequires: net-snmp-devel
%endif
-%if %{with cman}
-BuildRequires: clusterlib-devel
+%if %{with corosync}
+# Do not require corosync, the admin should select which stack to use and install it
+BuildRequires: corosynclib-devel
%endif
%if %{with heartbeat}
-BuildRequires: heartbeat-devel heartbeat-libs
+# Do not require heartbeat, the admin should select which stack to use and install it
+BuildRequires: heartbeat-devel heartbeat-libs >= 3.0.0
%endif
%if %{with doc}
-BuildRequires: asciidoc help2man
+BuildRequires: asciidoc help2man
%if %{with publican}
%ifarch %{ix86} x86_64
-BuildRequires: publican inkscape
+BuildRequires: publican inkscape
%endif
%endif
%endif
%description
Pacemaker is an advanced, scalable High-Availability cluster resource
-manager for Linux-HA (Heartbeat) and/or OpenAIS.
+manager for Linux-HA (Heartbeat) and/or Corosync.
It supports "n-node" clusters with significant capabilities for
managing resources and dependencies.
@@ -114,94 +141,102 @@ 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.
+Available rpmbuild rebuild options:
+ --with(out) : heartbeat cman corosync doc publican snmp esmtp pre_release
+
%package cli
-License: GPLv2+ and LGPLv2+
-Summary: Command line tools for controlling the Pacemaker cluster resource manager
-Group: System Environment/Daemons
-Requires: %{name}-libs = %{version}-%{release}
+License: GPLv2+ and LGPLv2+
+Summary: Command line tools for controlling Pacemaker clusters
+Group: System Environment/Daemons
+Requires: %{name}-libs = %{version}-%{release}
%description cli
Pacemaker is an advanced, scalable High-Availability cluster resource
-manager for Linux-HA (Heartbeat) and/or OpenAIS.
+manager for Linux-HA (Heartbeat) and/or Corosync.
-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.
+The %{name}-cli package contains command line tools that can be used
+to query and control the cluster from machines that may, or may not,
+be part of the cluster.
%package -n %{name}-libs
-License: GPLv2+ and LGPLv2+
-Summary: Libraries used by the Pacemaker cluster resource manager and its clients
-Group: System Environment/Daemons
+License: GPLv2+ and LGPLv2+
+Summary: Core Pacemaker libraries
+Group: System Environment/Daemons
%description -n %{name}-libs
Pacemaker is an advanced, scalable High-Availability cluster resource
-manager for Linux-HA (Heartbeat) and/or OpenAIS.
+manager for Linux-HA (Heartbeat) and/or Corosync.
-It supports "n-node" clusters with significant capabilities for
-managing resources and dependencies.
+The %{name}-libs package contains shared libraries needed for cluster
+nodes and those just running the CLI tools.
-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.
+%package -n %{name}-cluster-libs
+License: GPLv2+ and LGPLv2+
+Summary: Cluster Libraries used by Pacemaker
+Group: System Environment/Daemons
+Requires: %{name}-libs = %{version}-%{release}
+
+%description -n %{name}-cluster-libs
+Pacemaker is an advanced, scalable High-Availability cluster resource
+manager for Linux-HA (Heartbeat) and/or Corosync.
+
+The %{name}-cluster-libs package contains cluster-aware shared
+libraries needed for nodes that will form part of the cluster nodes.
%package -n %{name}-libs-devel
-License: GPLv2+ and LGPLv2+
-Summary: Pacemaker development package
-Group: Development/Libraries
-Requires: %{name}-libs = %{version}-%{release}
-Requires: cluster-glue-libs-devel libtool-ltdl-devel
-%if %{with ais}
-Requires: corosynclib-devel
+License: GPLv2+ and LGPLv2+
+Summary: Pacemaker development package
+Group: Development/Libraries
+Requires: %{name}-libs = %{version}-%{release}
+Requires: %{name}-cluster-libs = %{version}-%{release}
+Requires: cluster-glue-libs-devel libtool-ltdl-devel
+Requires: libxml2-devel libxslt-devel bzip2-devel glib2-devel
+%if %{with corosync}
+Requires: corosynclib-devel
%endif
%if %{with heartbeat}
-Requires: heartbeat-devel
+Requires: heartbeat-devel
%endif
%description -n %{name}-libs-devel
-Headers and shared libraries for developing tools for Pacemaker.
-
Pacemaker is an advanced, scalable High-Availability cluster resource
-manager for Linux-HA (Heartbeat) and/or OpenAIS.
+manager for Linux-HA (Heartbeat) and/or Corosync.
-It supports "n-node" clusters with significant capabilities for
-managing resources and dependencies.
+The %{name}-libs-devel package contains headers and shared libraries
+for developing tools for Pacemaker.
-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.
-%package cts
-License: GPLv2+ and LGPLv2+
-Summary: Test framework for cluster-related technologies like Pacemaker
-Group: System Environment/Daemons
-Requires: python
+%package cts
+License: GPLv2+ and LGPLv2+
+Summary: Test framework for cluster-related technologies like Pacemaker
+Group: System Environment/Daemons
+Requires: python
-%description cts
+%description cts
Test framework for cluster-related technologies like Pacemaker
-%package doc
-License: GPLv2+ and LGPLv2+
-Summary: Documentation for Pacemaker
-Group: Documentation
+%package doc
+License: GPLv2+ and LGPLv2+
+Summary: Documentation for Pacemaker
+Group: Documentation
-%description doc
+%description doc
Documentation for Pacemaker.
Pacemaker is an advanced, scalable High-Availability cluster resource
-manager for OpenAIS/Corosync.
-
-It supports "n-node" clusters with significant capabilities for
-managing resources and dependencies.
+manager for Linux-HA (Heartbeat) and/or Corosync.
-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.
%prep
-%setup -q -n %{upstream_prefix}%{upstream_version}
+%setup -q -n %{upstream_prefix}-%{upstream_version}
+
+# Force the local time
+#
+# 'hg archive' sets the file date to the date of the last commit.
+# This can result in files having been created in the future
+# when building on machines in timezones 'behind' the one the
+# commit occurred in - which seriously confuses 'make'
+find . -exec touch \{\} \;
%build
./autogen.sh
@@ -210,32 +245,32 @@ resource health.
eval `objdump --headers --private-headers /usr/bin/perl | grep RPATH | awk '{print "export LD_LIBRARY_PATH="$2}'`
%endif
-%{configure} \
- %{!?with_heartbeat: --without-heartbeat} \
- %{!?with_ais: --without-ais} \
- %{!?with_esmtp: --without-esmtp} \
- %{!?with_snmp: --without-snmp} \
- %{?with_cman: --with-cman} \
- %{?with_profiling: --with-profiling} \
- %{?with_gcov: --with-gcov} \
- %{?with_tracedata --with-tracedata} \
- --with-version=%{version}-%{release} \
- --docdir=%{pcmk_docdir} \
- --localstatedir=%{_var} \
- --with-initdir=%{_initddir} \
- --enable-fatal-warnings=no \
- --disable-ansi
-
-make %{_smp_mflags}
+# RHEL <= 5 does not support --docdir
+docdir=%{pcmk_docdir} %{configure} \
+ %{!?with_heartbeat: --without-heartbeat} \
+ %{!?with_corosync: --without-ais} \
+ %{!?with_esmtp: --without-esmtp} \
+ %{!?with_snmp: --without-snmp} \
+ %{?with_cman: --with-cman} \
+ %{?with_profiling: --with-profiling} \
+ %{?with_gcov: --with-gcov} \
+ %{?with_tracedata: --with-tracedata} \
+ --with-initdir=%{_initrddir} \
+ --localstatedir=%{_var} \
+ --with-version=%{version}-%{release} \
+ --enable-fatal-warnings=no
+
+make %{_smp_mflags} docdir=%{pcmk_docdir}
%install
rm -rf %{buildroot}
-make DESTDIR=%{buildroot} install
+make DESTDIR=%{buildroot} docdir=%{pcmk_docdir} install
mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig
install -m 644 mcp/pacemaker.sysconfig ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/pacemaker
# Scripts that should be executable
+chmod a+x %{buildroot}/%{_libdir}/heartbeat/hb2openais-helper.py
chmod a+x %{buildroot}/%{_datadir}/pacemaker/tests/cts/CTSlab.py
chmod a+x %{buildroot}/%{_datadir}/pacemaker/tests/cts/extracttests.py
@@ -245,15 +280,25 @@ find %{buildroot} -name '*.xsl' -type f -print0 | xargs -0 chmod a-x
find %{buildroot} -name '*.rng' -type f -print0 | xargs -0 chmod a-x
find %{buildroot} -name '*.dtd' -type f -print0 | xargs -0 chmod a-x
-# Dont package static libs or compiled python
+# Dont package static libs
find %{buildroot} -name '*.a' -type f -print0 | xargs -0 rm -f
find %{buildroot} -name '*.la' -type f -print0 | xargs -0 rm -f
-# Don't package these either
+# Do not package these either
rm -f %{buildroot}/%{_libdir}/heartbeat/hb2openais-helper.*
rm -f %{buildroot}/%{_libdir}/heartbeat/crm_primitive.*
+rm -f %{buildroot}/%{_libdir}/heartbeat/atest
rm -f %{buildroot}/%{_libdir}/service_crm.so
-rm -f %{buildroot}/usr/lib/ocf/resource.d/pacemaker/pingd
+
+%if %{with gcov}
+GCOV_BASE=%{buildroot}/%{_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
%clean
rm -rf %{buildroot}
@@ -271,6 +316,10 @@ fi
%postun -n %{name}-libs -p /sbin/ldconfig
+%post -n %{name}-cluster-libs -p /sbin/ldconfig
+
+%postun -n %{name}-cluster-libs -p /sbin/ldconfig
+
%files
###########################################################
%defattr(-,root,root)
@@ -278,8 +327,9 @@ fi
%exclude %{_datadir}/pacemaker/tests
%config(noreplace) %{_sysconfdir}/sysconfig/pacemaker
-%{_initddir}/pacemaker
%{_sbindir}/pacemakerd
+%{_initrddir}/pacemaker
+
%if %{defined _unitdir}
%{_unitdir}/pacemaker.service
%endif
@@ -287,14 +337,34 @@ fi
%{_datadir}/pacemaker
%{_datadir}/snmp/mibs/PCMK-MIB.txt
%{_libdir}/heartbeat/*
+
%{_sbindir}/crm_attribute
%{_sbindir}/crm_master
+%{_sbindir}/crm_node
%{_sbindir}/attrd_updater
%{_sbindir}/fence_legacy
+%{_sbindir}/fence_pcmk
+%{_bindir}/ccs2cib
+%{_bindir}/ccs_flatten
+%{_bindir}/disable_rgmanager
%{_sbindir}/stonith_admin
-# Packaged elsewhere
-%exclude %{_datadir}/pacemaker/tests
+%if %{with heartbeat}
+%{_sbindir}/crm_uuid
+%else
+%exclude %{_sbindir}/crm_uuid
+%endif
+
+%if %{with doc}
+%doc %{_mandir}/man7/*
+%doc %{_mandir}/man8/attrd_updater.*
+%doc %{_mandir}/man8/crm_attribute.*
+%doc %{_mandir}/man8/crm_node.*
+%doc %{_mandir}/man8/crm_master.*
+%doc %{_mandir}/man8/fence_pcmk.*
+%doc %{_mandir}/man8/pacemakerd.*
+%doc %{_mandir}/man8/stonith_admin.*
+%endif
%doc COPYING
%doc AUTHORS
@@ -302,11 +372,11 @@ fi
%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 %attr (750, %{uname}, %{gname}) %{_var}/run/crm
%dir /usr/lib/ocf
%dir /usr/lib/ocf/resource.d
/usr/lib/ocf/resource.d/pacemaker
-%if %{with ais}
+%if %{with corosync}
%{_libexecdir}/lcrso/pacemaker.lcrso
%endif
@@ -325,20 +395,19 @@ fi
%{_sbindir}/ptest
%{_sbindir}/crm_shadow
%{_sbindir}/cibpipe
-%{_sbindir}/crm_node
%{_sbindir}/crm_simulate
%{_sbindir}/crm_report
%{_sbindir}/crm_ticket
%{py_sitedir}/crm
%if %{with doc}
-%doc %{_mandir}/man7/*
%doc %{_mandir}/man8/*
-%endif
-
-%if %{with heartbeat}
-%{_sbindir}/crm_uuid
-%else
-%exclude %{_sbindir}/crm_uuid
+%exclude %{_mandir}/man8/attrd_updater.*
+%exclude %{_mandir}/man8/crm_attribute.*
+%exclude %{_mandir}/man8/crm_node.*
+%exclude %{_mandir}/man8/crm_master.*
+%exclude %{_mandir}/man8/fence_pcmk.*
+%exclude %{_mandir}/man8/pacemakerd.*
+%exclude %{_mandir}/man8/stonith_admin.*
%endif
%doc COPYING
@@ -349,11 +418,16 @@ fi
%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.*
+%doc COPYING.LIB
+%doc AUTHORS
+
+%files -n %{name}-cluster-libs
+%defattr(-,root,root)
+%{_libdir}/libcrmcluster.so.*
%{_libdir}/libstonithd.so.*
%doc COPYING.LIB
%doc AUTHORS
@@ -375,11 +449,24 @@ fi
%{_datadir}/pacemaker/tests
%{_includedir}/pacemaker
%{_libdir}/*.so
+%if %{with gcov}
+%{_var}/lib/pacemaker
+%endif
%{_libdir}/pkgconfig/*.pc
%doc COPYING.LIB
%doc AUTHORS
%changelog
+* Mon Sep 26 2011 Andrew Beekhof <andrew at beekhof.net> 1.1.6-3
+- New upstream tarball: 89678d4
+- Move man pages to the correct subpackages
+
+* Mon Sep 26 2011 Andrew Beekhof <andrew at beekhof.net> 1.1.6-2
+- Do not build in support for heartbeat, snmp, esmtp by default
+- Create a package for cluster unaware libraries to minimze our
+ footprint on non-cluster nodes
+- Better package descriptions
+
* Thu Sep 07 2011 Andrew Beekhof <andrew at beekhof.net> 1.1.6-1
- Upstream release of 1.1.6
- See included ChangeLog file or http://hg.clusterlabs.org/pacemaker/1.1/file/tip/ChangeLog for details
diff --git a/sources b/sources
index 044e20e..a07e799 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-70a3605231977c3df0f25439d0d5551e Pacemaker-1.1.6.tar.bz2
+f3f5a66cc7c8f4a3104f66942c14b618 ClusterLabs-pacemaker-89678d4.tar.gz
More information about the scm-commits
mailing list