File pacemaker.spec of Package pacemaker

#
# spec file for package pacemaker (Version 1.0.1)
#
# Copyright (c) 2008 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

%if 0%{?suse_version}
%define _libexecdir %{_libdir}
%endif
%define with_extra_warnings   	0
%define with_debugging  	0
%define without_fatal_warnings 	1
%define with_ais_support        1
%define with_heartbeat_support  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.0.1
Release:        6
License:        GPL v2 or later; LGPL v2.1 or later
Url:            http://www.clusterlabs.org
Group:          Productivity/Clustering/HA
Source:         pacemaker.tar.gz
Source2:        %{doc_pkg}.tar.gz
Source100:      pacemaker.rpmlintrc
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
AutoReqProv:    on
Conflicts:      heartbeat < 2.99
Requires:       heartbeat-common
Requires:       libpacemaker3 = %{version}-%{release}
BuildRequires:  e2fsprogs-devel glib2-devel gnutls-devel libheartbeat-devel libxml2-devel libxslt-devel ncurses-devel pam-devel python-devel swig
%if %with_ais_support
BuildRequires:  libopenais-devel
Requires:       openais
%endif
%if %with_heartbeat_support
BuildRequires:  heartbeat-devel
Requires:       heartbeat
%endif
%if 0%{?suse_version}
%if 0%{?suse_version} == 930
BuildRequires:  rpm-devel
%endif
%if 0%{?suse_version} == 1000
BuildRequires:  lzo lzo-devel
%endif
%if 0%{?suse_version} > 1100
BuildRequires:  docbook-xsl-stylesheets
%endif
%if 0%{?suse_version} < 1020
BuildRequires:  tcpd-devel
%endif
%if 0%{?sles_version} == 9
BuildRequires:  openssl-devel pkgconfig
%endif
%endif
%if 0%{?rhel_version} == 406
BuildRequires:  gcc-c++ kernel
%endif
%if 0%{?fedora_version} || 0%{?centos_version} || 0%{?rhel_version}
BuildRequires:  openssl-devel which
%endif
%if 0%{?mandriva_version}
BuildRequires:  libbzip2-devel openssl-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 <abeekhof@suse.de>

%package -n libpacemaker3
License:        GPL v2 or later; LGPL v2.1 or later
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 <abeekhof@suse.de>

%package -n libpacemaker-devel 
License:        GPL v2 only; GPL v2 or later; LGPL v2.1 or later
Summary:        The Pacemaker scalable High-Availability cluster resource manager
Group:          Development/Libraries/C and C++
Requires:       %{name} = %{version}-%{release}
Requires:       libpacemaker3 = %{version}-%{release}
Requires:       libheartbeat-devel

%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 <abeekhof@suse.de>

%prep
###########################################################
%setup -a 2 -n pacemaker -q
###########################################################

%build
# TODO: revisit -all
CFLAGS="${CFLAGS} ${RPM_OPT_FLAGS}"
# Feature-dependent CFLAGS:
%if %with_extra_warnings
# CFLAGS="${CFLAGS} -Wshadow -Wfloat-equal -Waggregate-return -Wnested-externs -Wunreachable-code -Wendif-labels -Winline"
CFLAGS="${CFLAGS} -Wfloat-equal -Wendif-labels -Winline"
%endif
%if %with_debugging
CFLAGS="${CFLAGS} -O0"
%endif
# Distribution specific settings:
%if 0%{?suse_version} > 1001
CFLAGS="${CFLAGS} -fstack-protector-all"
%endif
%if 0%{?suse_version} < 1001
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/opt/gnome/%{_lib}/pkgconfig:/opt/gnome/share/pkgconfig"
%endif
%if 0%{?suse_version} > 1020
CFLAGS="$CFLAGS -fgnu89-inline"
%endif
%if 0%{?fedora_version} > 6
CFLAGS="$CFLAGS -fgnu89-inline"
%endif
export CFLAGS
./ConfigureMe configure --prefix=%{_prefix} --sysconfdir=%{_sysconfdir} \
	--localstatedir=%{_var} --infodir=%{_infodir} 		\
	--mandir=%{_mandir} --libdir=%{_libdir} 		\
	--libexecdir=%{_libexecdir} 				\
	--with-ais-prefix=%{_prefix}      			\
