File boost.spec of Package boost

#
# spec file for package boost (Version 1.36.0)
#
# 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

%ifarch s390 s390x ia64
%define build_mpi 0
%else
%define build_mpi 1
%endif
%define most_libs libboost_date_time1_36_0 libboost_filesystem1_36_0 libboost_graph1_36_0 libboost_iostreams1_36_0 libboost_math1_36_0 libboost_test1_36_0 libboost_program_options1_36_0 libboost_python1_36_0 libboost_serialization1_36_0 libboost_signals1_36_0 libboost_system1_36_0 libboost_thread1_36_0 libboost_wave1_36_0 libboost_regex1_36_0
%if %build_mpi
%define all_libs %{most_libs} libboost_mpi1_36_0
%else
%define all_libs %{most_libs}
%endif
%define debug_package_requires %{all_libs}

Name:           boost
BuildRequires:  boost-jam >= 3.1.16 dos2unix gcc-c++ libbz2-devel libicu-devel python-devel xorg-x11-devel
BuildRequires:  libexpat-devel
%if %build_mpi
BuildRequires:  openmpi-devel
%endif
%if 0%suse_version > 1020
BuildRequires:  fdupes
%endif
Url:            http://www.boost.org
License:        BSD 3-Clause
Group:          Development/Libraries/C and C++
Summary:        Boost C++ Libraries
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
Version:        1.36.0
Release:        9
Source0:        %{name}_1_36_0.tar.bz2
Source1:        boost-rpmlintrc
Source2:        boost_1_33_1_man.tar.bz2
Source3:        existing_extra_docs
Source5:        mkspec.sh
Source6:        boost.spec.in
Source7:        Makefile
Source8:        pre_checkin.sh
Patch0:         boost-threading.patch
Patch1:         boost-thread.patch
Patch2:         boost-no_type_punning.patch
Patch4:         boost-visit_each.diff
Patch5:         boost-pass_BJAM_CONFIG.patch
Patch6:         boost-use_rpm_optflags.patch
Patch8:         boost-no_segfault_in_Regex_filter.patch
Patch9:         boost-ppc-asm.patch
Patch18:        boost-sigcld_handling.patch
Patch19:        boost-sane_versioning.patch
Patch20:        boost-strict_aliasing.patch
Patch21:        boost-default_extension.patch
Recommends:     %{all_libs}

%description
Boost provides free peer-reviewed portable C++ source libraries. The
emphasis is on libraries that work well with the C++ Standard Library.
One goal is to establish "existing practice" and provide reference
implementations so that the Boost libraries are suitable for eventual
standardization. Some of the libraries have already been proposed for
inclusion in the C++ Standards Committee's upcoming C++ Standard
Library Technical Report.

Although Boost was begun by members of the C++ Standards Committee
Library Working Group, membership has expanded to include nearly two
thousand members of the C++ community at large.

This package is mainly needed for updating from a prior version, the
dynamic libraries are found in their respective package. For
development using Boost, you also need the boost-devel package. For
documentation, see the boost-doc package.



%package        devel
License:        BSD 3-Clause
Summary:        Development package for Boost C++
Group:          Development/Libraries/C and C++
Requires:       %{all_libs}
Requires:       %{name}-license = %{version}
AutoReqProv:    on

%description devel
This package contains all that is needed to develop/compile
applications that use the Boost C++ libraries. For documentation see
the package boost-doc.



%package        license
License:        BSD 3-Clause
Summary:        Boost License
Group:          Development/Libraries/C and C++
AutoReqProv:    on

%description    license
This package contains the license boost is provided under.



%package        doc
License:        BSD 3-Clause
Summary:        Documentation for the Boost C++ Libraries
Group:          Development/Libraries/C and C++
Requires:       %{name}-license = %{version}
AutoReqProv:    on

%description doc
This package contains documentation about the boost dynamic libraries.



%package        -n libboost_date_time1_36_0
License:        BSD 3-Clause
Summary:        Boost::Date.Time Runtime libraries
Group:          System/Libraries
Requires:       %{name}-license = %{version}
AutoReqProv:    on

%description    -n libboost_date_time1_36_0
This package contains the Boost Date.Time runtime libraries.



%package        -n libboost_filesystem1_36_0
License:        BSD 3-Clause
Summary:        Boost::Filesystem Runtime Libraries
Group:          System/Localization
Requires:       %{name}-license = %{version}
AutoReqProv:    on

%description    -n libboost_filesystem1_36_0
This package contains the Boost::Filesystem libraries.



%package        -n libboost_graph1_36_0
License:        BSD 3-Clause
Summary:        Boost::Graph Runtime Libraries
Group:          System/Libraries
Requires:       %{name}-license = %{version}
AutoReqProv:    on

%description    -n libboost_graph1_36_0
This package contains the Boost::Graph Runtime libraries.



%package        -n libboost_iostreams1_36_0
License:        BSD 3-Clause
Summary:        Boost::IOStreams Runtime Libraries
Group:          System/Libraries
Requires:       %{name}-license = %{version}
AutoReqProv:    on

%description    -n libboost_iostreams1_36_0
This package contains the Boost::IOStreams Runtime libraries.



