From f007d73c77b067f1c9109559832542de21223a59 Mon Sep 17 00:00:00 2001 From: Andrew Beekhof Date: Mon, 26 Sep 2011 13:38:06 +1000 Subject: [PATCH] Re-sync with the upstream spec file --- pacemaker.spec | 262 +++++++++++++++++++++++++++++-------------------- 1 file changed, 154 insertions(+), 108 deletions(-) diff --git a/pacemaker.spec b/pacemaker.spec index 4126015..701d3bc 100644 --- a/pacemaker.spec +++ b/pacemaker.spec @@ -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 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 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