%if %without_fatal_warnings
	--enable-fatal-warnings=no 			        \
%endif
	--with-hapkgversion=%{version}
export MAKE="make %{?jobs:-j%jobs}"
make %{?jobs:-j%jobs}
if [ -e /usr/share/xml/docbook/stylesheet/nwalsh/current ]; then
    make -C %{doc_pkg} man
fi
###########################################################

%install
###########################################################
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
(
    cd $RPM_BUILD_ROOT/%{_sbindir}
    rm crm_standby crm_master crm_failcount
    ln crm_attribute crm_standby
    ln crm_attribute crm_master
    ln crm_attribute crm_failcount
)
#%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

%files
###########################################################
%defattr(-,root,root)
%dir %{_libdir}/heartbeat
%dir %{_var}/run/heartbeat
%dir %{_var}/lib/heartbeat
%{_datadir}/pacemaker
#%{_datadir}/heartbeat
%{_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_standby
%{_sbindir}/crm_uuid
%{_sbindir}/crm_verify
%{_sbindir}/crmadmin
%{_sbindir}/iso8601
%{_sbindir}/ccm_tool
%{_sbindir}/attrd_updater
%{_sbindir}/ptest
%{_sbindir}/crm_shadow
%{_sbindir}/cibpipe
%doc %{_mandir}/man8/*.8*
%dir %attr (750, %{uname}, %{gname}) %{_var}/lib/heartbeat/crm
%dir %attr (750, %{uname}, %{gname}) %{_var}/lib/heartbeat/pengine
%dir %attr (750, %{uname}, %{gname}) %{_var}/run/heartbeat/crm
%dir /usr/lib/ocf
%dir /usr/lib/ocf/resource.d
/usr/lib/ocf/resource.d/pacemaker
%if %with_ais_support
%{_libexecdir}/lcrso/pacemaker.lcrso
%endif

%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}
%{_includedir}/pacemaker
%{_includedir}/heartbeat/fencing
%{_libdir}/*.so

%changelog
* Fri Nov 21 2008 abeekhof@suse.de
- Update source tarball to revision: 27be064e0907
  + High: ais: Repair and streamline service load now that OpenAIS startup functions correctly
- Requires and is related to sr3936: Fix Bug bnc#444376 - openais segafults in lcr_ifact_release during shutdown
* Fri Nov 21 2008 abeekhof@suse.de
- Update source tarball to revision: 61d0af5c31c0
  + High: cib: Ensure configuration updates contain the correct values of admin_epoch
  Otherwise the configuration can not be kept in sync across the cluster
  + High: crmd: Bug LF:1962 - Don't NACK peers because they're not (yet) in our membership.  Just ignore them.
  + High: crmd: Prevent node re-probe loops by ensuring manditory actions always complete
  + High: PE: Bug LF:1996 - Correctly process disabled monitor operations
  + High: PE: Correctly calculate the number of available nodes for the clone to use
  + High: Tools: crm cli: catch system errors on file operations
  + High: Tools: crm cli: exit with an appropriate exit code
  + High: Tools: crm cli: new command: configure upgrade
  + High: Tools: crm cli: prevent key errors on missing cib attributes
  + High: Tools: crm cli: sometimes, on errors, level would change on single shot use
  + Medium: crmd: do_dc_join_filter_offer - Check the 'join' message is for the current instance before deciding to NACK peers
  + Medium: Tools: crm cli: replace inf with INFINITY
  + Medium: Tools: crm cli: supply provider only for ocf class primitives
* Tue Nov 18 2008 abeekhof@suse.de
- Add man pages for Pacemaker admin tools
- Update source tarball to revision: eda05459ce58
  + High: Core: Repair the ability to have comments in the configuration
  + High: Tools: hb2openais: update logging and set logfile appropriately
  + High: ais: Hook up the openais.conf config logging options
  + High: ais: Zero out the PID of disconnecting clients
  + High: cib: Ensure global updates cause a disk write when appropriate
  + High: crmd: Ensure PE processing does not occur for all error cases in do_pe_invoke_callback
  + High: crmd: Requests to the CIB should cause any prior PE calculations to be ignored
  + Medium: PE: Prevent lsb scripts from being used in globally unique clones
  + Medium: Tools: crm_mon - display the meaning of the operation's rc code instead of the status
  + Medium: ais: Hook up the options for specifying the expected number of nodes and total quorum votes
  + Medium: crmd: Fix the handling of unexpected PE exits to ensure the current CIB is stored
* Sat Nov 08 2008 abeekhof@suse.de
- Update source tarball to revision: e21021b77657
  + High: crmd: Erase the correct node's status section when it returns
* Fri Nov 07 2008 abeekhof@suse.de
- Update source tarball to revision: 7508f211e536
  + High: PE: Bug LF:1988 - Ensure recurring operations always have the correct target-rc set
  + High: PE: Fix optional colocation
  + High: PE: Improve up the detection of 'new' nodes joining the cluster
  + High: PE: Prevent assert failures in master_color() by ensuring unmanaged masters are always reallocated to their current location
  + High: Tools: crm_shadow - Show more line number information after validation failures
  + High: ais: Ensure HA_RSCTMP exists for use by resource agents
  + High: crmd: Bug:1975 - crmd should wait indefinitely for stonith operations to complete
  + Medium: PE: Bug N:437719 - Ensure scores from colocated resources count when allocating groups
  + Medium: Tools: Bug LF:1985 - crm_mon - Correctly process failed cib queries to allow reconnection after cluster restarts
  + Medium: Tools: Bug LF:1987 - crm_verify incorrectly warns of configuration upgrades for the most recent version
  + Medium: Tools: attrd - Automatically refresh all attributes after a CIB replace operation
  + Medium: Tools: crm (bnc#441028): check for key error in attributes management
  + Medium: crmd: Detect deleted resource operations automatically
  + Medium: crmd: Erase a node's resource operations and transient attributes after a successful STONITH
  + Medium: crmd: Fix the recording of pending operations in the CIB
  + Medium: xml: Relax the restriction on the contents of rsc_locaiton.node
* Mon Oct 27 2008 abeekhof@suse.de
- Update source tarball to revision: 9082ded546ec
  + High: Tools: LF:1969 - Attrd never sets any properties in the cib
  + Medium: Core: Provide better feedback if Pacemaker is started by a stack it doesn't support
  + Medium: Ensure meta attributes are used consistantly
  + Medium: PE: Allow group and clone level resource attributes
  + Medium: PE: Make a best-effort guess at a migration threshold for people with 0.6 configs
  + Medium: Tools: crm_mon - Fix the display of timing data
  + Medium: Tools: crm_verify - check that we're being asked to validate a complete config
* Tue Oct 14 2008 abeekhof@suse.de
- Add heartbeat-common as a runtime dependancy
  This ensures the clustering user/group is installed and directories
  iare created with the right permissions
* Mon Oct 13 2008 abeekhof@suse.de
- Add openais as a hard dependancy
* Thu Oct 09 2008 abeekhof@suse.de
- Update source tarball to revision: 9a6c6d1dd871 (1.0.0)
  + High: Core: Allow the expected number of quorum votes to be configrable
  + High: Tools: Make pingd functional on Linux
  + Medium: crmd: Avoid calling GHashTable functions with NULL
  + Medium: tools: crm_resource - return with non-zero when a resource migration command is invalid
  + Medium: tools: crm_shadow - Allow the admin to start with an empty CIB (and no cluster connection)
  + Medium: PE: Use the correct attribute for action 'requires' (was prereq)
* Sun Sep 28 2008 abeekhof@suse.de
- Update source tarball to revision: 8415675fe428
  + High: Core: Only call xmlCleanupParser() if we parsed anything.  Doing so unconditionally seems to cause a segfault
  + High: hb2openais.sh: improve pingd handling; several bugs fixed
  + High: hb2openais: fix clone creation; replace EVMS strings
  + High: stonithd: fix handling of timeouts
  + High: stonithd: fix logic for stonith resource priorities
  + High: stonithd: initialize value before reading fence-timeout
  + Medium: PE: Remove new options that are better set in rsc_defaults
  + Medium: PE: Detect clients that disconnect before receiving their reply
  + Medium: PE: ptest - check the input is valid before proceeding
  + Medium: crmd: Hook up the stonith-timeout option to stonithd
  + Medium: crmd: Prevent potential use-of-NULL in global_timer_callback
  + Medium: crmd: Rationalize the logging of graph aborts
  + Medium: xml: pacemaker-0.7 should be an alias for the 1.0 schema
* Mon Sep 15 2008 abeekhof@suse.de
- Create a libpacemaker subpackage
* Thu Sep 11 2008 abeekhof@suse.de
-  Update source tarball to revision: 2087f5b1a5a0
  + High: PE: Bug LF:1950 - Ensure the current values for all notification variables are always set (even if empty)
  + High: PE: Bug LF:1955 - Ensure unmanaged masters are unconditionally repromoted to ensure they are monitored correctly.
  + High: PE: Bug LF:1955 - Fix another case of filtering causing unmanaged master failures
  + High: PE: Bug LF:1955 - Umanaged mode prevents master resources from being allocated correctly
  + High: PE: Bug N:420538 - Anit-colocation caused a positive node preference
  + High: PE: Correctly handle unmanaged resources to prevent them from being started elsewhere
  + High: PE: crm_resource - Fix the --migrate command
  + High: ais: Move the service id definition to a common location and make sure it is always used
  + High: stonithd (LF 1951): fix remote stonith operations
  + Medium: Build: Make sure crm_config.h is only ever included once
  + Medium: PE: Bug LF:1950 - Notifications do not contain all documented resource state fields
  + Medium: PE: Bug N:417585 - Don't restart group children who's individual score drops below zero
  + Medium: PE: Implement a true maintenance mode
  + Medium: ais: Use the agreed service number
  + Medium: Tools: Implement a unified CLI shell
* Mon Sep 01 2008 abeekhof@suse.de
- Update source tarball to revision: 1df197982079
- Try again to fix compilation in STABLE (this time also tested with mbuild)
- STONITH is now enabled by default and the cluster will warn if no STONITH resource is found
* Sat Aug 30 2008 abeekhof@suse.de
- Update source tarball to revision: 902885c90d96
- Fixes build ordering ssue that prevented compilation of lib/common
* Wed Aug 20 2008 abeekhof@suse.de
- Update source tarball to revision: f567855328b7 (0.7.1)
  + Added features needed to support libdlm and ocfs2-tools
  + High: admin: Fix use-after-free in crm_mon
  + High: cib: Use single quotes so that the xpath queries for nvpairs will succeed
  + High: crmd: Always connect to stonithd when the TE starts and ensure we notice if it dies
  + High: crmd: Make sure async-failures cause the failcount to be incrimented
  + High: PE: Bug LF:1941 - Handle failed clone instance probes when clone-max < #nodes
  + High: PE: Prevent use-of-NULL - order->rsc_rh will not always be non-NULL
  + High: PE: Unpack colocation sets correctly
  + High: Tools: crm_mon - Prevent use-of-NULL for orphaned resources
  + Medium: Core: Get more details regarding parser errors
  + Medium: Core: Switch to the libxml2 parser - its significantly faster
  + Medium: PE: Allow groups to be involved in optional ordering constraints
  + Medium: PE: Allow sets of operations to be reused by multiple resources
  + Medium: PE: Bug LF:1941 - Mark extra clone instances as orphans and don't show inactive ones
  + Medium: PE: Determin the correct migration-threshold during resource expansion
  + Medium: PE: Implement no-quorum-policy=suicide (FATE #303619)
  + Lots of bug fixes
* Mon Jul 21 2008 abeekhof@suse.de
- Update source tarball to revision: 7a31d0c33e22 (0.7.0)
  + High: Performance enhancements
  + High: Fix memory leaks and use-after-free
  + High: Admin: All tools now use --node (-N) for specifying node unames
  + High: Admin: All tools now use --xml-file (-x) and --xml-text (-X) for specifying where to find XML blobs
  + High: cib: Implement CIB_shadow - a facility for making and testing changes before uploading them to the cluster
  + High: cib: Make registering per-op callbacks an API call and renamed (for clarity) the API call for requesting notifications
  + High: Core: Add a facility for automatically upgrading old configurations
  + High: Core: Adopt libxml2 as the XML processing library - all external clients need to be recompiled
  + High: PE: Bug LF:1459 - Allow failures to expire
  + High: PE: Replace failure-stickiness with a simple 'migration-threshold'
  + High: PE: Bug LF:1941 - Handle failed clone instance probes when clone-max < #nodes
  + High: PE: Make OCF_ERR_ARGS a node-level error rather than a cluster-level one
  + High: PE: Properly handle clones that are not installed on all nodes
  + Medium: Admin: Bug LF:1438 - Allow the list of all/active resource operations to be queried by crm_resource
  + Medium: Admin: Bug LF:1708 - crm_resource should print a warning if an attribute is already set as a meta attribute
  + Medium: Admin: Bug LF:1883 - crm_mon should display fail-count and operation history
  + Medium: Admin: Bug N:371785 - crm_resource -C doesn't also clean up fail-count attributes
  + Medium: Admin: crm_mon - include timing data for failed actions
  + Medium: cib: Bug LF:1348 - Allow rules and attribute sets to be referenced for use in other objects
  + Medium: cib: BUG LF:1918 - By default, all cib calls now timeout after 30s
  + Medium: cib: Remove some useless parts of the API
  + Medium: cib: Implement the ability for clients to connect to remote servers
  + Medium: Core: Add support for validating xml against RelaxNG schemas
  + Medium: PE: Bug LF:1328 - Don't fencing nodes in clusters without managed resources
  + Medium: PE: Bug LF:1461 - Give transient node attributes (in <status/>) preference over persistent ones (in <nodes/>)
  + Medium: PE: Bug LF:1884, Bug LF:1885 - Implement N:M ordering and colocation constraints
  + Medium: PE: Bug LF:1886 - Create a resource and operation 'defaults' config section
  + Medium: PE: Bug LF:1892 - Allow recurring actions to be triggered at known times
  + Medium: PE: Bug LF:1926 - Probes should complete before stop actions are invoked
  + Medium: PE: Prefer the current location if it is one of a group of nodes with the same (highest) score
* Sat May 03 2008 abeekhof@suse.de
- Use a libexecdir consistent with openais
* Tue Apr 29 2008 abeekhof@suse.de
- Updated to upstream version 0.6.3-1
- Update source tarball to revision: fd8904c9bc67
- SNMP has been moved to the management/pygui project
- Many bugfixes, primarily related to master/slave resources and failcount handling
- Fix libtool version check and supply a better default for the LCRSO directory
* Sat Apr 12 2008 abeekhof@suse.de
- version 0.6.2-1
- Initial package check-in
openSUSE Build Service is sponsored by