%package        -n libboost_math1_36_0
License:        BSD 3-Clause
Summary:        Boost::Math Runtime Libraries
Group:          System/Libraries
Requires:       %{name}-license = %{version}
AutoReqProv:    on

%description    -n libboost_math1_36_0
This package contains the Boost::Math Runtime libraries.



%if %build_mpi

%package        -n libboost_mpi1_36_0
License:        BSD 3-Clause
Summary:        Boost::MPI Runtime libraries
Group:          System/Libraries
Requires:       %{name}-license = %{version}
AutoReqProv:    on

%description    -n libboost_mpi1_36_0
This package contains the Boost::MPI Runtime libraries.



%endif

%package        -n libboost_test1_36_0
License:        BSD 3-Clause
Summary:        Boost::Test Runtime Libraries
Group:          System/Libraries
Requires:       %{name}-license = %{version}
AutoReqProv:    on

%description    -n libboost_test1_36_0
This package contains the Boost::Test runtime libraries.



%package        -n libboost_program_options1_36_0
License:        BSD 3-Clause
Summary:        Boost::ProgramOptions Runtime libraries
Group:          System/Libraries
Requires:       %{name}-license = %{version}
AutoReqProv:    on

%description    -n libboost_program_options1_36_0
This package contains the Boost::ProgramOptions Runtime libraries.



%package        -n libboost_python1_36_0
License:        BSD 3-Clause
Summary:        Boost::Python Runtime Libraries
Group:          System/Libraries
Requires:       %{name}-license = %{version}
AutoReqProv:    on

%description    -n libboost_python1_36_0
This package contains the Boost::Python Runtime libraries.



%package        -n libboost_serialization1_36_0
License:        BSD 3-Clause
Summary:        Boost::Serialization Runtime Libraries
Group:          System/Libraries
Requires:       %{name}-license = %{version}
AutoReqProv:    on

%description    -n libboost_serialization1_36_0
This package contains the Boost::Serialization Runtime libraries.



%package        -n libboost_signals1_36_0
License:        BSD 3-Clause
Summary:        Boost::Signals Runtime Libraries
Group:          System/Libraries
Requires:       %{name}-license = %{version}
AutoReqProv:    on

%description    -n libboost_signals1_36_0
This package contains the Boost::Signals Runtime libraries.



%package        -n libboost_system1_36_0
License:        BSD 3-Clause
Summary:        Boost::System Runtime Libraries
Group:          System/Libraries
Requires:       %{name}-license = %{version}
AutoReqProv:    on

%description    -n libboost_system1_36_0
This package contains the Boost::System runtime libraries.



%package        -n libboost_thread1_36_0
License:        BSD 3-Clause
Summary:        Boost::Thread Runtime Libraries
Group:          System/Libraries
Requires:       %{name}-license = %{version}
AutoReqProv:    on

%description    -n libboost_thread1_36_0
This package contains the Boost::Thread runtime libraries.



%package        -n libboost_wave1_36_0
License:        BSD 3-Clause
Summary:        Boost::Wave Runtime Libraries
Group:          System/Libraries
Requires:       %{name}-license = %{version}
AutoReqProv:    on

%description    -n libboost_wave1_36_0
This package contains the Boost::Wave runtime libraries.



%package        -n libboost_regex1_36_0
License:        BSD 3-Clause
Summary:        The Boost::Regex runtime library
Group:          System/Libraries
Requires:       %{name}-license = %{version}
AutoReqProv:    on

%description    -n libboost_regex1_36_0
This package contains the Boost::Regex runtime library.



%prep
%setup -q -n %{name}_1_36_0 -a 2
find -name .cvsignore -exec rm -f {} +
#everything in the tarball has the executable flag set ......
find -type f ! \( -name \*.sh -o -name \*.py -o -name \*.pl \) -exec chmod -x {} +
%patch
%patch1
%patch2
%patch4
%patch5
%patch6
%patch8
%patch9
%patch18
%patch19
%patch20
%patch21
chmod +x configure
#stupid build machinery copies .orig files
find . -name \*.orig -exec rm {} +

%build
find . -type f -exec chmod u+w {} +
# Now build it
J_P=%{jobs}
J_G=$(getconf _NPROCESSORS_CONF)
if test -z "$JOBS"; then
  JOBS=$J_G
else
  test 1 -gt "$JOBS" && JOBS=1
fi
if test "$JOBS" == "0"; then
  JOBS=1
fi
# In case you want more parallel jobs then autobuild grants you
#if [ $J_P -gt $J_I ]; then
#  JOBS=$J_G
#fi
BJAM_CONFIG="-d2 -j$JOBS -sICU_PATH=%{_prefix}"
PYTHON_VERSION=$(python -c 'import sys; print sys.version[:3]')
PYTHON_FLAGS="--with-python-root=/usr --with-python-version=$PYTHON_VERSION"
REGEX_FLAGS="--with-icu"
export EXPAT_INCLUDE=/usr/include EXPAT_LIBPATH=%{_libdir} REGEX_FLAGS="--with-icu"
export PYTHON_FLAGS
cat << EOF >user-config.jam
# Boost.Build Configuration
# Compiler configuration
using gcc ;
# Python configuration
using python : ${PYTHON_VERSION} : %{_prefix} ;
using mpi ;
EOF
# Set PATH, MANPATH and LD_LIBRARY_PATH
%if %build_mpi
source /var/mpi-selector/data/$(cat /etc/sysconfig/mpi-selector).sh
%endif
%{_bindir}/bjam ${BJAM_CONFIG} --user-config=user-config.jam cflags="%{optflags}" cxxflags="%{optflags}" stage || (echo "Not all Boost libraries built properly."; exit 1)

