File openais.spec of Package openais

#
# spec file for package openais (Version 0.80.3)
#
# Copyright (c) 2009 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 ais_uid         39
%define ais_user	ais
%if 0%{?fedora_version}
%define pkg_group System Environment/Base
%else
%define pkg_group Productivity/Clustering/HA
%endif

Name:           openais
Summary:        The OpenAIS Standards-Based Cluster Framework executive and APIs
Version:        0.80.3
Release:        25
License:        BSD 3-clause (or similar)
Group:          Productivity/Clustering/HA
Url:            http://www.openais.org/
Source:         openais.tar.gz
Patch1:         suse.diff
Patch2:         openais-init.diff
Patch3:         openais-else.diff
Patch4:         openais-dprintf.diff
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
Requires(pre):   /usr/sbin/useradd
Requires(post):  /sbin/chkconfig
Requires(preun): /sbin/chkconfig

%description 
This package contains the openais executive, openais service handlers,
default configuration files and init script.



Authors:
--------
    Steven Dake
    Mark Haverkamp
    Muni Bajpai
    Daniel McNiel
    Miyotaka Sakai
    Daniel Stodden
    Kristen Smith
    Patrick Caulfield
    Fabien Thomas
    Hans Feldt
    Lars Holm
    Anders Eriksson
    Renaud Metrich
    Frederic Hermann
    Alejandro Lopez
    David Teigland
    Robert Peterson
    Abhijith Das

%package -n libopenais2
License:        BSD 3-clause (or similar)
Summary:        The OpenAIS Standards-Based Cluster Framework executive and APIs
Group:          Productivity/Clustering/HA

%description -n libopenais2
This package contains the openais executive, openais service handlers,
default configuration files and init script.



Authors:
--------
    Steven Dake
    Mark Haverkamp
    Muni Bajpai
    Daniel McNiel
    Miyotaka Sakai
    Daniel Stodden
    Kristen Smith
    Patrick Caulfield
    Fabien Thomas
    Hans Feldt
    Lars Holm
    Anders Eriksson
    Renaud Metrich
    Frederic Hermann
    Alejandro Lopez
    David Teigland
    Robert Peterson
    Abhijith Das

%package -n libopenais-devel
License:        BSD 3-clause (or similar)
Summary:        The openais Standards-Based Cluster Framework libraries
Group:          Development/Libraries/C and C++
Requires:       %{name} = %{version}-%{release}
Requires:       libopenais2 = %{version}-%{release}

%description -n libopenais-devel
This package contains the libraries and include files used to develop
using openais APIs.



Authors:
--------
    Steven Dake
    Mark Haverkamp
    Muni Bajpai
    Daniel McNiel
    Miyotaka Sakai
    Daniel Stodden
    Kristen Smith
    Patrick Caulfield
    Fabien Thomas
    Hans Feldt
    Lars Holm
    Anders Eriksson
    Renaud Metrich
    Frederic Hermann
    Alejandro Lopez
    David Teigland
    Robert Peterson
    Abhijith Das

%prep
%setup -n openais
%patch1 -p1
%patch2 -p1
%patch3
%patch4

%build
# This package failed when testing with -Wl,-as-needed being default.
# So we disable it here, if you want to retest, just delete this comment and the line below.
export SUSE_ASNEEDED=0
# -O3 required for performance reasons
# So we get proper debug output, for now we don't compile with O3
#CFLAGS="$(echo '%{optflags}' | sed -e 's/-O[0-9]*//') -O3"
#CFLAGS="$(echo '%{optflags}')"
make CFLAGS="$RPM_OPT_FLAGS" LCRSODIR=%{_libexecdir}/lcrso PREFIX=%{_prefix} OPENAIS_BUILD=DEBUG

%install
rm -rf $RPM_BUILD_ROOT
make DESTDIR=$RPM_BUILD_ROOT PREFIX=%{_prefix} LCRSODIR=%{_libexecdir}/lcrso STATICLIBS=NO OPENAIS_BUILD=DEBUG install
mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
mkdir -p $RPM_BUILD_ROOT%{_initrddir}
install -m 644 CHANGELOG LICENSE SECURITY README.devmap README.amf \
	$RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/
