Re-sync with the upstream spec file

This commit is contained in:
Andrew Beekhof 2011-09-26 13:38:06 +10:00
parent fde19d9994
commit f007d73c77

View File

@ -2,48 +2,53 @@
%global uname hacluster %global uname hacluster
%global pcmk_docdir %{_docdir}/%{name} %global pcmk_docdir %{_docdir}/%{name}
# Supported cluster stacks, must support at least one
%bcond_without cman
%bcond_without ais
%bcond_without 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
%bcond_without doc
# We generate some docs using Publican, but its not available everywhere
%bcond_with publican
%global specversion 1 %global specversion 1
%global upstream_version Pacemaker-1.1.6 %global upstream_version Pacemaker-1.1.6
%global upstream_prefix Pacemaker-1-1- %global upstream_prefix Pacemaker-1-1-
# 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}}}
# Supported cluster stacks, must support at least one
%bcond_without cman
%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
%bcond_with snmp
# Build with/without support for profiling tools
%bcond_with profiling
%bcond_with gcov
# Support additional trace logging
%bcond_without tracedata
# We generate some docs using Publican, but its not available everywhere
%bcond_without publican
# Use a different versioning scheme # Use a different versioning scheme
%bcond_with pre_release %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} %if %{with pre_release}
%global pcmk_release 0.%{specversion}.%{upstream_version}.hg %global pcmk_release 0.%{specversion}.%{upstream_version}.hg
%else %else
%global pcmk_release %{specversion} %global pcmk_release %{specversion}
%endif %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 Name: pacemaker
Summary: Scalable High-Availability cluster resource manager Summary: Scalable High-Availability cluster resource manager
Version: 1.1.6 Version: 1.1.6
@ -52,45 +57,53 @@ License: GPLv2+ and LGPLv2+
Url: http://www.clusterlabs.org Url: http://www.clusterlabs.org
Group: System Environment/Daemons Group: System Environment/Daemons
Source0: http://hg.clusterlabs.org/pacemaker/1.1/archive/%{upstream_version}.tar.bz2 Source0: http://hg.clusterlabs.org/pacemaker/1.1/archive/%{upstream_version}.tar.bz2
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
AutoReqProv: on AutoReqProv: on
Requires(pre): cluster-glue Requires(pre): cluster-glue
Requires: resource-agents Requires: resource-agents
Requires: %{name}-libs = %{version}-%{release} Requires: %{name}-libs = %{version}-%{release}
Requires: %{name}-cluster-libs = %{version}-%{release}
Requires: %{name}-cli = %{version}-%{release} Requires: %{name}-cli = %{version}-%{release}
Requires: python >= 2.4
Conflicts: heartbeat < 2.99
%if %{with snmp} %if %{with snmp}
Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
%endif %endif
# Required for core functionality # Required for core functionality
BuildRequires: automake autoconf libtool pkgconfig libtool-ltdl-devel python-devel BuildRequires: automake autoconf libtool pkgconfig python libtool-ltdl-devel
BuildRequires: glib2-devel cluster-glue-libs-devel libxml2-devel libxslt-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: pkgconfig python-devel gcc-c++ bzip2-devel gnutls-devel pam-devel
# Enables optional functionality # 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 esmtp}
BuildRequires: libesmtp-devel
%endif
%if %{with snmp} %ifarch alpha %{ix86} x86_64
BuildRequires: net-snmp-devel >= 5.4 BuildRequires: lm_sensors-devel
Requires: net-snmp >= 5.4
%endif
%if %{with ais}
BuildRequires: corosynclib-devel
%endif %endif
%if %{with cman} %if %{with cman}
BuildRequires: clusterlib-devel BuildRequires: clusterlib-devel
%endif %endif
%if %{with esmtp}
BuildRequires: libesmtp-devel
%endif
%if %{with snmp}
BuildRequires: net-snmp-devel
%endif
%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} %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 %endif
%if %{with doc} %if %{with doc}
@ -105,7 +118,7 @@ BuildRequires: publican inkscape
%description %description
Pacemaker is an advanced, scalable High-Availability cluster resource 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 It supports "n-node" clusters with significant capabilities for
managing resources and dependencies. managing resources and dependencies.
@ -114,38 +127,47 @@ It will run scripts at initialization, when machines go up or down,
when related resources fail and can be configured to periodically check when related resources fail and can be configured to periodically check
resource health. resource health.
Available rpmbuild rebuild options:
--with(out) : heartbeat cman corosync doc publican snmp esmtp pre_release
%package cli %package cli
License: GPLv2+ and LGPLv2+ License: GPLv2+ and LGPLv2+
Summary: Command line tools for controlling the Pacemaker cluster resource manager Summary: Command line tools for controlling Pacemaker clusters
Group: System Environment/Daemons Group: System Environment/Daemons
Requires: %{name}-libs = %{version}-%{release} Requires: %{name}-libs = %{version}-%{release}
%description cli %description cli
Pacemaker is an advanced, scalable High-Availability cluster resource 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 The %{name}-cli package contains command line tools that can be used
managing resources and dependencies. to query and control the cluster from machines that may, or may not,
be part of the cluster.
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}-libs %package -n %{name}-libs
License: GPLv2+ and LGPLv2+ License: GPLv2+ and LGPLv2+
Summary: Libraries used by the Pacemaker cluster resource manager and its clients Summary: Core Pacemaker libraries
Group: System Environment/Daemons Group: System Environment/Daemons
%description -n %{name}-libs %description -n %{name}-libs
Pacemaker is an advanced, scalable High-Availability cluster resource 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 The %{name}-libs package contains shared libraries needed for cluster
managing resources and dependencies. nodes and those just running the CLI tools.
It will run scripts at initialization, when machines go up or down, %package -n %{name}-cluster-libs
when related resources fail and can be configured to periodically check License: GPLv2+ and LGPLv2+
resource health. 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 %package -n %{name}-libs-devel
License: GPLv2+ and LGPLv2+ License: GPLv2+ and LGPLv2+
@ -153,7 +175,8 @@ Summary: Pacemaker development package
Group: Development/Libraries Group: Development/Libraries
Requires: %{name}-libs = %{version}-%{release} Requires: %{name}-libs = %{version}-%{release}
Requires: cluster-glue-libs-devel libtool-ltdl-devel Requires: cluster-glue-libs-devel libtool-ltdl-devel
%if %{with ais} Requires: libxml2-devel libxslt-devel bzip2-devel glib2-devel
%if %{with corosync}
Requires: corosynclib-devel Requires: corosynclib-devel
%endif %endif
%if %{with heartbeat} %if %{with heartbeat}
@ -161,17 +184,12 @@ Requires: heartbeat-devel
%endif %endif
%description -n %{name}-libs-devel %description -n %{name}-libs-devel
Headers and shared libraries for developing tools for Pacemaker.
Pacemaker is an advanced, scalable High-Availability cluster resource 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 The %{name}-libs-devel package contains headers and shared libraries
managing resources and dependencies. 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 %package cts
License: GPLv2+ and LGPLv2+ License: GPLv2+ and LGPLv2+
@ -191,17 +209,19 @@ Group: Documentation
Documentation for Pacemaker. Documentation for Pacemaker.
Pacemaker is an advanced, scalable High-Availability cluster resource Pacemaker is an advanced, scalable High-Availability cluster resource
manager for OpenAIS/Corosync. 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.
%prep %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 %build
./autogen.sh ./autogen.sh
@ -210,21 +230,19 @@ resource health.
eval `objdump --headers --private-headers /usr/bin/perl | grep RPATH | awk '{print "export LD_LIBRARY_PATH="$2}'` eval `objdump --headers --private-headers /usr/bin/perl | grep RPATH | awk '{print "export LD_LIBRARY_PATH="$2}'`
%endif %endif
%{configure} \ %{configure} \
%{!?with_heartbeat: --without-heartbeat} \ %{!?with_heartbeat: --without-heartbeat} \
%{!?with_ais: --without-ais} \ %{!?with_corosync: --without-ais} \
%{!?with_esmtp: --without-esmtp} \ %{!?with_esmtp: --without-esmtp} \
%{!?with_snmp: --without-snmp} \ %{!?with_snmp: --without-snmp} \
%{?with_cman: --with-cman} \ %{?with_cman: --with-cman} \
%{?with_profiling: --with-profiling} \ %{?with_profiling: --with-profiling} \
%{?with_gcov: --with-gcov} \ %{?with_gcov: --with-gcov} \
%{?with_tracedata --with-tracedata} \ %{?with_tracedata: --with-tracedata} \
--with-version=%{version}-%{release} \ --with-initdir=%{_initrddir} \
--docdir=%{pcmk_docdir} \
--localstatedir=%{_var} \ --localstatedir=%{_var} \
--with-initdir=%{_initddir} \ --with-version=%{version}-%{release} \
--enable-fatal-warnings=no \ --enable-fatal-warnings=no
--disable-ansi
make %{_smp_mflags} make %{_smp_mflags}
@ -236,6 +254,7 @@ mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig
install -m 644 mcp/pacemaker.sysconfig ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/pacemaker install -m 644 mcp/pacemaker.sysconfig ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/pacemaker
# Scripts that should be executable # 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/CTSlab.py
chmod a+x %{buildroot}/%{_datadir}/pacemaker/tests/cts/extracttests.py chmod a+x %{buildroot}/%{_datadir}/pacemaker/tests/cts/extracttests.py
@ -245,15 +264,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 '*.rng' -type f -print0 | xargs -0 chmod a-x
find %{buildroot} -name '*.dtd' -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 '*.a' -type f -print0 | xargs -0 rm -f
find %{buildroot} -name '*.la' -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/hb2openais-helper.*
rm -f %{buildroot}/%{_libdir}/heartbeat/crm_primitive.* rm -f %{buildroot}/%{_libdir}/heartbeat/crm_primitive.*
rm -f %{buildroot}/%{_libdir}/heartbeat/atest
rm -f %{buildroot}/%{_libdir}/service_crm.so 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 %clean
rm -rf %{buildroot} rm -rf %{buildroot}
@ -263,14 +292,18 @@ rm -rf %{buildroot}
%preun %preun
if [ $1 -eq 0 ]; then if [ $1 -eq 0 ]; then
/sbin/service pacemaker stop &>/dev/null || : /sbin/service pacemaker stop &>/dev/null || :
/sbin/chkconfig --del pacemaker || : /sbin/chkconfig --del pacemaker || :
fi fi
%post -n %{name}-libs -p /sbin/ldconfig %post -n %{name}-libs -p /sbin/ldconfig
%postun -n %{name}-libs -p /sbin/ldconfig %postun -n %{name}-libs -p /sbin/ldconfig
%post -n %{name}-cluster-libs -p /sbin/ldconfig
%postun -n %{name}-cluster-libs -p /sbin/ldconfig
%files %files
########################################################### ###########################################################
%defattr(-,root,root) %defattr(-,root,root)
@ -278,8 +311,9 @@ fi
%exclude %{_datadir}/pacemaker/tests %exclude %{_datadir}/pacemaker/tests
%config(noreplace) %{_sysconfdir}/sysconfig/pacemaker %config(noreplace) %{_sysconfdir}/sysconfig/pacemaker
%{_initddir}/pacemaker
%{_sbindir}/pacemakerd %{_sbindir}/pacemakerd
%{_initrddir}/pacemaker
%if %{defined _unitdir} %if %{defined _unitdir}
%{_unitdir}/pacemaker.service %{_unitdir}/pacemaker.service
%endif %endif
@ -287,14 +321,19 @@ fi
%{_datadir}/pacemaker %{_datadir}/pacemaker
%{_datadir}/snmp/mibs/PCMK-MIB.txt %{_datadir}/snmp/mibs/PCMK-MIB.txt
%{_libdir}/heartbeat/* %{_libdir}/heartbeat/*
%{_sbindir}/crm_attribute %{_sbindir}/crm_attribute
%{_sbindir}/crm_master %{_sbindir}/crm_master
%{_sbindir}/crm_node
%{_sbindir}/attrd_updater %{_sbindir}/attrd_updater
%{_sbindir}/fence_legacy %{_sbindir}/fence_legacy
%{_sbindir}/stonith_admin %{_sbindir}/stonith_admin
# Packaged elsewhere %if %{with heartbeat}
%exclude %{_datadir}/pacemaker/tests %{_sbindir}/crm_uuid
%else
%exclude %{_sbindir}/crm_uuid
%endif
%doc COPYING %doc COPYING
%doc AUTHORS %doc AUTHORS
@ -302,11 +341,11 @@ fi
%dir %attr (750, %{uname}, %{gname}) %{_var}/lib/heartbeat/crm %dir %attr (750, %{uname}, %{gname}) %{_var}/lib/heartbeat/crm
%dir %attr (750, %{uname}, %{gname}) %{_var}/lib/pengine %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
%dir /usr/lib/ocf/resource.d %dir /usr/lib/ocf/resource.d
/usr/lib/ocf/resource.d/pacemaker /usr/lib/ocf/resource.d/pacemaker
%if %{with ais} %if %{with corosync}
%{_libexecdir}/lcrso/pacemaker.lcrso %{_libexecdir}/lcrso/pacemaker.lcrso
%endif %endif
@ -325,7 +364,6 @@ fi
%{_sbindir}/ptest %{_sbindir}/ptest
%{_sbindir}/crm_shadow %{_sbindir}/crm_shadow
%{_sbindir}/cibpipe %{_sbindir}/cibpipe
%{_sbindir}/crm_node
%{_sbindir}/crm_simulate %{_sbindir}/crm_simulate
%{_sbindir}/crm_report %{_sbindir}/crm_report
%{_sbindir}/crm_ticket %{_sbindir}/crm_ticket
@ -335,12 +373,6 @@ fi
%doc %{_mandir}/man8/* %doc %{_mandir}/man8/*
%endif %endif
%if %{with heartbeat}
%{_sbindir}/crm_uuid
%else
%exclude %{_sbindir}/crm_uuid
%endif
%doc COPYING %doc COPYING
%doc AUTHORS %doc AUTHORS
%doc ChangeLog %doc ChangeLog
@ -349,11 +381,16 @@ fi
%defattr(-,root,root) %defattr(-,root,root)
%{_libdir}/libcib.so.* %{_libdir}/libcib.so.*
%{_libdir}/libcrmcommon.so.* %{_libdir}/libcrmcommon.so.*
%{_libdir}/libcrmcluster.so.*
%{_libdir}/libpe_status.so.* %{_libdir}/libpe_status.so.*
%{_libdir}/libpe_rules.so.* %{_libdir}/libpe_rules.so.*
%{_libdir}/libpengine.so.* %{_libdir}/libpengine.so.*
%{_libdir}/libtransitioner.so.* %{_libdir}/libtransitioner.so.*
%doc COPYING.LIB
%doc AUTHORS
%files -n %{name}-cluster-libs
%defattr(-,root,root)
%{_libdir}/libcrmcluster.so.*
%{_libdir}/libstonithd.so.* %{_libdir}/libstonithd.so.*
%doc COPYING.LIB %doc COPYING.LIB
%doc AUTHORS %doc AUTHORS
@ -375,11 +412,20 @@ fi
%{_datadir}/pacemaker/tests %{_datadir}/pacemaker/tests
%{_includedir}/pacemaker %{_includedir}/pacemaker
%{_libdir}/*.so %{_libdir}/*.so
%if %{with gcov}
%{_var}/lib/pacemaker
%endif
%{_libdir}/pkgconfig/*.pc %{_libdir}/pkgconfig/*.pc
%doc COPYING.LIB %doc COPYING.LIB
%doc AUTHORS %doc AUTHORS
%changelog %changelog
* Mon Sep 26 2011 Andrew Beekhof <andrew@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@beekhof.net> 1.1.6-1 * Thu Sep 07 2011 Andrew Beekhof <andrew@beekhof.net> 1.1.6-1
- Upstream release of 1.1.6 - Upstream release of 1.1.6
- See included ChangeLog file or http://hg.clusterlabs.org/pacemaker/1.1/file/tip/ChangeLog for details - See included ChangeLog file or http://hg.clusterlabs.org/pacemaker/1.1/file/tip/ChangeLog for details