%install
# Now build it
J_P=%{jobs}
J_G=$(getconf _NPROCESSORS_CONF)
if test -z "$JOBS"; then
  JOBS=$J_G
else
  test 1 -gt "$JOBS" && JOBS=1
fi
if test "$JOBS" == "0"; then
  JOBS=1
fi
# In case you want more parallel jobs then autobuild grants you
if [ $J_P -gt $J_I ]; then
  JOBS=$J_G
fi
BJAM_CONFIG="-d2 -j$JOBS -sICU_PATH=%{_prefix}"
PYTHON_VERSION=$(python -c 'import sys; print sys.version[:3]')
PYTHON_FLAGS="--with-python-root=/usr --with-python-version=$PYTHON_VERSION"
REGEX_FLAGS="--with-icu"
export EXPAT_INCLUDE=/usr/include EXPAT_LIBPATH=%{_libdir} REGEX_FLAGS="--with-icu"
export PYTHON_FLAGS
# Set PATH, MANPATH and LD_LIBRARY_PATH
%if %build_mpi
source /var/mpi-selector/data/$(cat /etc/sysconfig/mpi-selector).sh
%endif
%{_bindir}/bjam ${BJAM_CONFIG} --user-config=user-config.jam \
	--prefix=%{buildroot}%{_prefix} \
	--exec-prefix=$%{buildroot}%{_prefix} \
	--libdir=%{buildroot}%{_libdir} \
	--includedir=%{buildroot}%{_includedir} \
	install || echo "Not all Boost libraries built properly."
mv %{buildroot}%{_includedir}/boost-1_36/boost %{buildroot}%{_includedir}/
mkdir -p %{buildroot}%{_docdir}/boost-%{version}
## install lib
#for i in $(find stage -type f -name \*.a); do
#  NAME=$(basename $i);
#  install -p -m 0644 $i %{buildroot}%{_libdir}/$NAME;
#done;
#pushd stage/lib
#for lib in $(find . -name \*.so.%{version}); do
#  BASE=$(basename ${lib} .so.%{version})
#  SONAME_MT="$BASE-mt.so"
#  ln -sf $NAME $SONAME_MT
#done
#popd
pushd %{buildroot}%{_libdir}
for lib in $(find . -name \*.so.%{version}); do
  BASE=$(basename ${lib} .so.%{version})
  SONAME_MT="$BASE-mt.so"
  ln -sf ${lib} $SONAME_MT
done
popd
# mv stage/lib/*.so* %{buildroot}%{_libdir}
# install include files
#for i in $(find boost -type d); do
#  mkdir -p %{buildroot}%{_includedir}/$i
#done
#for i in $(find boost -type f); do
#  install -p -m 644 $i %{buildroot}%{_includedir}/$i
#done
#chmod +x %{buildroot}%{_includedir}/boost/signals/detail/gen_signal_N.pl \
#         %{buildroot}%{_includedir}/boost/pool/detail/pool_construct_simple.sh \
#         %{buildroot}%{_includedir}/boost/pool/detail/pool_construct.sh \
#         %{buildroot}%{_includedir}/boost/function/gen_function_N.pl \
#         %{buildroot}%{_includedir}/boost/function/detail/gen_maybe_include.pl
#install the man pages
install -d %buildroot/%{_mandir}/man3
install -d %buildroot/%{_mandir}/man7
pushd boost-1.33.1/doc/man
for page in $(find . -type f); do
    install -p -m 644 $page %buildroot/%{_mandir}/$page
done
popd
#install doc files
dos2unix libs/ptr_container/doc/tutorial_example.html \
	libs/parameter/doc/html/reference.html \
	libs/parameter/doc/html/index.html \
	libs/iostreams/doc/tree/tree.js \
	libs/graph/doc/lengauer_tarjan_dominator.htm \
	libs/test/test/test_files/errors_handling_test.pattern \
	libs/test/test/test_files/result_report_test.pattern
find . -name \*.htm\* -o -name \*.gif -o -name \*.css -o -name \*.jpg -o -name \*.png -o -name \*.ico | tar --files-from=%{S:3} -cf - --files-from=- | tar -C %{buildroot}%{_docdir}/boost-%{version} -xf -
rm -rf %{buildroot}%{_docdir}/boost-%{version}/boost
ln -s /usr/include/boost %{buildroot}%{_docdir}/boost-%{version}/
ln -s ../LICENSE_1_0.txt %{buildroot}%{_docdir}/boost-%{version}/libs
#only for documentation, don't need to be executable
find %{buildroot}%{_docdir}/boost-%{version} -name \*.py -exec chmod -x {} +
#symlink dupes
%if 0%suse_version > 1020
%fdupes %buildroot
%endif