install -m 755 init/generic $RPM_BUILD_ROOT%{_initrddir}/openais
install -m 755 test/openais-cfgtool $RPM_BUILD_ROOT%{_sbindir}
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
%if 0%{?suse_version}
ln -sf ../../etc/init.d/openais $RPM_BUILD_ROOT/%{_sbindir}/rcopenais
%endif

%clean
rm -rf $RPM_BUILD_ROOT

%pre
%if 0%{?fedora_version}
/usr/sbin/fedora-useradd %{ais_uid} -r -s /sbin/nologin -d '/' -M \
        -c 'openais Standards Based Cluster Framework' %{ais_user} &>/dev/null || :
%else
if
  getent passwd %{ais_user} >/dev/null
then
  : OK hacluster user already present
else
  /usr/sbin/useradd -c "openais Standards Based Cluster Framework" \
      -r -d '/' -u %{ais_uid} %{ais_user} 2>/dev/null || :
fi
%endif

%post
%if 0%{?suse_version}
  %{fillup_and_insserv -n openais}
%else
  /sbin/chkconfig --add openais || :
%endif

%preun
%if 0%{?suse_version}
  %stop_on_removal openais
%else
if [ $1 -eq 0 ]; then
  %{_initrddir}/openais stop &>/dev/null || :
fi
%endif
/sbin/chkconfig --del openais || :

%postun
%if 0%{?suse_version}
  %restart_on_update openais
  %{insserv_cleanup}
%else
[ "$1" -ge "1" ] && %{_initrddir}/openais condrestart &>/dev/null || :
%endif

%post -n libopenais2 -p /sbin/ldconfig

%postun -n libopenais2 -p /sbin/ldconfig

