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 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 upstream_version Pacemaker-1.1.6
%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
%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
%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
@ -52,45 +57,53 @@ 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}-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))
%endif
# 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: 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 esmtp}
BuildRequires: libesmtp-devel
%endif
%if %{with snmp}
BuildRequires: net-snmp-devel >= 5.4
Requires: net-snmp >= 5.4
%endif
%if %{with ais}
BuildRequires: corosynclib-devel
%ifarch alpha %{ix86} x86_64
BuildRequires: lm_sensors-devel
%endif
%if %{with cman}
BuildRequires: clusterlib-devel
%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}
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}
@ -105,7 +118,7 @@ BuildRequires: publican inkscape
%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,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
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
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
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+
@ -153,7 +175,8 @@ Summary: Pacemaker development package
Group: Development/Libraries
Requires: %{name}-libs = %{version}-%{release}
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
%endif
%if %{with heartbeat}
@ -161,17 +184,12 @@ 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+
@ -191,17 +209,19 @@ Group: Documentation
Documentation for Pacemaker.
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
%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,21 +230,19 @@ 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} \
%{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-initdir=%{_initddir} \
--enable-fatal-warnings=no \
--disable-ansi
--with-version=%{version}-%{release} \
--enable-fatal-warnings=no
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
# 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 +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 '*.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}
@ -263,14 +292,18 @@ rm -rf %{buildroot}
%preun
if [ $1 -eq 0 ]; then
/sbin/service pacemaker stop &>/dev/null || :
/sbin/chkconfig --del pacemaker || :
/sbin/service pacemaker stop &>/dev/null || :
/sbin/chkconfig --del pacemaker || :
fi
%post -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
###########################################################
%defattr(-,root,root)
@ -278,8 +311,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 +321,19 @@ 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}/stonith_admin
# Packaged elsewhere
%exclude %{_datadir}/pacemaker/tests
%if %{with heartbeat}
%{_sbindir}/crm_uuid
%else
%exclude %{_sbindir}/crm_uuid
%endif
%doc COPYING
%doc AUTHORS
@ -302,11 +341,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,7 +364,6 @@ fi
%{_sbindir}/ptest
%{_sbindir}/crm_shadow
%{_sbindir}/cibpipe
%{_sbindir}/crm_node
%{_sbindir}/crm_simulate
%{_sbindir}/crm_report
%{_sbindir}/crm_ticket
@ -335,12 +373,6 @@ fi
%doc %{_mandir}/man8/*
%endif
%if %{with heartbeat}
%{_sbindir}/crm_uuid
%else
%exclude %{_sbindir}/crm_uuid
%endif
%doc COPYING
%doc AUTHORS
%doc ChangeLog
@ -349,11 +381,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 +412,20 @@ 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@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
- Upstream release of 1.1.6
- See included ChangeLog file or http://hg.clusterlabs.org/pacemaker/1.1/file/tip/ChangeLog for details