%post -n libboost_date_time1_36_0 -p /sbin/ldconfig

%post -n libboost_filesystem1_36_0 -p /sbin/ldconfig

%post -n libboost_iostreams1_36_0 -p /sbin/ldconfig

%post -n libboost_test1_36_0 -p /sbin/ldconfig

%post -n libboost_program_options1_36_0 -p /sbin/ldconfig

%post -n libboost_python1_36_0 -p /sbin/ldconfig

%post -n libboost_regex1_36_0 -p /sbin/ldconfig

%post -n libboost_serialization1_36_0 -p /sbin/ldconfig

%post -n libboost_signals1_36_0 -p /sbin/ldconfig

%post -n libboost_thread1_36_0 -p /sbin/ldconfig

%post -n libboost_math1_36_0 -p /sbin/ldconfig 
%if %build_mpi

%post -n libboost_mpi1_36_0 -p /sbin/ldconfig       
%endif

%post -n libboost_graph1_36_0 -p /sbin/ldconfig     

%post -n libboost_system1_36_0 -p /sbin/ldconfig    

%post -n libboost_wave1_36_0 -p /sbin/ldconfig      

%postun -n libboost_date_time1_36_0 -p /sbin/ldconfig

%postun -n libboost_filesystem1_36_0 -p /sbin/ldconfig

%postun -n libboost_iostreams1_36_0 -p /sbin/ldconfig

%postun -n libboost_test1_36_0 -p /sbin/ldconfig

%postun -n libboost_program_options1_36_0 -p /sbin/ldconfig

%postun -n libboost_python1_36_0 -p /sbin/ldconfig

%postun -n libboost_regex1_36_0 -p /sbin/ldconfig

%postun -n libboost_serialization1_36_0 -p /sbin/ldconfig

%postun -n libboost_signals1_36_0 -p /sbin/ldconfig

%postun -n libboost_thread1_36_0 -p /sbin/ldconfig

%postun -n libboost_math1_36_0 -p /sbin/ldconfig
%if %build_mpi

%postun -n libboost_mpi1_36_0 -p /sbin/ldconfig
%endif

%postun -n libboost_graph1_36_0 -p /sbin/ldconfig

%postun -n libboost_system1_36_0 -p /sbin/ldconfig

%postun -n libboost_wave1_36_0 -p /sbin/ldconfig

%files license
%defattr(-, root, root, -)
%doc LICENSE_1_0.txt

%files -n libboost_date_time1_36_0
%defattr(-, root, root, -)
%{_libdir}/libboost_date_time*.so.*

%files -n libboost_filesystem1_36_0
%defattr(-, root, root, -)
%{_libdir}/libboost_filesystem*.so.*

%files -n libboost_graph1_36_0
%defattr(-, root, root, -)
%{_libdir}/libboost_graph*.so.*

%files -n libboost_iostreams1_36_0
%defattr(-, root, root, -)
%{_libdir}/libboost_iostreams*.so.*

%files -n libboost_math1_36_0
%defattr(-, root, root, -)
%{_libdir}/libboost_math_*.so.*
%if %build_mpi

%files -n libboost_mpi1_36_0
%defattr(-, root, root, -)
%{_libdir}/libboost_mpi*.so.*
%{_libdir}/mpi.so
%endif

%files -n libboost_test1_36_0
%defattr(-, root, root, -)
%{_libdir}/libboost_prg_exec_monitor*.so.*
%{_libdir}/libboost_unit_test_framework*.so.*

%files -n libboost_program_options1_36_0
%defattr(-, root, root, -)
%{_libdir}/libboost_program_options*.so.*

%files -n libboost_python1_36_0
%defattr(-, root, root, -)
%{_libdir}/libboost_python*.so.*

%files -n libboost_serialization1_36_0
%defattr(-, root, root, -)
%{_libdir}/libboost_*serialization*.so.*

%files -n libboost_signals1_36_0
%defattr(-, root, root, -)
%{_libdir}/libboost_signals*.so.*

%files -n libboost_system1_36_0
%defattr(-, root, root, -)
%{_libdir}/libboost_system*.so.*

%files -n libboost_thread1_36_0
%defattr(-, root, root, -)
%{_libdir}/libboost_thread*.so.*

%files -n libboost_wave1_36_0
%defattr(-, root, root, -)
%{_libdir}/libboost_wave*.so.*

%files -n libboost_regex1_36_0
%defattr(-, root, root, -)
%{_libdir}/libboost_regex*.so.*

