# # spec file for package boost (Version 1.34.1) # # Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany. # This file and all modifications and additions to the pristine # package are under the same license as the package itself. # # Please submit bugfixes or comments via http://bugs.opensuse.org/ # # norootforbuild Name: boost %define file_version 1_34_1 %define man_version 1.33.1 %define man_file_version 1_33_1 BuildRequires: boost-jam >= 3.1.14 dos2unix gcc-c++ libbz2-devel libicu-devel python-devel xorg-x11-devel %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.34.1 Release: 29 Source0: %{name}_%{file_version}.tar.bz2 Source1: boost-rpmlintrc Source2: boost_%{man_file_version}_man.tar.bz2 Source3: existing_extra_docs 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 Patch7: boost-fix_doc_url.patch Patch8: boost-no_segfault_in_Regex_filter.patch Patch9: boost-no_segfault_on_dir_iteration.patch Patch10: boost-fix_documentation.patch Patch11: boost-Boost.Function.patch Patch12: boost-missing_includes.patch Patch13: boost-no_intrinsic_int64_t.patch Patch14: boost-codecleanup.patch # Secfix for 1.34.1 Patch15: boost-CVE-2008-0171.patch # Patch16: boost-qualify_name.patch %define _prefix /usr %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 contains the dynamic libraries. 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: %{name} = %{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 doc License: BSD 3-Clause Summary: Documentation for the Boost C++ Libraries Group: Development/Libraries/C and C++ Requires: %{name}-devel = %{version} AutoReqProv: on %description doc This package contains documentation about the boost dynamic libraries. %prep %setup -q -n %{name}_%{file_version} -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 %patch7 %patch8 %patch9 %patch10 %patch11 %patch12 %patch13 %patch14 %patch15 %patch16 chmod +x configure #stupid build machinery copies .orig files find . -name \*.orig -exec rm {} + %build %define bjam_config -d2 --layout=system %{?jobs:-j%jobs} find . -type f -exec chmod u+w {} + # Now build it BUILD_FLAGS="--with-toolset=gcc --prefix=%{buildroot}/usr --libdir=%{buildroot}%{_libdir} --with-bjam=/usr/bin/bjam" 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" BJAM_TARGET=rpm BJAM_CONFIG="%{bjam_config}" BJAM_TARGET="$BJAM_TARGET" ./configure $BUILD_FLAGS $PYTHON_FLAGS $REGEX_FLAGS export RPM_OPT_FLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -Wno-deprecated" make all %install mkdir -p %{buildroot}%{_libdir} mkdir -p %{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; for lib in `find stage -type f -name \*.so`; do NAME=$lib; SONAME=$lib.2; VNAME=$lib.%{version}; base=$(basename $lib); NAMEbase=$base; SONAMEbase=$base.2; VNAMEbase=$base.%{version}; mv $lib $VNAME; ln -s $VNAMEbase $SONAME; ln -s $VNAMEbase $NAME; install -p -m 755 $VNAME %{buildroot}%{_libdir}/$VNAMEbase; mv $SONAME %{buildroot}%{_libdir}/$SONAMEbase; mv $NAME %{buildroot}%{_libdir}/$NAMEbase; done; # 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-%{man_version}/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/ptr_container/doc/style.css \ 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 tar --files-from=%{S:3} -cf - $(find . -name \*.htm\* -o -name \*.gif -o -name \*.css -o -name \*.jpg -o -name \*.png -o -name \*.ico) | 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 %run_ldconfig %postun %run_ldconfig %files %defattr(-, root, root, -) %doc LICENSE_1_0.txt README %{_libdir}/*.so.%{version} %{_libdir}/*.so.2 %files devel %defattr(-, root, root, -) %{_includedir}/boost %{_libdir}/*.so %{_libdir}/*.a %files doc %defattr(-, root, root, -) %doc %{_docdir}/boost-%{version} %doc %{_mandir}/man3/*.3.gz %doc %{_mandir}/man7/*.7.gz %changelog * 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 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 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 overloads added s.t. one can also pass std::auto_ptr instead of only T* arguments to member functions. o transfer() now has weaker requirements s.t. one can transfer objects from ptr_container to ptr_container, * 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 * Wed Jan 18 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