%files 
%defattr(-,root,root,-)
%dir %{_docdir}/%{name}-%{version}
%doc %{_docdir}/%{name}-%{version}/LICENSE
%doc %{_docdir}/%{name}-%{version}/SECURITY
%doc %{_docdir}/%{name}-%{version}/README.amf
%{_sbindir}/aisexec
%{_sbindir}/ais-keygen
%{_sbindir}/openais-cfgtool
%dir /etc/ais
%config(noreplace) /etc/ais/openais.conf
%config(noreplace) /etc/ais/amf.conf
%config /etc/ld.so.conf.d/openais-*.conf
%{_initrddir}/openais
%if 0%{?suse_version}
%{_sbindir}/rcopenais
%endif
%dir %{_libexecdir}/lcrso
%{_libexecdir}/lcrso/*.lcrso
%{_mandir}/man8/*.8*
%{_mandir}/man5/openais.conf.5*

%files -n libopenais2
%defattr(-,root,root,-)
%dir %{_libdir}/openais
%{_libdir}/openais/lib*.so.*

%files -n libopenais-devel
%defattr(-,root,root,-)
%dir %{_docdir}/%{name}-%{version}
%doc %{_docdir}/%{name}-%{version}/CHANGELOG
%doc %{_docdir}/%{name}-%{version}/README.devmap
%dir %{_includedir}/openais/
%dir %{_includedir}/openais/lcr/
%dir %{_includedir}/openais/totem/
%dir %{_includedir}/openais/service
%{_libdir}/openais/lib*.so
%{_includedir}/openais/*.h
%{_includedir}/openais/lcr/*.h
%{_includedir}/openais/totem/*.h
%{_includedir}/openais/service/*.h
%{_mandir}/man3/cpg_*.3*
%{_mandir}/man3/evs_*.3*

%changelog
* Fri Jun 19 2009 coolo@novell.com
- disable as-needed for this package as it fails to build with it
* Tue Jun 09 2009 ro@suse.de
- fix build with gcc-4.4 (#elif -> #else)
- renamed dprintf to my_dprintf to avoid collision with function
  from glibc
* Thu Mar 19 2009 lmb@suse.de
- aisexec tried logging to stderr which was closed, causing sporadic
  start failures on fast nodes (bnc#486613).
- Change default timings for openais.conf to stabilize membership
  (bnc#486147).
* Mon Mar 16 2009 lmb@suse.de
- bug-483878_ipcs-destroy-take4.patch: removed, is upstream.
* Mon Mar 16 2009 abeekhof@suse.de
- Removed the following patches that are now upstream
  - openais-whitetank-ckpt-list-init.patch
  - openais-whitetank-ipc-fix-race-take2.patch
  - whitetank-cpg-empty-list-del.patch
  - openais-whitetank-cpg-refcount-add.patch
- Update source tarball to r1733
  + changes structure of ipc system to allow reference counting in
  lib_init_fn and lib_exit_fn for services (cpg) which record the
  conn_info data  structure there
  + change totempg interface to allow for reserve and release instead of send_ok primative
  + Remove reserved count from totempg_mcast operations
  + Delete process info from list parsing if ipc connection dies
  + The ckpt service with new versions of openais would segfault with older
  + CPGs with large node IDS greater then 0xffffff would not synchronize
  + Prevent logging deadlocks due to fork() in service engines.
  + Patch to fix refcounting problem for checkpoints from leaving nodes.
  + Remove pass by value in the ckpt service.
  + Serialize ipc access so only one thread accesses a service engine at a
* Mon Mar 09 2009 abeekhof@suse.de
- HAE11 RC6
- Remove patch to MAX_INTERFACES since the use of multiple links
  does not appear to be ready yet.
* Mon Mar 02 2009 abeekhof@suse.de
- Bug bnc#480352 - Services unavailable during aisexec shutdown cause ocfs2 to hang
  Ensure the Pacemaker plugin is unloaded before all other cluster services
- Bug bnc#472402 - Reduce default cluster timeouts by one third
* Fri Feb 27 2009 abeekhof@suse.de
- Remove racey SIGABRT handler
* Thu Feb 26 2009 lmb@suse.de
- Improved fix for bnc#479019 merged.
- Fix openais-cfgtool (bnc#479048) (temporarily disabled)
* Wed Feb 25 2009 abeekhof@suse.de
- All patches required for Pacemaker support are now upstream
- Drop changes to shared library versions to avoid being out-of-sync with upstream
- Update source tarball to r1733
  + Make openais-cfgtool work properly (as well as rest of cfg services).
  + Remove extra printf from totemrrp ring reenable operation.
  + Add loading of modules support to openais whitetank.
  + Bounds checking of the messages in the IPC system with core dump
* Tue Feb 24 2009 lmb@suse.de
- openais-479019-ptf.diff: possible fix for a crash during shutdown of
  aisexec (bnc#479019).
* Mon Feb 23 2009 abeekhof@suse.de
- Increase the number of allowed interfaces to 4
  This makes openais wire-incompatible with any non-SLES11 installations
* Wed Feb 18 2009 abeekhof@suse.de
- Update source tarball to r1714
  + Almost all custom patches are now upstream
  + Includes final IPC redesign
* Mon Feb 16 2009 abeekhof@suse.de
- BNC#475620 - openais crash in clm_confchg_fn
* Thu Feb 12 2009 abeekhof@suse.de
- Update patch level
  + BNC#473901 - Do bounds checking to prevent crash in IPC code
  + BNC#468066 - Updated to upstream IPC patch r24
- Update source tarball to r1697
  + Avoid totem overflow in send_ok when the totempg header is larger than the header
  the user provided in the incoming message.
  + BNC#470118 - Execute a list_init for the expiry entry on the creation of a checkpoint
  + BNC#470118 - Execute a proper list_del operation when unlinking a checkpoint so it is
  not later double freed during an expiry.
* Mon Feb 09 2009 abeekhof@suse.de
- Update patch level to 4074e97c6f8e
  + Fix for BNC#470118 - Crash in expiry list handling of openAIS ckpt service
  + Updated IPC subsystem for BNC#468066
  + Increase the library version numbers for the IPC changes
- Update source tarball to r1682
  + Fix secauth to work properly on platforms which evaluate unsigned long to 8 bytes (s390x).
  + Ensure high bit is masked properly.
* Mon Jan 26 2009 abeekhof@suse.de
- Update patch level to c2135f386cd4
  + Turn on logd support in the example config
  + Remove all the optional parts of the patch that allows Pacemaker to function
- Update source tarball to r1680
  + Patch to fix segfault when user with inappropriate permissions accesses
  + Cancel token hold mode when a totem token callback is added to the system.
  + Finish poll_stop function
  + Fix message rejection problem with many services.
  + Throw away incomplete message on startup to avoid segfault.
  + Fix regression in open async of the event service.
* Wed Jan 21 2009 lmb@suse.de
- Fix SBD support in openais init script.
- Fix openais init script dependencies.
* Fri Dec 05 2008 abeekhof@suse.de
- Bug bnc#450323 - The use_mgmtd option should default to true in openais.conf
* Fri Nov 21 2008 abeekhof@suse.de
- Update patch level to aae387a6e5fd
- Fix Bug bnc#444376 - openais segafults in lcr_ifact_release during shutdown
  + Prevent corruption at shutdown by fixing plugin loading at startup
  + Extend the objdb API to allow search cursors to be saved and restored
  + Simplify startup since load order doesn't affect shutdown order
  + Don't create (duplicate) objdb entries for additional services
  + Wrap the openais_service_link_and_init() call with the new objdb
  api calls for saving and restoring search cursors
  Allows services to make use of the objdb passed to them
* Wed Nov 19 2008 abeekhof@suse.de
- Update patch level to 26c4af74cac1
  + Fix nodeid generation to use the node's full ip address (not network address) to ensure uniqueness
  + Start additional services after the default ones
  + Correctly compare addresses with bindnetaddr
* Tue Nov 11 2008 abeekhof@suse.de
- Update source tarball to r1661
  - Fix rare problem where checkpoint synchronization database could be thrown away.
  - Fix commit token recieved_flg being incorrect in some rare circumstances
  which caused message corruption.
  - Fix a message lost during delivery which resulted in checkpoint segfault
* Thu Oct 09 2008 abeekhof@suse.de
- Update source tarball to r1655
  - Remove IPC scheduling starvation
  - Fix Library queue full messages in some conditions
  - Make sanitizing generated nodeid's optional
* Mon Sep 15 2008 abeekhof@suse.de
- Create a libopenais2 subpackage as per policy
* Thu Sep 11 2008 abeekhof@suse.de
- Update source tarball to r1649
  - Add backports of objdb and service shutdown patches
  - Modify the nodeid generation function to never return a negative value
  - Include changes as a diff against upstream tarball
* Wed Aug 20 2008 abeekhof@suse.de
- Ensure generated nodeid's are always positive integers
* Mon Jul 21 2008 abeekhof@suse.de
- Switch to the stable series of OpenAIS (Whitetank 0.80) which
  behaves significantly better for clusters larger than 4 nodes
- Upstream version is 0.80.3 (SVN 1551)
- Tarball includes 8 patches backported from the development series
  that are required to support Pacemaker.  Patch summary:
  - a generic init-script
  - Fix DESTDIR, PREFIX and LCRSODIR
  - Repair loading of external services
  - Add some new calls into objdb
  - Patch to remove segfault on the exiting of a service.
  - Patch to allow controlled exit of a service.
  - load and unload service engines at runtime
* Sun Jun 29 2008 abeekhof@suse.de
- Enable encryption
* Sat May 03 2008 abeekhof@suse.de
- Set a libexedir that makes sense on 64-bit archs
* Tue Apr 22 2008 abeekhof@suse.de
- Fix build for new glibc
* Wed Apr 16 2008 abeekhof@suse.de
- Disable crypto-related code to prevent issues with US export restrictions
  Will be re-enabled for 11.1 once proper permits have been requested/granted
* Sat Apr 12 2008 abeekhof@suse.de
- Initial package check-in
- Upstream version: 0.82+ (SVN version: 1495)
- Two addtional patches for co-ordinated shutdown and loading of the pacemaker plugin
openSUSE Build Service is sponsored by