%files devel
%defattr(-, root, root, -)
%{_includedir}/boost
%{_libdir}/*.so
%{_libdir}/*.a
%if %build_mpi
%exclude %{_libdir}/mpi.so
%endif

%files doc
%defattr(-, root, root, -)
%doc %{_docdir}/boost-%{version}
%doc %{_mandir}/man3/*.3.gz
%doc %{_mandir}/man7/*.7.gz

%changelog
* Thu Nov 27 2008 ro@suse.de
- update baselibs.conf
- package mpi.so only in mpi package, not in devel
* Wed Nov 19 2008 jjolly@suse.de
- Made the use of the mpi-selector conditional for mpi-enabled
  platforms.
* Tue Nov 11 2008 ro@suse.de
- SLE-11 uses PPC64 instead of PPC, adapt baselibs.conf
* Fri Oct 31 2008 pth@suse.de
- Fix the bug that made boost.monitor mix up uid and pib and
  also make boost.monitor not special-case SIGCLD (bnc#439805)
- Fix generation of default extension in boost.filesystem.
- Make boost recommend library subpackages instead of requiring
  them to allow removal of unwanted libraries after update.
- Run mkspec explicitely in a shell so that mkspec.sh doesn't
  need to be executable.
- Disable deletion of full-name symlinks in boost.spec.in.
- Make boost-devel directly require all library subpackages.
- boost.rpm isn't needed, even for updates, so don't build it and
  remove the README file needeed only for this package.
- Make debug package require all library subpackages.
- Add pre_checkin.sh to ensure that boost.spec is regenerated
  at check-in time.
- Make boost.build use sane library names. Only the multi-threaded
  libraries are built and these have no -mt in their name.
  Symlinks for convenience are spupplied.
- Use -fno-strict-aliasing only for boost.python, where it's needed.
- Don't use configure and make (only convenience wrappers) but
  call bjam directly.
* Mon Oct 27 2008 ro@suse.de
- do not remove full-name symlinks for shared libs
* Thu Oct 23 2008 pth@suse.de
- Use a script and a Makefile to generate boost.spec.
- Pull in all libraries on update.
- Modify README to apply to both openSUSE and SLE.
* Thu Oct 23 2008 ro@suse.de
- fix regexp for short symlinks
- hook all mpi related parts to build_mpi macro
- disable build_mpi on ia64 s390 s390x for the moment
* Fri Oct 17 2008 pth@suse.de
- Using a rpm macros in package name doesn't work with autobuild.
* Wed Oct 15 2008 pth@suse.de
- Fix naming of library packages to match the horribly broken
  sonames of the boost libraries.
- Add post/postun for all library packages.
- Stop rpmlint warning about explicit library dependencies
  needed to pull in all library subpackages during updates.
* Tue Oct 14 2008 pth@suse.de
- Fix build failure (README not in build directory).
* Tue Sep 02 2008 pth@suse.de
- Split off runtime libraries into their own packages.
- Update to 1.36.0:
  New Libraries
  * Accumulators: Framework for incremental calculation, and
  collection of statistical accumulators.
  * Exception: A library for transporting of arbitrary data in
  exception objects, and transporting of exceptions
  between threads.
  * Units: Zero-overhead dimensional analysis and unit/quantity
  manipulation and conversion.
  * Unordered: Unordered associative containers.
  Updated Libraries
  * Asio:
  o Added support for serial ports.
  o Added support for UNIX domain sockets.
  o Added support for raw sockets and ICMP.
  o Added wrappers for POSIX stream-oriented file descriptors
  (excluding regular files).
  o Added support for reactor-style operations using a new
  null_buffers type.
  o Added an iterator type for bytewise traversal of buffer
  sequences.
  o Added new read_until() and async_read_until() overloads that
  take a user-defined function object for locating message
  boundaries.
  o Added an experimental two-lock queue (enabled by defining
  BOOST_ASIO_ENABLE_TWO_LOCK_QUEUE) that may provide better
  io_service scalability across many processors.
  o Various fixes, performance improvements, and more complete
  coverage of the custom memory allocation support.
  * Assign:list_of() (and its variants) now has overloaded comparison
  operators. This allows you to write test code such as
  BOOST_CHECK_EQUAL(my_container,list_of(2)(3)(4)(5));.
  * Foreach:BOOST_FOREACH macro for easily iterating over the elements
  of a sequence.
  o New BOOST_REVERSE_FOREACH macro for iterating over a sequence
  in reverse.
  * Function:
  o Improved allocator support.
  * Hash: Minor updates and fixes, for more info see the change log.
  * Interprocess:
  o Added anonymous shared memory for UNIX systems.
  o Fixed missing move semantics on managed memory classes.
  o Added copy_on_write and open_read_only options for shared
  memory and mapped file managed classes.
  o shared_ptr is movable and supports aliasing.
  * Intrusive:
  o Added linear<> and cache_last<> options to singly linked lists.
  o Added optimize_multikey<> option to unordered container hooks.
  o Optimized unordered containers when store_hash option is used
  in the hook.
  o Implementation changed to avoid explicit use of try-catch
  blocks and be compilable with exceptions disabled.
  * Math:
  o Added new non-central Chi-Square, Beta, F and T distributions.
  o Added Exponential Integral and Zeta special functions.
  o Added Rounding, Truncation, and Unit-in-the-last-place
  functions.
  o Added support for compile time powers of a runtime base.
  o Added a few SSE2 based optimisations for the Lanczos
  approximations.
  * MPI:
  o Added support for non-blocking operations in Python
  o Added support for graph topologies.
  * Multi-index Containers: Minor additions and maintenance fixes.
  Consult the library release notes for
  further information.
  * PtrContainer: Support for a few more containers, and addition
  of insert iterators. For details see upgrading
  details.
  * Spirit: Integrated the "Classic" Spirit V1.8.x code base with
  Spirit V2, "The New Generation". See Change Log.
  * Thread:
  o New generic lock and try_lock functions for locking multiple
  mutexes at once.
  o Rvalue reference support for move semantics where the
  compilers supports it.
  o A few bugs fixed and missing functions added (including
  the serious win32 condition variable bug).
  o scoped_try_lock types are now backwards-compatible with
  Boost 1.34.0 and previous releases.
  o Support for passing function arguments to the thread
  function by supplying additional arguments to the thread
  constructor.
  o Backwards-compatibility overloads added for timed_lock and
  timed_wait functions to allow use of xtime for timeouts.
  * Wave:
  o Wave V2.0 is a new major release introducing some breaking
  API changes, preventing it to be used with Boost versions
  earlier than V1.36.0. Mainly, the API and hook interface
  have been streamlined for more consistency.
  o Fixed a couple of bugs, improved regression test system to
  include testing of the preporcessing hooks interface
  (for details see: Changelog).
  * Xpressive:
  o Regular expressions that can be written as strings or as
  expression templates, and that can refer to each other and
  themselves recursively with the power of context-free
  grammars.
  o skip() for specifying which parts of the input sequence
  to ignore when matching it against a regex.
  o regex_replace() accepts formatter objects and formatter
  expressions in addition to format strings.
  o Range-based regex_replace() algorithm.
  o Fix crash when semantic actions are placed in look-aheads,
  look-behinds or independent sub-expressions.
* Mon Jun 23 2008 pth@suse.de
- Qualify name to avoid clash (bnc#401964)
* Fri Jun 20 2008 schwab@suse.de
- Fix ppc atomic ops.
* Thu Apr 10 2008 ro@suse.de
- added baselibs.conf file to build xxbit packages
  for multilib support
* Mon Jan 28 2008 schwab@suse.de
- Remove obsolete patch again.
* Fri Jan 18 2008 pth@suse.de
- Fix CVE-2008-0171 and CVE-2008-0171 (bugzilla #353180)
- Qualify special_values_parser (bugzilla #353897)
* Thu Jan 17 2008 schwab@suse.de
- Remove obsolete patch.
* Mon Jan 14 2008 pth@suse.de
- Move 1.34.1 from BS to Autobuild
- Add patch for critical bug in Boost.Function.
- Include C headers where necessary.
- Make the tests for ULONG_MAX more readable 64.
* Wed Oct 24 2007 rguenther@suse.de
- Use -fpermissive in addition to -O2 for building.
- Add patch to enable building wave with GCC 4.3.
* Mon Aug 20 2007 pth@suse.de
- Only use fdupes from 10.3 onwards.
* Sat Aug 11 2007 aj@suse.de
- Fix spec file to build again.
* Thu Aug 09 2007 pth@suse.de
- Add man pages (made for 1.33.1).
- Package html documentation differently.
- Check all links and add missing files that do exist.
- Use %%fdupes
- Add patch by rschiele@gmail.com to pass compiler flags into
  Boost.build.
- Update to 1.34.1 and use .spec file from bkoz@redhat.com as
  a basis.
  Changes 1.33.1 -> 1.34.0:
  New Libraries:
  * Foreach Library: BOOST_FOREACH macro for easily iterating over
  the elements of a sequence,
  * Statechart Library: Arbitrarily complex finite state machines
  can be implemented in easily readable and
  maintainable C++ code,
  * TR1 Library: An implementation of the C++ Technical Report on Standard
  Library Extensions, from John Maddock. This library does
  not itself implement the TR1 components, rather it's a
  thin wrapper that will include your standard library's
  TR1 implementation (if it has one), otherwise it will
  include the Boost Library equivalents, and import them
  into namespace std::tr1. Highlights include: Reference
  Wrappers, Smart Pointers, result_of, Function Object
  Binders, Polymorphic function wrappers, Type Traits,
  Random Number Generators and Distributions, Tuples, Fixed
  Size Array, Hash Function Objects, Regular Expressions,
  and Complex Number Additional Algorithms.
  * Typeof Library: Typeof operator emulation, from Arkadiy Vertleyb
  and Peder Holt.
  * Xpressive Library: Regular expressions that can be written as strings
  or as expression templates, and that can refer to
  each other and themselves recursively with the
  power of context-free grammars, from Eric Niebler.
  Updated Libraries:
  * Assign Library:
  o Support for ptr_map<key,T> via the new function ptr_map_insert()
  o Support for initialization of Pointer Containers when the
  containers hold pointers to an abstract base class.
  * Date_time library:
  o Support for new US/Canada timezone rules and other bug fixes.
  See Change History for details.
  * Filesystem Library: Major upgrade in preparation for submission to the
  C++ Standards Committee for TR2. Changes include:
  o Internationalization, provided by class templates basic_path,
  basic_filesystem_error, basic_directory_iterator, and
  basic_directory_entry.
  o Simplification of the path interface by eliminating special
  constructors to identify native formats.
  o Rationalization of predicate function design, including the
  addition of several new functions.
  o Clearer specification by reference to POSIX, the ISO/IEEE Single
  Unix Standard, with provisions for Windows and other operating
  systems.
  o Preservation of existing user code whenever possible.
  o More efficient directory iteration.
  o Addition of a recursive directory iterator.
  * Function Library: Boost.Function now implements a small buffer
  optimization, which can drastically improve the
  performance when copying or constructing
  Boost.Function objects storing small function
  objects. For instance, bind(&X:foo, &x, _1, _2)
  requires no heap allocation when placed into a
  Boost.Function object.
  * Functional/Hash Library
  o Use declarations for standard classes, so that the library
  doesn't need to include all of their headers
  o Deprecated the <boost/functional/hash/*.hpp> headers.
  o Add support for the BOOST_HASH_NO_EXTENSIONS macro, which
  disables the extensions to TR1
  o Minor improvements to the hash functions for floating point numbers.
  * Graph Library:
  o edmonds_maximum_cardinality_matching,
  o lengauer_tarjan_dominator_tree,
  o compressed_sparse_row_graph,
  o sorted_erdos_renyi_iterator,
  o biconnected_components now supports a visitor and named
  parameters,
  o adjacency_matrix now models the Bidirectional Graph concept.
  o dijkstra_shortest_paths now calls vis.initialize_vertex for each
  vertex during initialization.
  o Note: the name of the compiled library for the GraphViz reader has
  changed to boost_graph (from bgl-viz) to match Boost conventions.
  o See the complete revision history for more information.
  * MultiArray Library: Boost.MultiArray now by default provides
  range-checking for operator[]. Range checking can
  be disabled by defining the macro
  BOOST_DISABLE_ASSERTS before including
  multi_array.hpp. A bug in multi_array::resize()
  related to storage orders was fixed.
  * Multi-index Containers Library:
  o New random access indices.
  o Non key-based indices feature new rearrange facilities.
  o This version also includes a number of optimizations and usage
  improvements. For a complete list of changes, see the library
  release notes.
  * Optional Library:
  o boost::none_t and boost::none now added to Optional's
  documentation
  o Relational operators now directly support arguments of type
  'T' and 'none_t'
  o operator->() now also works with reference types.
  o Helper functions make_optional(val), make_optional(cond,val)
  and get_optional_value_or(opt,alternative_value) added.
  o Constructor taking a boolean condition (as well as a value)
  added.
  o Member function get_value_or(alternative_value) added.
  o Incompatbility bug with mpl::apply<> fixed.
  o Converting assignment bug with uninitialized lvalues fixed.
  * Parameter Library:
  o Every ArgumentPack is now a valid MPL Forward Sequence.
  o Support for unnamed arguments (those whose keyword is
  deduced from their types) is added.
  o Support for named and unnamed template arguments is added.
  o New overload generation macros solve the forwarding problem
  directly.
  o See also the Python library changes, below.
  * Pointer Container Library:
  o Support for serialization via Boost.Serialization.
  o Exceptions can be disabled by defining the macro
  BOOST_PTR_CONTAINER_NO_EXCEPTIONS before including any header.
  This macro is defined by default if BOOST_NO_EXCEPTIONS is defined.
  o Additional std::auto_ptr<T> overloads added s.t. one can also
  pass std::auto_ptr<T> instead of only T* arguments to member
  functions.
  o transfer() now has weaker requirements s.t. one can transfer
  objects from ptr_container<Derived> to ptr_container<Base>,
  * Python Library:
  o Boost.Python now automatically appends C++ signatures to
  docstrings. The new docstring_options.hpp header is available to
  control the content of docstrings.
  o stl_input_iterator, for turning a Python iterable object into an
  STL input iterator, from Eric Niebler.
  o Support for void* conversions is added.
  o Integrated support for wrapping C++ functions built with the
  parameter library; keyword names are automatically known to
  docsstrings.
  o Enhancements to the API for better embedding support
  (boost::python::import(), boost::python::exec(), and
  boost::python::exec_file()).
  * Signals Library: More improvements to signal invocation performance.
  * Smart Pointers Library:
  o Allocator support as proposed in N1851 (162 Kb PDF).
  o pointer_cast and pointer_to_other utilities to allow
  pointer-independent code,
  * String Algorithm Library:
  o lexicographical_compare
  o join
  o New comparison predicates is_less, is_not_greater.
  o Negative indexes support (like Perl) in various algorihtms
  (*_head/tail, *_nth).
  * Wave Library:
  o Wave now correctly recognizes pp-number tokens as mandated by
  the C++ Standard, which are converted to C++ tokens right before
  they are returned from the library.
  o Several new preprocessing hooks have been added. For a complete
  description please refer to the related documentation page: The
  Context Policy.
  o Shared library (dll) support has been added for the generated
  Wave libraries.
  o The overall error handling has been improved. It is now possible
  to recover and continue after an error or a warning was issued.
  o Support for optional comment and/or full whitespace
  preservation in the generated output stream has been added.
  o The Wave library now performs automatic include guard
  detection to avoid accessing header files more than once, if
  appropriate.
  o Full interactive mode has been added to the Wave tool. Now the
  Wave tool can be used just like Python or Perl for instance to
  interactively try out your BOOST_PP macros. Additionally it is
  now possible to load and save the current state of an
  interactive session (macro tables et.al.).
  o The overall performance has been improved by upto 40-60%%,
  depending on the concrete files to process.
  o Support for new pragmas has been added allowing to control
  certain library features from inside the preprocessed sources
  (partial output redirection, control of generated whitespace
  and #line directives).
  o Optional support for #pragma message "..." has been added.
  o This version also includes a number of bug fixes and usage
  improvements. For a complete list of changes, see the
  libraries change log.
  Fixes in 1.34.1:
  * Fixes for build on IBM pSeries for AIX and Linux
  * gcc-4.2 atomicity.h location fixed
  * [iostreams] zlib_compressor memory leaks in 1.34.0
  * filtering ostream problem... pushing zlib_compressor works in 1_33,
  dies in 1_34
  * [doc] The "Getting Started" page mentions incorrect library names
  * [filesystem] missing documentation or bad links
  * add missing docs for boost.python API enhancements.
  * Entire iostreams library outdated in 1.34.0
  * numeric_limits specializations in limits.hpp are incorrect
  * Updated ICU support in Boost.Regex
  * Make boost.python compatible with python 2.5
  * ::boost::detail::empty_base improved
  * Fix failing uild of libs/python/example/quickstart.
  * Fix problems when building Python modules on boost 1.34.0
  * Patches to allow boost 1.34.0 to compile with stricter warning
  checking under mac OS and gcc
  * Unable to compile Python example, tutorial, or quickstart with
  Boost 1_34_0
  * Improper overflow handling in shortest paths algorithms
  * Multiple include paths for Python
  * Add documentation for the iter_find/split algorithms
  * regex_token_iterator crashes
  * regex_error exception when quantifying some non-capturing groups
  * read_write_mutex docs don't clearly specify that the functionality
  is not present
- Remove patches not needed anymore.
- Replace file dupes by symlinks.
- Add rpmlintrc to suppress rpmlint warnings for things that won't be
  changed.
* Sun Jul 15 2007 schwab@suse.de
- Fix reference to atomicity.h.
* Sat Mar 24 2007 aj@suse.de
- Add libbz2-devel to BuildRequires.
* Fri Sep 22 2006 pth@suse.de
- Apply patch from community to build with Python 2.5
* Fri Jul 14 2006 sf@suse.de
- fixed wrong usage of visit_each() (Bug #192116 )
* Thu Jul 13 2006 sf@suse.de
- fixed link creation to libboost_thread.so, using %%_lib instead
  of lib
* Mon Jun 19 2006 jw@suse.de
- added a libboost_thread.so as a symlink to libboost_thread-mt.so
* Tue Apr 04 2006 pth@suse.de
- Add libboost_wave.a to file list
* Tue Apr 04 2006 pth@suse.de
- Use explicit file names instead of wildcards to detect libraries
  that weren't built.
* Wed Feb 08 2006 schwab@suse.de
- Fix broken assembler constraints [#148429].
* Wed Jan 25 2006 mls@suse.de
- converted neededforbuild to BuildRequires
* Tue Jan 17 2006 schwab@suse.de
- Don't strip binaries.
* Wed Dec 07 2005 pth@suse.de
- Fix cases of type-punning in boost::python
- Compile without -fno-strict-aliasing again.
- Remove unnecessary type attributes in forward declarations.
* Tue Dec 06 2005 pth@suse.de
- Update to 1.33.1.
- Fix use of uninitialized variable.
- Compile with -fno-strict-aliasing.
- Update NEWS file
* Thu Aug 25 2005 pth@suse.de
- Incorporate fixes that are bound to be in 1.33.1
- Build boost.regex with unicode support.
* Fri Aug 19 2005 pth@suse.de
- Add a NEWS file.
* Thu Aug 18 2005 pth@suse.de
- Update to 1.33.0 with 5 new libraries. See NEWS for specifics.
- Fix use of uninitialized class member (matz@suse.de)
- Compile with -O2 instead of -O3
- Make build process use %%optflags
* Thu Mar 10 2005 pth@suse.de
- Update to 1.32.0
* Fri May 07 2004 pth@suse.de
- Add convenience symlinks (#38491)
* Sun Apr 25 2004 coolo@suse.de
- build with several jobs
* Fri Mar 05 2004 pth@suse.de
- Update to 1.31.0.
- Make building boost work on Linux platforms where gcc does not
  define _REENTRANT when passed -pthread. Patch was done by
  Robert Schiele.
* Sat Jan 10 2004 adrian@suse.de
- add %%run_ldconfig
* Wed Aug 20 2003 pthomas@suse.de
- Update to 1.30.2, a bugfix release
* Wed Jul 23 2003 pthomas@suse.de
- Initial package, based on the work by Robert Schiele.
- Fix building with Python 2.3