From 0deb3b7a13d1892b84904b57bcdcfb92385d4700 Mon Sep 17 00:00:00 2001 From: Anas Nashif Date: Tue, 30 Oct 2012 13:04:36 -0700 Subject: Bump to boost 1.58.0 (rebase) Change-Id: I434ed719a1e7980af8df2109b3c5cea0b574fb61 Signed-off-by: MyoungJune Park --- boost/config/compiler/gcc.hpp | 2 +- boost/iostreams/filter/regex.hpp | 2 +- boost/pool/pool.hpp | 38 +- libs/python/build/Jamfile.v2 | 1 + libs/python/src/dict.cpp | 4 +- libs/python/src/list.cpp | 4 +- libs/python/src/long.cpp | 15 +- libs/python/src/object/class.cpp | 8 +- libs/python/src/str.cpp | 10 +- libs/python/src/tuple.cpp | 5 +- packaging/baselibs.conf | 18 + packaging/boost-rpmlintrc | 14 + packaging/boost.changes | 13 + packaging/boost.manifest | 5 + packaging/boost.pc | 11 + packaging/boost.spec | 761 +++++++++++++++++++++++++++++++++++++++ packaging/existing_extra_docs | 460 +++++++++++++++++++++++ run_test.sh | 68 ++++ 18 files changed, 1407 insertions(+), 32 deletions(-) create mode 100644 packaging/baselibs.conf create mode 100644 packaging/boost-rpmlintrc create mode 100644 packaging/boost.changes create mode 100644 packaging/boost.manifest create mode 100644 packaging/boost.pc create mode 100644 packaging/boost.spec create mode 100644 packaging/existing_extra_docs create mode 100755 run_test.sh diff --git a/boost/config/compiler/gcc.hpp b/boost/config/compiler/gcc.hpp index 41705df039..e91e31e21a 100644 --- a/boost/config/compiler/gcc.hpp +++ b/boost/config/compiler/gcc.hpp @@ -73,7 +73,7 @@ // those platforms where we can know for sure). It will get turned off again // later if no threading API is detected. // -#if !defined(__MINGW32__) && !defined(linux) && !defined(__linux) && !defined(__linux__) +#if !defined(__MINGW32__) # define BOOST_HAS_THREADS #endif diff --git a/boost/iostreams/filter/regex.hpp b/boost/iostreams/filter/regex.hpp index e6efd6d8ae..b202e7d3f8 100755 --- a/boost/iostreams/filter/regex.hpp +++ b/boost/iostreams/filter/regex.hpp @@ -58,7 +58,7 @@ private: return; iterator first(&src[0], &src[0] + src.size(), re_, flags_); iterator last; - const Ch* suffix = 0; + const Ch* suffix = &src[0]; for (; first != last; ++first) { dest.insert( dest.end(), first->prefix().first, diff --git a/boost/pool/pool.hpp b/boost/pool/pool.hpp index c47b11faf2..8fb1878c69 100644 --- a/boost/pool/pool.hpp +++ b/boost/pool/pool.hpp @@ -355,6 +355,15 @@ class pool: protected simple_segregated_storage < typename UserAllocator::size_t return s; } + size_type max_chunks() const + { //! Calculated maximum number of memory chunks that can be allocated in a single call by this Pool. + size_type partition_size = alloc_size(); + size_type POD_size = math::static_lcm::value + sizeof(size_type); + size_type max_chunks = (std::numeric_limits::max() - POD_size) / alloc_size(); + + return max_chunks; + } + static void * & nextof(void * const ptr) { //! \returns Pointer dereferenced. //! (Provided and used for the sake of code readability :) @@ -375,6 +384,8 @@ class pool: protected simple_segregated_storage < typename UserAllocator::size_t //! the first time that object needs to allocate system memory. //! The default is 32. This parameter may not be 0. //! \param nmax_size is the maximum number of chunks to allocate in one block. + set_next_size(nnext_size); + set_max_size(nmax_size); } ~pool() @@ -398,8 +409,8 @@ class pool: protected simple_segregated_storage < typename UserAllocator::size_t } void set_next_size(const size_type nnext_size) { //! Set number of chunks to request from the system the next time that object needs to allocate system memory. This value should never be set to 0. - //! \returns nnext_size. - next_size = start_size = nnext_size; + BOOST_USING_STD_MIN(); + next_size = start_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(nnext_size, max_chunks()); } size_type get_max_size() const { //! \returns max_size. @@ -407,7 +418,8 @@ class pool: protected simple_segregated_storage < typename UserAllocator::size_t } void set_max_size(const size_type nmax_size) { //! Set max_size. - max_size = nmax_size; + BOOST_USING_STD_MIN(); + max_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(nmax_size, max_chunks()); } size_type get_requested_size() const { //! \returns the requested size passed into the constructor. @@ -708,9 +720,9 @@ void * pool::malloc_need_resize() BOOST_USING_STD_MIN(); if(!max_size) - next_size <<= 1; - else if( next_size*partition_size/requested_size < max_size) - next_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size*requested_size/ partition_size); + set_next_size(next_size << 1); + else if(next_size < max_size * requested_size / partition_size) + set_next_size(min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size * requested_size / partition_size)); // initialize it, store().add_block(node.begin(), node.element_size(), partition_size); @@ -748,9 +760,9 @@ void * pool::ordered_malloc_need_resize() BOOST_USING_STD_MIN(); if(!max_size) - next_size <<= 1; - else if( next_size*partition_size/requested_size < max_size) - next_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size*requested_size/ partition_size); + set_next_size(next_size << 1); + else if(next_size < max_size * requested_size / partition_size) + set_next_size(min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size * requested_size / partition_size)); // initialize it, // (we can use "add_block" here because we know that @@ -792,6 +804,8 @@ void * pool::ordered_malloc(const size_type n) { //! Gets address of a chunk n, allocating new memory if not already available. //! \returns Address of chunk n if allocated ok. //! \returns 0 if not enough memory for n chunks. + if (n > max_chunks()) + return 0; const size_type partition_size = alloc_size(); const size_type total_req_size = n * requested_size; @@ -840,9 +854,9 @@ void * pool::ordered_malloc(const size_type n) BOOST_USING_STD_MIN(); if(!max_size) - next_size <<= 1; - else if( next_size*partition_size/requested_size < max_size) - next_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size*requested_size/ partition_size); + set_next_size(next_size << 1); + else if(next_size < max_size * requested_size / partition_size) + set_next_size(min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size * requested_size / partition_size)); // insert it into the list, // handle border case. diff --git a/libs/python/build/Jamfile.v2 b/libs/python/build/Jamfile.v2 index 32bffb0f72..b963c257e6 100644 --- a/libs/python/build/Jamfile.v2 +++ b/libs/python/build/Jamfile.v2 @@ -51,6 +51,7 @@ project boost/python : requirements -@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag @$(__name__).tag + -fno-strict-aliasing ; rule tag ( name : type ? : property-set ) diff --git a/libs/python/src/dict.cpp b/libs/python/src/dict.cpp index 77d840d455..5e196ff678 100644 --- a/libs/python/src/dict.cpp +++ b/libs/python/src/dict.cpp @@ -28,9 +28,9 @@ namespace detail::new_reference dict_base::call(object const& arg_) { + union { PyTypeObject *ptop; PyObject *pop; }pun = { &PyDict_Type }; return (detail::new_reference)PyObject_CallFunction( - (PyObject*)&PyDict_Type, const_cast("(O)"), - arg_.ptr()); + pun.pop, const_cast("(O)"), arg_.ptr()); } dict_base::dict_base() diff --git a/libs/python/src/list.cpp b/libs/python/src/list.cpp index 77e616881a..69f6da4753 100644 --- a/libs/python/src/list.cpp +++ b/libs/python/src/list.cpp @@ -10,11 +10,11 @@ namespace boost { namespace python { namespace detail { detail::new_non_null_reference list_base::call(object const& arg_) { + union{ PyTypeObject *ptop; PyObject *pop; }pun = { &PyList_Type }; return (detail::new_non_null_reference) (expect_non_null)( PyObject_CallFunction( - (PyObject*)&PyList_Type, const_cast("(O)"), - arg_.ptr())); + pun.pop, const_cast("(O)"), arg_.ptr())); } list_base::list_base() diff --git a/libs/python/src/long.cpp b/libs/python/src/long.cpp index 1ec8ebc011..fcba9d4006 100644 --- a/libs/python/src/long.cpp +++ b/libs/python/src/long.cpp @@ -8,16 +8,16 @@ namespace boost { namespace python { namespace detail { new_non_null_reference long_base::call(object const& arg_) { + union { PyTypeObject *ptop; PyObject *pop; }pun = { &PyLong_Type }; return (detail::new_non_null_reference)PyObject_CallFunction( - (PyObject*)&PyLong_Type, const_cast("(O)"), - arg_.ptr()); + pun.pop, const_cast("(O)"), arg_.ptr()); } new_non_null_reference long_base::call(object const& arg_, object const& base) { + union { PyTypeObject *ptop; PyObject *pop; }pun = { &PyLong_Type }; return (detail::new_non_null_reference)PyObject_CallFunction( - (PyObject*)&PyLong_Type, const_cast("(OO)"), - arg_.ptr(), base.ptr()); + pun.pop, const_cast("(OO)"), arg_.ptr(), base.ptr()); } long_base::long_base() @@ -25,7 +25,12 @@ long_base::long_base() detail::new_reference( PyObject_CallFunction((PyObject*)&PyLong_Type, const_cast("()"))) ) -{} +{ + union { PyTypeObject *ptop; PyObject *pop; }pun = { &PyLong_Type }; + object(detail::new_reference( + PyObject_CallFunction(pun.pop, const_cast("()")))); +} + long_base::long_base(object_cref arg) : object(long_base::call(arg)) diff --git a/libs/python/src/object/class.cpp b/libs/python/src/object/class.cpp index aeef688e28..179ec98dab 100644 --- a/libs/python/src/object/class.cpp +++ b/libs/python/src/object/class.cpp @@ -616,9 +616,11 @@ namespace objects void class_base::add_property( char const* name, object const& fget, char const* docstr) { + union { PyTypeObject *ptop; PyObject *pop; }pun = { &PyProperty_Type }; + object property( (python::detail::new_reference) - PyObject_CallFunction((PyObject*)&PyProperty_Type, const_cast("Osss"), fget.ptr(), 0, 0, docstr)); + PyObject_CallFunction(pun.pop, const_cast("Osss"), fget.ptr(), 0, 0, docstr)); this->setattr(name, property); } @@ -626,9 +628,11 @@ namespace objects void class_base::add_property( char const* name, object const& fget, object const& fset, char const* docstr) { + union { PyTypeObject *ptop; PyObject *pop; }pun = { &PyProperty_Type }; + object property( (python::detail::new_reference) - PyObject_CallFunction((PyObject*)&PyProperty_Type, const_cast("OOss"), fget.ptr(), fset.ptr(), 0, docstr)); + PyObject_CallFunction(pun.pop, const_cast("OOss"), fget.ptr(), fset.ptr(), 0, docstr)); this->setattr(name, property); } diff --git a/libs/python/src/str.cpp b/libs/python/src/str.cpp index 0bc225aa22..1b7e59cd9b 100644 --- a/libs/python/src/str.cpp +++ b/libs/python/src/str.cpp @@ -9,14 +9,14 @@ namespace boost { namespace python { namespace detail { detail::new_reference str_base::call(object const& arg_) { - return (detail::new_reference)PyObject_CallFunction( #if PY_VERSION_HEX >= 0x03000000 - (PyObject*)&PyUnicode_Type, + union { PyTypeObject *ptop; PyObject *pop; }pun = { &PyUnicode_Type }; #else - (PyObject*)&PyString_Type, + union { PyTypeObject *ptop; PyObject *pop; }pun = { &PyString_Type }; #endif - const_cast("(O)"), - arg_.ptr()); + + return (detail::new_reference)PyObject_CallFunction( + pun.pop, const_cast("(O)"), arg_.ptr()); } str_base::str_base() diff --git a/libs/python/src/tuple.cpp b/libs/python/src/tuple.cpp index 6719713b73..1c38d904c8 100644 --- a/libs/python/src/tuple.cpp +++ b/libs/python/src/tuple.cpp @@ -8,9 +8,10 @@ namespace boost { namespace python { namespace detail { detail::new_reference tuple_base::call(object const& arg_) { + union { PyTypeObject *ptop; PyObject *pop; }pun = { &PyTuple_Type }; + return (detail::new_reference)PyObject_CallFunction( - (PyObject*)&PyTuple_Type, const_cast("(O)"), - arg_.ptr()); + pun.pop, const_cast("(O)"), arg_.ptr()); } tuple_base::tuple_base() diff --git a/packaging/baselibs.conf b/packaging/baselibs.conf new file mode 100644 index 0000000000..ac0826cb2c --- /dev/null +++ b/packaging/baselibs.conf @@ -0,0 +1,18 @@ +package boost-devel + requires -boost- +libboost_date_time +libboost_filesystem +libboost_graph +libboost_iostreams +libboost_math +libboost_mpi +libboost_test +libboost_program_options +libboost_python +libboost_random +libboost_serialization +libboost_signals +libboost_system +libboost_thread +libboost_wave +libboost_regex diff --git a/packaging/boost-rpmlintrc b/packaging/boost-rpmlintrc new file mode 100644 index 0000000000..0f4dc07cf8 --- /dev/null +++ b/packaging/boost-rpmlintrc @@ -0,0 +1,14 @@ +# This line is mandatory to access the configuration functions +from Config import * + +addFilter("boost.* shlib-policy-nonversioned-dir") +addFilter("boost.* shlib-policy-missing-suffix") +addFilter("boost-doc.* devel-dependency") +addFilter("boost.* rpm-buildroot-usage") +addFilter("boost.* explicit-lib-dependency") +addFilter("boost.* filename-too-long-for-joliet") +addFilter("boost.* no-binary") +addFilter("boost.* static-library-without-debuginfo") +addFilter("boost.* obsolete-suse-version-check") +addFilter("boost.* shlib-unversioned-lib") +addFilter("boost.* no-dependency-on") diff --git a/packaging/boost.changes b/packaging/boost.changes new file mode 100644 index 0000000000..95e9d4bb75 --- /dev/null +++ b/packaging/boost.changes @@ -0,0 +1,13 @@ +* Thu Aug 29 2013 Anas Nashif submit/tizen/20130827.111941@86fbc3f +- build with glibc 2.18 + +* Tue Aug 27 2013 Anas Nashif submit/tizen/20130827.055530@2c102b0 +- Apply patch to protect invalid UTF8 sequences and overflow of ordered_malloc() +- update to 1.51.0 + +* Sat Jan 12 2013 Anas Nashif submit/trunk/20121229.051952@fffe0f9 +- use TIME_UTC_ instead of TIME_UTC + +* Fri Dec 28 2012 Anas Nashif upstream/1.49.0@71b07fb +- Provide old package names + diff --git a/packaging/boost.manifest b/packaging/boost.manifest new file mode 100644 index 0000000000..017d22d3af --- /dev/null +++ b/packaging/boost.manifest @@ -0,0 +1,5 @@ + + + + + diff --git a/packaging/boost.pc b/packaging/boost.pc new file mode 100644 index 0000000000..d71a28285d --- /dev/null +++ b/packaging/boost.pc @@ -0,0 +1,11 @@ +prefix=/usr +exec_prefix=/usr +libdir=/usr/lib +includedir=/usr/include/boost + +Name: Boost +Description: Boost C++ libraries (@TEST_LIBRARY@) +Version: @BOOST_VERSION@ +Libs: -L${libdir} -lboost_chrono -lboost_date_time -lboost_filesystem -lboost_iostreams -lboost_prg_exec_monitor -lboost_program_options -lboost_random -lboost_regex -lboost_serialization -lboost_system -lboost_thread -lboost_unit_test_framework -lboost_wserialization +Cflags: -I/usr/include/boost + diff --git a/packaging/boost.spec b/packaging/boost.spec new file mode 100644 index 0000000000..c1019cbb95 --- /dev/null +++ b/packaging/boost.spec @@ -0,0 +1,761 @@ +%define run_tests 0 +%if %{run_tests} + # check is defined off at .rpmmacros file. + %define check %%check +%endif + +%define ver 1.58.0 +%define file_version 1_58_0 +%define short_version 1_58 +%define lib_appendix 1_58_0 + +#Only define to 1 to generate the man pages +%define build_docs 0 + +#Define to 0 to not package the pdf documentation +%define package_pdf 0 + +# Just hardcode build_mpi to 1 as soon as openmpi builds on all +# named architectures. + +# TODO: make openmpi package +%define build_mpi 0 + +# context hasn't been ported to most architectures yet +%ifarch %ix86 x86_64 %arm mips ppc ppc64 ppc64le +%define build_context 1 +%else +%define build_context 0 +%endif + +%ifarch hppa +%define disable_long_double 1 +%else +%define disable_long_double 0 +%endif + +%define boost_libs1 boost-date-time%{lib_appendix} boost-filesystem%{lib_appendix} boost-graph%{lib_appendix} +%define boost_libs2 boost-iostreams%{lib_appendix} boost-math%{lib_appendix} boost-test%{lib_appendix} +%define boost_libs3 boost-program-options%{lib_appendix} boost-python%{lib_appendix} boost-serialization%{lib_appendix} +%define boost_libs4 boost-signals%{lib_appendix} boost-system%{lib_appendix} boost-thread%{lib_appendix} +%define boost_libs5 boost-wave%{lib_appendix} boost-regex%{lib_appendix} +%define boost_libs6 boost-random%{lib_appendix} boost-chrono%{lib_appendix} boost-locale%{lib_appendix} +%define boost_libs7 boost-timer%{lib_appendix} boost-atomic%{lib_appendix} boost-log%{lib_appendix} boost-container%{lib_appendix} +%if %build_context +%define boost_libs_context boost-context%{lib_appendix} boost-coroutine%{lib_appendix} +%endif + +%define most_libs %boost_libs1 %boost_libs2 %boost_libs3 %boost_libs4 %boost_libs5 %boost_libs6 %boost_libs7 %{?boost_libs_context} + +%if %build_mpi +%define all_libs %{most_libs} boost-graph-parallel%{lib_appendix} boost-mpi%{lib_appendix} +%else +%define all_libs %{most_libs} +%endif + +Name: boost +BuildRequires: boost-jam +BuildRequires: dos2unix +BuildRequires: chrpath +BuildRequires: gcc-c++ +BuildRequires: bzip2-devel +BuildRequires: zlib-devel +BuildRequires: expat-devel +BuildRequires: libicu-devel +BuildRequires: python +BuildRequires: python-devel +BuildRequires: xz +BuildRequires: fdupes +Url: http://www.boost.org +Summary: Boost C++ Libraries +License: BSL-1.0 +Group: Base/Libraries +Version: 1.58.0 +Release: 0 +Source0: %{name}_%{file_version}.tar.bz2 +Source1: boost-rpmlintrc +Source4: existing_extra_docs +Source1001: boost.manifest +Source1002: boost.pc + +%define _docdir %{_datadir}/doc/packages/boost-%{version} + +%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 +Summary: Development package for Boost C++ +Group: Development/Libraries/C and C++ +Requires: %{all_libs} +Requires: libstdc++-devel + +%description devel +This package contains all that is needed to develop/compile +applications that use the Boost C++ libraries. For documentation see +the documentation packages (html, man or pdf). + +%package -n boost-license%{lib_appendix} +Summary: Boost License +Group: Development/Libraries/C and C++ +Provides: boost-license = %{version}-%{release} +BuildArch: noarch + +%description -n boost-license%{lib_appendix} +This package contains the license boost is provided under. + +%package doc-html +Summary: HTML documentation for the Boost C++ Libraries +Group: Development/Libraries/C and C++ +BuildArch: noarch + +%description doc-html +This package contains the documentation of the boost dynamic libraries +in HTML format. + +%package -n boost-atomic%{lib_appendix} +Summary: Run-Time component of boost atomic library +Group: System/Libraries +Requires: boost-license%{lib_appendix} + +%description -n boost-atomic%{lib_appendix} +Run-Time support for Boost.Atomic, a library that provides atomic data types +and operations on these data types, as well as memory ordering constraints +required for coordinating multiple threads through atomic variables. + +%package -n boost-container%{lib_appendix} +Summary: Boost::Container Runtime libraries +Group: System/Libraries +Requires: boost-license%{lib_appendix} + +%description -n boost-container%{lib_appendix} +This package contains the Boost Container runtime libraries. + +%package -n boost-context%{lib_appendix} +Summary: Run-Time component of boost context switching library +Group: System/Libraries +Requires: boost-license%{lib_appendix} + +%description -n boost-context%{lib_appendix} +Run-Time support for Boost.Context, a foundational library that +provides a sort of cooperative multitasking on a single thread. + +%package -n boost-coroutine%{lib_appendix} +Summary: Boost::Coroutine Runtime libraries +Group: System/Libraries +Requires: boost-license%{lib_appendix} + +%description -n boost-coroutine%{lib_appendix} +This package contains the Boost Coroutine runtime libraries. + +%package -n boost-date-time%{lib_appendix} +Summary: Boost::Date.Time Runtime libraries +Group: System/Libraries +Requires: boost-license%{lib_appendix} +Provides: boost-date-time + +%description -n boost-date-time%{lib_appendix} +This package contains the Boost Date.Time runtime libraries. + +%package -n boost-filesystem%{lib_appendix} +Summary: Boost::Filesystem Runtime Libraries +Group: System/Localization +Requires: boost-license%{lib_appendix} +Provides: boost-filesystem + +%description -n boost-filesystem%{lib_appendix} +This package contains the Boost::Filesystem libraries. + +%package -n boost-graph%{lib_appendix} +Summary: Boost::Graph Runtime Libraries +Group: System/Libraries +Requires: boost-license%{lib_appendix} +Provides: boost-graph + +%description -n boost-graph%{lib_appendix} +This package contains the Boost::Graph Runtime libraries. + +%if %build_mpi +%package -n boost-graph-parallel%{lib_appendix} +Summary: Boost graph::distributed runtime libraries +Group: System/Libraries +Requires: boost-license%{lib_appendix} + +%description -n boost-graph-parallel%{lib_appendix} +This package contains the boost::graph::distributed runtime libraries. +%endif + +%package -n boost-iostreams%{lib_appendix} +Summary: Boost::IOStreams Runtime Libraries +Group: System/Libraries +Requires: boost-license%{lib_appendix} +Provides: boost-iostreams + +%description -n boost-iostreams%{lib_appendix} +This package contains the Boost::IOStreams Runtime libraries. + +%package -n boost-log%{lib_appendix} +Summary: Run-Time component of boost logging library +Group: System/Libraries +Requires: boost-license%{lib_appendix} +Provides: boost-log + +%description -n boost-log%{lib_appendix} +Boost.Log library aims to make logging significantly easier for the +application developer. It provides a wide range of out-of-the-box +tools along with public interfaces for extending the library. + +%package -n boost-math%{lib_appendix} +Summary: Boost::Math Runtime Libraries +Group: System/Libraries +Requires: boost-license%{lib_appendix} +Provides: boost-math + +%description -n boost-math%{lib_appendix} +This package contains the Boost::Math Runtime libraries. + +%if %build_mpi +%package -n boost-mpi%{lib_appendix} +Summary: Boost::MPI Runtime libraries +Group: System/Libraries +Requires: boost-license%{lib_appendix} +Provides: boost-mpi + +%description -n boost-mpi%{lib_appendix} +This package contains the Boost::MPI Runtime libraries. +%endif + +%package -n boost-test%{lib_appendix} +Summary: Boost::Test Runtime Libraries +Group: System/Libraries +Requires: boost-license%{lib_appendix} +Provides: boost-test + +%description -n boost-test%{lib_appendix} +This package contains the Boost::Test runtime libraries. + +%package -n boost-program-options%{lib_appendix} +Summary: Boost::ProgramOptions Runtime libraries +Group: System/Libraries +Requires: boost-license%{lib_appendix} +Provides: boost-program-options + +%description -n boost-program-options%{lib_appendix} +This package contains the Boost::ProgramOptions Runtime libraries. + + +%package -n boost-python%{lib_appendix} +Summary: Boost::Python Runtime Libraries +Group: System/Libraries +Requires: boost-license%{lib_appendix} +Provides: boost-python + +%description -n boost-python%{lib_appendix} +This package contains the Boost::Python Runtime libraries. + +%package -n boost-serialization%{lib_appendix} +Summary: Boost::Serialization Runtime Libraries +Group: System/Libraries +Requires: boost-license%{lib_appendix} +Provides: boost-serialization + +%description -n boost-serialization%{lib_appendix} +This package contains the Boost::Serialization Runtime libraries. + +%package -n boost-signals%{lib_appendix} +Summary: Boost::Signals Runtime Libraries +Group: System/Libraries +Requires: boost-license%{lib_appendix} +Provides: boost-signals + +%description -n boost-signals%{lib_appendix} +This package contains the Boost::Signals Runtime libraries. + +%package -n boost-system%{lib_appendix} +Summary: Boost::System Runtime Libraries +Group: System/Libraries +Requires: boost-license%{lib_appendix} +Provides: boost-system + +%description -n boost-system%{lib_appendix} +This package contains the Boost::System runtime libraries. + +%package -n boost-thread%{lib_appendix} +Summary: Boost::Thread Runtime Libraries +Group: System/Libraries +Requires: boost-license%{lib_appendix} +Provides: boost-thread + +%description -n boost-thread%{lib_appendix} +This package contains the Boost::Thread runtime libraries. + +%package -n boost-wave%{lib_appendix} +Summary: Boost::Wave Runtime Libraries +Group: System/Libraries +Requires: boost-license%{lib_appendix} +Provides: boost-wave + +%description -n boost-wave%{lib_appendix} +This package contains the Boost::Wave runtime libraries. + +%package -n boost-regex%{lib_appendix} +Summary: The Boost::Regex runtime library +Group: System/Libraries +Requires: boost-license%{lib_appendix} +Provides: boost-regex + +%description -n boost-regex%{lib_appendix} +This package contains the Boost::Regex runtime library. + +%package -n boost-random%{lib_appendix} +Summary: The Boost::Random runtime library +Group: System/Libraries +Requires: boost-license%{lib_appendix} +Provides: boost-random + +%description -n boost-random%{lib_appendix} +This package contains the Boost::Random runtime library. + +%package -n boost-chrono%{lib_appendix} +Summary: The Boost::Chrono runtime library +Group: System/Libraries +Requires: boost-license%{lib_appendix} +Provides: boost-chrono + +%description -n boost-chrono%{lib_appendix} +This package contains the Boost::Chrono runtime library. + +%package -n boost-locale%{lib_appendix} +Summary: The Boost::Locale runtime library +Group: System/Libraries +Requires: boost-license%{lib_appendix} +Provides: boost-locale + +%description -n boost-locale%{lib_appendix} +This package contains the Boost::Locale runtime library. + +%package -n boost-timer%{lib_appendix} +Summary: The Boost::Timer runtime library +Group: System/Libraries +Requires: boost-license%{lib_appendix} +Provides: boost-timer + +%description -n boost-timer%{lib_appendix} +This package contains the Boost::Timer runtime library. + + +%prep +%setup -q -n %{name}_%{file_version} +cp %{SOURCE1001} . +cp %{SOURCE1002} . +#everything in the tarball has the executable flag set ... +find -type f ! \( -name \*.sh -o -name \*.py -o -name \*.pl \) -exec chmod -x {} + + +#stupid build machinery copies .orig files +find . -name \*.orig -exec rm {} + + +%build +find . -type f -exec chmod u+w {} + + +# Create shared build instructions +cat << \EOF >.build +# Now build it +J_P=%{jobs} +J_G=$(getconf _NPROCESSORS_ONLN) +[ $J_G -gt 64 ] && J_G=64 + +if test -z "$JOBS"; then + JOBS=$J_G +else + test 1 -gt "$JOBS" && JOBS=1 +fi + +%if %{disable_long_double} +export LONG_DOUBLE_FLAGS="--disable-long-double" +%endif +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" +export REGEX_FLAGS="--with-icu" +export EXPAT_INCLUDE=/usr/include EXPAT_LIBPATH=%{_libdir} +export PYTHON_FLAGS +LIBRARIES_FLAGS=--with-libraries=all +%if !%build_context +# coroutine depends on context +LIBRARIES_FLAGS+=" --without-libraries=context,coroutine" +%endif +EOF + +touch user-config.jam + +# Read shared build instructions +. ./.build + +%if %build_mpi +# Set PATH, MANPATH and LD_LIBRARY_PATH for mpi +. /var/mpi-selector/data/$(rpm --qf "%{NAME}-%{VERSION}" -q openmpi).sh +%endif + +# use supplied bootstrap.sh instead of mucking with old bjam +# see also: https://svn.boost.org/trac/boost/ticket/9304 +./bootstrap.sh $LIBRARIES_FLAGS \ + --prefix=%{_prefix} --exec-prefix=%{_bindir} \ + --libdir=%{_libdir} --includedir=%{_includedir} + +# add specific wishes in user-config.jam +%if %build_docs +cat << EOF >user-config.jam +using xsltproc ; + +using boostbook + : /usr/share/xml/docbook/stylesheet/nwalsh/current + : /usr/share/xml/docbook/schema/dtd/4.2 + ; + +using doxygen ; +EOF +%endif + +%if %build_mpi +cat << EOF >>user-config.jam +using mpi ; +EOF +%endif + +# perform the compilation +./b2 %{?_smp_mflags} --prefix=%{_prefix} --libdir=%{_libdir} \ + --user-config=./user-config.jam ${CFLAGS:+cflags="$CFLAGS"} \ + ${CXXFLAGS:+cxxflags="$CXXFLAGS"} ${LDFLAGS:+linkflags="$LDFLAGS"} + + +%if %build_docs +cd doc +../b2 --user-config=../user-config.jam --v2 man +%endif + +%check +%if %{run_tests} +BOOST_LIBS="chrono,program_options,thread,system,filesystem,date_time,regex,serialization,iostreams,random,test" + chmod 777 ./run_test.sh + echo "RUN run_test.sh" + ./run_test.sh %{version} $BOOST_LIBS || exit 0 +%endif + +%install + +# Read shared build instructions +. ./.build + +%if %build_mpi +# Set PATH, MANPATH and LD_LIBRARY_PATH for mpi +. /var/mpi-selector/data/$(rpm --qf "%{NAME}-%{VERSION}" -q openmpi).sh +%endif + +./b2 install \ + --prefix=%{buildroot}%{_prefix} --exec-prefix=%{buildroot}%{_bindir} \ + --libdir=%{buildroot}%{_libdir} --includedir=%{buildroot}%{_includedir} \ + --user-config=./user-config.jam + +# do not install the python module - as long as noone needs it, it requires more fixes +# see https://bugzilla.redhat.com/show_bug.cgi?id=801534 for details +rm -f %{buildroot}%{_libdir}/mpi.so + +mkdir -p %{buildroot}%{_docdir} + +pushd %{buildroot}%{_libdir} +blibs=$(find . -name \*.so.%{version}) +echo $blibs | xargs chrpath -d + +for lib in ${blibs}; do + BASE=$(basename ${lib} .so.%{version}) + SONAME_MT="$BASE-mt.so" + ln -sf ${lib} $SONAME_MT +done +popd + +# install pkgconfig file +mkdir -p $RPM_BUILD_ROOT%{_libdir}/pkgconfig +install -D -m 644 %{SOURCE1002} $RPM_BUILD_ROOT%{_libdir}/pkgconfig + +# install the man pages +# rm -rf doc/man/man3/boost::units::operator +# mv doc/man/man3/path.3 doc/man/man3/boost::property_tree::path.3 +# mv doc/man/man3/string.3 doc/man/man3/boost::container::string.3 +# +# for sec in 3 7 9; do +# install -d %%buildroot/%%{_mandir}/man${sec} +# done +# pushd doc/man +# rm -f *.manifest +# tar -cf - .| tar -C %%{buildroot}/%%{_mandir} -xvf - +# 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:4} -cf - --files-from=- | tar -C %{buildroot}%{_docdir} -xf - +rm -rf %{buildroot}%{_docdir}/boost +ln -s /usr/include/boost %{buildroot}%{_docdir} +ln -s ../LICENSE_1_0.txt %{buildroot}%{_docdir}/libs +#Copy the news file. +#cp %%{S:5} %%{buildroot}%%{_docdir} +#only for documentation, doesn't need to be executable +find %{buildroot}%{_docdir} -name \*.py -exec chmod -x {} + + +%if %package_pdf +chmod -x ../%{name}_%{short_version}_pdf/*.pdf +%endif + +rm -f %{buildroot}%{_libdir}/*.a +#symlink dupes +%fdupes %buildroot + +# LICENSE +mkdir -p %{buildroot}/usr/share/licenses +cp -af LICENSE_1_0.txt %{buildroot}/usr/share/licenses/%{name} + +%post -n boost-atomic%{lib_appendix} -p /sbin/ldconfig +%post -n boost-container%{lib_appendix} -p /sbin/ldconfig +%post -n boost-context%{lib_appendix} -p /sbin/ldconfig +%post -n boost-coroutine%{lib_appendix} -p /sbin/ldconfig +%post -n boost-date-time%{lib_appendix} -p /sbin/ldconfig +%post -n boost-filesystem%{lib_appendix} -p /sbin/ldconfig +%post -n boost-iostreams%{lib_appendix} -p /sbin/ldconfig +%post -n boost-log%{lib_appendix} -p /sbin/ldconfig +%post -n boost-test%{lib_appendix} -p /sbin/ldconfig +%post -n boost-program-options%{lib_appendix} -p /sbin/ldconfig +%post -n boost-python%{lib_appendix} -p /sbin/ldconfig +%post -n boost-regex%{lib_appendix} -p /sbin/ldconfig +%post -n boost-serialization%{lib_appendix} -p /sbin/ldconfig +%post -n boost-signals%{lib_appendix} -p /sbin/ldconfig +%post -n boost-thread%{lib_appendix} -p /sbin/ldconfig +%post -n boost-math%{lib_appendix} -p /sbin/ldconfig +%if %build_mpi +%post -n boost-mpi%{lib_appendix} -p /sbin/ldconfig +%endif +%post -n boost-graph%{lib_appendix} -p /sbin/ldconfig +%post -n boost-system%{lib_appendix} -p /sbin/ldconfig +%post -n boost-wave%{lib_appendix} -p /sbin/ldconfig +%post -n boost-random%{lib_appendix} -p /sbin/ldconfig +%post -n boost-chrono%{lib_appendix} -p /sbin/ldconfig +%post -n boost-locale%{lib_appendix} -p /sbin/ldconfig +%post -n boost-timer%{lib_appendix} -p /sbin/ldconfig +%if %build_mpi +%post -n boost-graph-parallel%{lib_appendix} -p /sbin/ldconfig +%endif + +%postun -n boost-atomic%{lib_appendix} -p /sbin/ldconfig +%postun -n boost-container%{lib_appendix} -p /sbin/ldconfig +%postun -n boost-context%{lib_appendix} -p /sbin/ldconfig +%postun -n boost-coroutine%{lib_appendix} -p /sbin/ldconfig +%postun -n boost-date-time%{lib_appendix} -p /sbin/ldconfig +%postun -n boost-filesystem%{lib_appendix} -p /sbin/ldconfig +%postun -n boost-iostreams%{lib_appendix} -p /sbin/ldconfig +%postun -n boost-log%{lib_appendix} -p /sbin/ldconfig +%postun -n boost-test%{lib_appendix} -p /sbin/ldconfig +%postun -n boost-program-options%{lib_appendix} -p /sbin/ldconfig +%postun -n boost-python%{lib_appendix} -p /sbin/ldconfig +%postun -n boost-regex%{lib_appendix} -p /sbin/ldconfig +%postun -n boost-serialization%{lib_appendix} -p /sbin/ldconfig +%postun -n boost-signals%{lib_appendix} -p /sbin/ldconfig +%postun -n boost-thread%{lib_appendix} -p /sbin/ldconfig +%postun -n boost-math%{lib_appendix} -p /sbin/ldconfig +%if %build_mpi +%postun -n boost-mpi%{lib_appendix} -p /sbin/ldconfig +%endif +%postun -n boost-graph%{lib_appendix} -p /sbin/ldconfig +%postun -n boost-system%{lib_appendix} -p /sbin/ldconfig +%postun -n boost-wave%{lib_appendix} -p /sbin/ldconfig +%postun -n boost-random%{lib_appendix} -p /sbin/ldconfig +%postun -n boost-chrono%{lib_appendix} -p /sbin/ldconfig +%postun -n boost-locale%{lib_appendix} -p /sbin/ldconfig +%postun -n boost-timer%{lib_appendix} -p /sbin/ldconfig +%if %build_mpi +%postun -n boost-graph-parallel%{lib_appendix} -p /sbin/ldconfig +%endif + +%files +%manifest %{name}.manifest +%{_datadir}/licenses/%{name} + +%files -n boost-license%{lib_appendix} +%manifest %{name}.manifest +%defattr(-, root, root, -) +%dir %{_docdir} +#%%doc %%{_docdir}/NEWS +%doc %{_docdir}/LICENSE_1_0.txt + +%files -n boost-atomic%{lib_appendix} +%manifest %{name}.manifest +%defattr(-, root, root, -) +%{_libdir}/libboost_atomic*.so.* + +%files -n boost-container%{lib_appendix} +%manifest %{name}.manifest +%defattr(-, root, root, -) +%{_libdir}/libboost_container*.so.* + +%if %build_context +%manifest %{name}.manifest +%files -n boost-context%{lib_appendix} +%defattr(-, root, root, -) +%{_libdir}/libboost_context*.so.* + +%files -n boost-coroutine%{lib_appendix} +%manifest %{name}.manifest +%defattr(-, root, root, -) +%{_libdir}/libboost_coroutine*.so.* +%endif + +%files -n boost-date-time%{lib_appendix} +%manifest %{name}.manifest +%defattr(-, root, root, -) +%{_libdir}/libboost_date_time*.so.* + +%files -n boost-filesystem%{lib_appendix} +%manifest %{name}.manifest +%defattr(-, root, root, -) +%{_libdir}/libboost_filesystem*.so.* + +%files -n boost-graph%{lib_appendix} +%manifest %{name}.manifest +%defattr(-, root, root, -) +%{_libdir}/libboost_graph.so.* + +%if %build_mpi +%files -n boost-graph-parallel%lib_appendix +%manifest %{name}.manifest +%defattr(-,root,root) +%_libdir/libboost_graph_parallel.so.* +%endif + +%files -n boost-iostreams%{lib_appendix} +%manifest %{name}.manifest +%defattr(-, root, root, -) +%{_libdir}/libboost_iostreams*.so.* + +%files -n boost-log%{lib_appendix} +%manifest %{name}.manifest +%defattr(-, root, root, -) +%{_libdir}/libboost_log*.so.* + +%files -n boost-math%{lib_appendix} +%manifest %{name}.manifest +%defattr(-, root, root, -) +%{_libdir}/libboost_math_*.so.* + +%if %build_mpi +%manifest %{name}.manifest +%files -n boost-mpi%{lib_appendix} +%defattr(-, root, root, -) +%{_libdir}/libboost_mpi*.so.* +%endif + +%files -n boost-test%{lib_appendix} +%manifest %{name}.manifest +%defattr(-, root, root, -) +%{_libdir}/libboost_prg_exec_monitor*.so.* +%{_libdir}/libboost_unit_test_framework*.so.* + +%files -n boost-program-options%{lib_appendix} +%manifest %{name}.manifest +%defattr(-, root, root, -) +%{_libdir}/libboost_program_options*.so.* + +%files -n boost-python%{lib_appendix} +%manifest %{name}.manifest +%defattr(-, root, root, -) +%{_libdir}/libboost_python*.so.* + +%files -n boost-serialization%{lib_appendix} +%manifest %{name}.manifest +%defattr(-, root, root, -) +%{_libdir}/libboost_*serialization*.so.* + +%files -n boost-signals%{lib_appendix} +%manifest %{name}.manifest +%defattr(-, root, root, -) +%{_libdir}/libboost_signals*.so.* + +%files -n boost-system%{lib_appendix} +%manifest %{name}.manifest +%defattr(-, root, root, -) +%{_libdir}/libboost_system*.so.* + +%files -n boost-thread%{lib_appendix} +%manifest %{name}.manifest +%defattr(-, root, root, -) +%{_libdir}/libboost_thread*.so.* + +%files -n boost-wave%{lib_appendix} +%manifest %{name}.manifest +%defattr(-, root, root, -) +%{_libdir}/libboost_wave*.so.* + +%files -n boost-regex%{lib_appendix} +%manifest %{name}.manifest +%defattr(-, root, root, -) +%{_libdir}/libboost_regex*.so.* + +%files -n boost-random%{lib_appendix} +%manifest %{name}.manifest +%defattr(-, root, root, -) +%{_libdir}/libboost_random*.so.* + +%files -n boost-chrono%{lib_appendix} +%manifest %{name}.manifest +%defattr(-, root, root, -) +%{_libdir}/libboost_chrono*.so.* + +%files -n boost-locale%{lib_appendix} +%manifest %{name}.manifest +%defattr(-, root, root, -) +%{_libdir}/libboost_locale*.so.* + +%files -n boost-timer%{lib_appendix} +%manifest %{name}.manifest +%defattr(-, root, root, -) +%{_libdir}/libboost_timer*.so.* + +%files devel +%manifest %{name}.manifest +%defattr(-, root, root, -) +%{_includedir}/boost +%{_libdir}/*.so +%{_libdir}/pkgconfig/boost.pc +#%%{_datadir}/aclocal/*.m4 + +%files doc-html +%manifest %{name}.manifest +%defattr(-, root, root, -) +%doc %{_docdir}/* +%exclude %{_docdir}/LICENSE_1_0.txt + +%if %package_pdf +%files doc-pdf +%manifest %{name}.manifest +%defattr(-, root, root, -) +%doc ../%{name}_%{short_version}_pdf/*.pdf +%endif + +%changelog diff --git a/packaging/existing_extra_docs b/packaging/existing_extra_docs new file mode 100644 index 0000000000..aaa23af834 --- /dev/null +++ b/packaging/existing_extra_docs @@ -0,0 +1,460 @@ +libs/algorithm/minmax/example/minmax_ex.cpp +libs/algorithm/minmax/example/minmax_timer.cpp +libs/assign/test/array.cpp +libs/assign/test/list_inserter.cpp +libs/assign/test/list_of.cpp +libs/assign/test/list_of_workaround.cpp +libs/assign/test/std.cpp +libs/bind/bind_as_compose.cpp +libs/bind/bind_visitor.cpp +libs/bind/test/bind_fastcall_mf_test.cpp +libs/bind/test/bind_fastcall_test.cpp +libs/bind/test/bind_stdcall_mf_test.cpp +libs/bind/test/bind_stdcall_test.cpp +libs/bind/test/bind_test.cpp +libs/bind/test/mem_fn_derived_test.cpp +libs/bind/test/mem_fn_fastcall_test.cpp +libs/bind/test/mem_fn_stdcall_test.cpp +libs/bind/test/mem_fn_test.cpp +libs/bind/test/mem_fn_void_test.cpp +libs/compatibility/generate_cpp_c_headers.py +libs/concept_check/bad_error_eg.cpp +libs/concept_check/stl_concept_check.cpp +libs/concept_check/stl_concept_covering.cpp +libs/config/test/limits_test.cpp +libs/config/tools/configure.in +libs/crc/crc_example.cpp +libs/filesystem/build/Jamfile.v2 +libs/filesystem/example/simple_ls.cpp +libs/filesystem/test/fstream_test.cpp +libs/filesystem/test/operations_test.cpp +libs/filesystem/test/path_test.cpp +libs/format/example/sample_advanced.cpp +libs/format/example/sample_formats.cpp +libs/format/example/sample_new_features.cpp +libs/format/example/sample_userType.cpp +libs/functional/hash/examples/books.cpp +libs/functional/hash/examples/point.cpp +libs/functional/hash/examples/portable.cpp +libs/function/test/allocator_test.cpp +libs/function/test/contains_test.cpp +libs/function/test/function_30.cpp +libs/function/test/function_arith_cxx98.cpp +libs/function/test/function_arith_portable.cpp +libs/function/test/function_n_test.cpp +libs/function/test/function_ref_cxx98.cpp +libs/function/test/function_ref_portable.cpp +libs/function/test/function_test.cpp +libs/function/test/function_test_fail1.cpp +libs/function/test/function_test_fail2.cpp +libs/function/test/lambda_test.cpp +libs/function/test/mem_fun_cxx98.cpp +libs/function/test/mem_fun_portable.cpp +libs/function/test/stateless_test.cpp +libs/function/test/std_bind_cxx98.cpp +libs/function/test/std_bind_portable.cpp +libs/function/test/sum_avg_cxx98.cpp +libs/function/test/sum_avg_portable.cpp +libs/graph/doc/iscope99.pdf +libs/graph/doc/isomorphism-impl.pdf +libs/graph/example/bfs.cpp +libs/graph/example/bfs-example2.cpp +libs/graph/example/bfs-example.cpp +libs/graph/example/biconnected_components.cpp +libs/graph/example/city_visitor.cpp +libs/graph/example/connected_components.cpp +libs/graph/example/csr-example.cpp +libs/graph/example/cuthill_mckee_ordering.cpp +libs/graph/example/dave.cpp +libs/graph/example/dfs-example.cpp +libs/graph/example/dfs_parenthesis.cpp +libs/graph/example/dijkstra-example.cpp +libs/graph/example/family-tree-eg.cpp +libs/graph/example/file_dependencies.cpp +libs/graph/example/fr_layout.cpp +libs/graph/example/girth.cpp +libs/graph/example/graphviz.cpp +libs/graph/example/incremental_components.cpp +libs/graph/example/isomorphism.cpp +libs/graph/example/johnson-eg.cpp +libs/graph/example/kevin-bacon.cpp +libs/graph/example/king_ordering.cpp +libs/graph/example/kruskal-example.cpp +libs/graph/example/matching_example.cpp +libs/graph/example/max_flow.cpp +libs/graph/example/miles_span.cpp +libs/graph/example/minimum_degree_ordering.cpp +libs/graph/example/ordered_out_edges.cpp +libs/graph/example/quick_tour.cpp +libs/graph/example/reverse-graph-eg.cpp +libs/graph/example/roget_components.cpp +libs/graph/example/sloan_ordering.cpp +libs/graph/example/strong_components.cpp +libs/graph/example/transitive_closure.cpp +libs/graph/example/transpose-example.cpp +libs/graph/example/undirected_dfs.cpp +libs/graph/test/dominator_tree_test.cpp +libs/graph/test/graph.cpp +libs/integer/test/integer_mask_test.cpp +libs/integer/test/static_log2_test.cpp +libs/integer/test/static_min_max_test.cpp +libs/iostreams/doc/tree/tree.js +libs/iostreams/example/container_device.hpp +libs/iostreams/example/dictionary_filter.hpp +libs/iostreams/example/finite_state_filter.hpp +libs/iostreams/example/line_wrapping_filter.hpp +libs/iostreams/example/shell_comments_filter.hpp +libs/iostreams/example/tab_expanding_filter.hpp +libs/iostreams/example/unix2dos_filter.hpp +libs/iostreams/src/bzip2.cpp +libs/iostreams/src/file_descriptor.cpp +libs/iostreams/src/mapped_file.cpp +libs/iostreams/src/zlib.cpp +libs/iostreams/test/bzip2_test.cpp +libs/iostreams/test/file_descriptor_test.cpp +libs/iostreams/test/finite_state_filter_test.cpp +libs/iostreams/test/mapped_file_test.cpp +libs/iostreams/test/seekable_file_test.cpp +libs/io/test/ios_state_test.cpp +libs/iterator/doc/BidirectionalTraversal.rst +libs/iterator/doc/counting_iterator.pdf +libs/iterator/doc/counting_iterator.rst +libs/iterator/doc/facade-and-adaptor.pdf +libs/iterator/doc/facade-and-adaptor.rst +libs/iterator/doc/filter_iterator.pdf +libs/iterator/doc/filter_iterator.rst +libs/iterator/doc/ForwardTraversal.rst +libs/iterator/doc/function_output_iterator.pdf +libs/iterator/doc/function_output_iterator.rst +libs/iterator/doc/IncrementableIterator.rst +libs/iterator/doc/index.rst +libs/iterator/doc/indirect_iterator.pdf +libs/iterator/doc/indirect_iterator.rst +libs/iterator/doc/iterator_adaptor.pdf +libs/iterator/doc/iterator_adaptor.rst +libs/iterator/doc/iterator_archetypes.pdf +libs/iterator/doc/iterator_archetypes.rst +libs/iterator/doc/iterator_concepts.pdf +libs/iterator/doc/iterator_concepts.rst +libs/iterator/doc/iterator_facade.pdf +libs/iterator/doc/iterator_facade.rst +libs/iterator/doc/iterator_traits.pdf +libs/iterator/doc/iterator_traits.rst +libs/iterator/doc/LvalueIterator.rst +libs/iterator/doc/new-iter-concepts.pdf +libs/iterator/doc/new-iter-concepts.rst +libs/iterator/doc/permutation_iterator.pdf +libs/iterator/doc/permutation_iterator.rst +libs/iterator/doc/pointee.pdf +libs/iterator/doc/pointee.rst +libs/iterator/doc/RandomAccessTraversal.rst +libs/iterator/doc/ReadableIterator.rst +libs/iterator/doc/reverse_iterator.pdf +libs/iterator/doc/reverse_iterator.rst +libs/iterator/doc/SinglePassIterator.rst +libs/iterator/doc/SwappableIterator.rst +libs/iterator/doc/transform_iterator.pdf +libs/iterator/doc/transform_iterator.rst +libs/iterator/doc/WritableIterator.rst +libs/iterator/doc/zip_iterator.pdf +libs/iterator/doc/zip_iterator.rst +libs/iterator/example/counting_iterator_example.cpp +libs/iterator/example/filter_iterator_example.cpp +libs/iterator/example/indirect_iterator_example.cpp +libs/iterator/example/node_iterator1.cpp +libs/iterator/example/node_iterator2.cpp +libs/iterator/example/node_iterator2.hpp +libs/iterator/example/node_iterator3.cpp +libs/iterator/example/permutation_iter_example.cpp +libs/iterator/example/reverse_iterator_example.cpp +libs/iterator/example/transform_iterator_example.cpp +libs/logic/test/tribool_io_test.cpp +libs/logic/test/tribool_rename_test.cpp +libs/logic/test/tribool_test.cpp +libs/math/octonion/graphics/octonion_blurb17.jpeg +libs/math/octonion/octonion_test.cpp +libs/math/octonion/output_more.txt +libs/math/octonion/output.txt +libs/math/quaternion/HSO3.hpp +libs/math/quaternion/HSO3SO4.cpp +libs/math/quaternion/HSO4.hpp +libs/math/quaternion/output_more.txt +libs/math/quaternion/output.txt +libs/math/quaternion/quaternion_test.cpp +libs/math/quaternion/TQE_EA.pdf +libs/math/quaternion/TQE.pdf +libs/math/special_functions/graphics/special_functions_blurb15.jpeg +libs/math/special_functions/graphics/special_functions_blurb17.jpeg +libs/math/special_functions/graphics/special_functions_blurb18.jpeg +libs/math/special_functions/graphics/special_functions_blurb1.jpeg +libs/math/special_functions/graphics/special_functions_blurb20.jpeg +libs/math/special_functions/graphics/special_functions_blurb22.jpeg +libs/math/special_functions/graphics/special_functions_blurb5.jpeg +libs/math/special_functions/graphics/special_functions_blurb6.jpeg +libs/math/special_functions/graphics/special_functions_blurb7.jpeg +libs/math/special_functions/output_more.txt +libs/math/special_functions/output.txt +libs/math/special_functions/special_functions_test.cpp +libs/math/test/common_factor_test.cpp +libs/math/test/log1p_expm1_test.cpp +libs/mpl/doc/refmanual.pdf +libs/mpl/example/fsm/player1.cpp +libs/multi_array/test/access.cpp +libs/multi_array/test/assign.cpp +libs/multi_array/test/assign_to_array.cpp +libs/multi_array/test/compare.cpp +libs/multi_array/test/concept_checks.cpp +libs/multi_array/test/constructors.cpp +libs/multi_array/test/fail_cbracket.cpp +libs/multi_array/test/fail_cdata.cpp +libs/multi_array/test/fail_citerator.cpp +libs/multi_array/test/fail_cparen.cpp +libs/multi_array/test/fail_criterator.cpp +libs/multi_array/test/fail_csubarray2.cpp +libs/multi_array/test/fail_csubarray3.cpp +libs/multi_array/test/fail_csubarray.cpp +libs/multi_array/test/fail_cview2.cpp +libs/multi_array/test/fail_cview3.cpp +libs/multi_array/test/fail_cview.cpp +libs/multi_array/test/fail_ref_cbracket.cpp +libs/multi_array/test/fail_ref_cdata.cpp +libs/multi_array/test/fail_ref_citerator.cpp +libs/multi_array/test/fail_ref_cparen.cpp +libs/multi_array/test/fail_ref_criterator.cpp +libs/multi_array/test/fail_ref_csubarray2.cpp +libs/multi_array/test/fail_ref_csubarray3.cpp +libs/multi_array/test/fail_ref_csubarray.cpp +libs/multi_array/test/fail_ref_cview2.cpp +libs/multi_array/test/fail_ref_cview3.cpp +libs/multi_array/test/fail_ref_cview.cpp +libs/multi_array/test/generative_tests.hpp +libs/multi_array/test/idxgen1.cpp +libs/multi_array/test/index_bases.cpp +libs/multi_array/test/iterators.cpp +libs/multi_array/test/range1.cpp +libs/multi_array/test/reshape.cpp +libs/multi_array/test/resize.cpp +libs/multi_array/test/slice.cpp +libs/multi_array/test/stl_interaction.cpp +libs/multi_array/test/storage_order.cpp +libs/multi_index/example/basic.cpp +libs/multi_index/example/bimap.cpp +libs/multi_index/example/complex_structs.cpp +libs/multi_index/example/composite_keys.cpp +libs/multi_index/example/hashed.cpp +libs/multi_index/example/non_default_ctor.cpp +libs/multi_index/example/random_access.cpp +libs/multi_index/example/rearrange.cpp +libs/multi_index/example/sequenced.cpp +libs/multi_index/example/serialization.cpp +libs/multi_index/perf/test_perf.cpp +libs/multi_index/test/test_basic.cpp +libs/multi_index/test/test_capacity.cpp +libs/multi_index/test/test_comparison.cpp +libs/multi_index/test/test_composite_key.cpp +libs/multi_index/test/test_conv_iterators.cpp +libs/multi_index/test/test_copy_assignment.cpp +libs/multi_index/test/test_hash_ops.cpp +libs/multi_index/test/test_iterators.cpp +libs/multi_index/test/test_key_extractors.cpp +libs/multi_index/test/test_list_ops.cpp +libs/multi_index/test/test_modifiers.cpp +libs/multi_index/test/test_mpl_ops.cpp +libs/multi_index/test/test_observers.cpp +libs/multi_index/test/test_projection.cpp +libs/multi_index/test/test_range.cpp +libs/multi_index/test/test_rearrange.cpp +libs/multi_index/test/test_safe_mode.cpp +libs/multi_index/test/test_serialization1.cpp +libs/multi_index/test/test_serialization2.cpp +libs/multi_index/test/test_set_ops.cpp +libs/multi_index/test/test_special_set_ops.cpp +libs/multi_index/test/test_update.cpp +libs/preprocessor/doc/examples/array_arithmetic.c +libs/preprocessor/doc/examples/catch_builtin.cpp +libs/preprocessor/doc/examples/delay.c +libs/preprocessor/doc/examples/duffs_device.c +libs/preprocessor/doc/examples/is_integral.cpp +libs/preprocessor/doc/examples/linear_fib.c +libs/ptr_container/test/incomplete_type_test.cpp +libs/ptr_container/test/ptr_array.cpp +libs/ptr_container/test/simple_test.cpp +libs/ptr_container/test/tree_test.cpp +libs/ptr_container/test/view_example.cpp +libs/python/doc/building.rst +libs/python/doc/internals.rst +libs/python/doc/PyConDC_2003/bpl.pdf +libs/python/doc/v2/callbacks.txt +libs/python/example/quickstart/boost-build.jam +libs/python/example/quickstart/extending.cpp +libs/python/example/quickstart/Jamroot +libs/python/example/tutorial/Jamroot +libs/python/test/input_iterator.cpp +libs/python/test/iterator.cpp +libs/python/test/iterator.py +libs/python/test/map_indexing_suite.cpp +libs/python/test/map_indexing_suite.py +libs/python/test/pickle1.cpp +libs/python/test/pickle2.cpp +libs/python/test/pickle3.cpp +libs/python/test/pickle4.cpp +libs/python/test/vector_indexing_suite.cpp +libs/python/test/vector_indexing_suite.py +libs/range/test/algorithm_example.cpp +libs/range/test/array.cpp +libs/range/test/iterator_pair.cpp +libs/range/test/iterator_range.cpp +libs/range/test/reversible_range.cpp +libs/range/test/std_container.cpp +libs/range/test/string.cpp +libs/range/test/sub_range.cpp +libs/regex/build/generic.mak +libs/regex/example/grep/grep.cpp +libs/regex/example/snippets/captures_example.cpp +libs/regex/example/snippets/credit_card_example.cpp +libs/regex/example/snippets/partial_regex_grep.cpp +libs/regex/example/snippets/partial_regex_match.cpp +libs/regex/example/snippets/regex_grep_example_1.cpp +libs/regex/example/snippets/regex_grep_example_2.cpp +libs/regex/example/snippets/regex_grep_example_3.cpp +libs/regex/example/snippets/regex_grep_example_4.cpp +libs/regex/example/snippets/regex_iterator_example.cpp +libs/regex/example/snippets/regex_match_example.cpp +libs/regex/example/snippets/regex_merge_example.cpp +libs/regex/example/snippets/regex_replace_example.cpp +libs/regex/example/snippets/regex_search_example.cpp +libs/regex/example/snippets/regex_split_example_1.cpp +libs/regex/example/snippets/regex_split_example_2.cpp +libs/regex/example/snippets/regex_token_iterator_eg_1.cpp +libs/regex/example/snippets/regex_token_iterator_eg_2.cpp +libs/regex/example/timer/regex_timer.cpp +libs/regex/test/captures/captures_test.cpp +libs/regex/test/concepts/concept_check.cpp +libs/regex/test/pathology/bad_expression_test.cpp +libs/regex/test/pathology/recursion_test.cpp +libs/regex/test/regress/basic_tests.cpp +libs/regex/test/regress/main.cpp +libs/regex/test/regress/test_deprecated.cpp +libs/serialization/example/demo_auto_ptr.cpp +libs/serialization/example/demo.cpp +libs/serialization/example/demo_exception.cpp +libs/serialization/example/demo_fast_archive.cpp +libs/serialization/example/demofile.txt +libs/serialization/example/demo_output.txt +libs/serialization/example/demo_pimpl_A.cpp +libs/serialization/example/demo_pimpl.cpp +libs/serialization/example/demo_polymorphic_A.cpp +libs/serialization/example/demo_polymorphic_A.hpp +libs/serialization/example/demo_polymorphic.cpp +libs/serialization/example/demo_portable_archive.cpp +libs/serialization/example/demo_save.xml +libs/serialization/example/demo_shared_ptr.cpp +libs/serialization/example/demo_xml.cpp +libs/serialization/example/demo_xml.hpp +libs/serialization/example/demo_xml_load.cpp +libs/serialization/example/demo_xml_save.cpp +libs/serialization/test/test_delete_pointer.cpp +libs/serialization/test/test_diamond.cpp +libs/serialization/test/test_no_rtti.cpp +libs/signals/example/doc_view.cpp +libs/signals/test/dead_slot_test.cpp +libs/signals/test/deletion_test.cpp +libs/signals/test/ordering_test.cpp +libs/signals/test/signal_n_test.cpp +libs/signals/test/signal_test.cpp +libs/signals/test/trackable_test.cpp +libs/smart_ptr/example/scoped_ptr_example.cpp +libs/smart_ptr/example/scoped_ptr_example.hpp +libs/smart_ptr/example/scoped_ptr_example_test.cpp +libs/smart_ptr/example/shared_ptr_example2.cpp +libs/smart_ptr/example/shared_ptr_example2.hpp +libs/smart_ptr/example/shared_ptr_example2_test.cpp +libs/smart_ptr/example/shared_ptr_example.cpp +libs/smart_ptr/smarttest.zip +libs/smart_ptr/test/pointer_cast_test.cpp +libs/smart_ptr/test/pointer_to_other_test.cpp +libs/smart_ptr/test/smart_ptr_test.cpp +libs/statechart/doc/rationale.pdf +libs/statechart/doc/reference.pdf +libs/statechart/doc/tutorial.pdf +libs/statechart/test/TuTest.cpp +libs/statechart/test/TuTest.hpp +libs/statechart/test/TuTestMain.cpp +libs/static_assert/static_assert_example_1.cpp +libs/static_assert/static_assert_example_2.cpp +libs/static_assert/static_assert_example_3.cpp +libs/static_assert/static_assert_test.cpp +libs/static_assert/static_assert_test_fail_1.cpp +libs/static_assert/static_assert_test_fail_2.cpp +libs/static_assert/static_assert_test_fail_3.cpp +libs/static_assert/static_assert_test_fail_4.cpp +libs/static_assert/static_assert_test_fail_5.cpp +libs/static_assert/static_assert_test_fail_6.cpp +libs/static_assert/static_assert_test_fail_7.cpp +libs/static_assert/static_assert_test_fail_8.cpp +libs/static_assert/static_assert_test_fail_9.cpp +libs/test/example/exec_mon_example.cpp +libs/test/example/prg_exec_example.cpp +libs/test/example/test_case_template_example.cpp +libs/test/example/unit_test_example_01.cpp +libs/test/example/unit_test_example_02.cpp +libs/test/example/unit_test_example_03.cpp +libs/test/example/unit_test_example_04.cpp +libs/test/example/unit_test_example_05.cpp +libs/test/src/compiler_log_formatter.cpp +libs/test/src/cpp_main.cpp +libs/test/src/exception_safety.cpp +libs/test/src/execution_monitor.cpp +libs/test/src/framework.cpp +libs/test/src/interaction_based.cpp +libs/test/src/logged_expectations.cpp +libs/test/src/plain_report_formatter.cpp +libs/test/src/progress_monitor.cpp +libs/test/src/results_collector.cpp +libs/test/src/results_reporter.cpp +libs/test/src/test_tools.cpp +libs/test/src/unit_test_log.cpp +libs/test/src/unit_test_main.cpp +libs/test/src/unit_test_monitor.cpp +libs/test/src/unit_test_parameters.cpp +libs/test/src/unit_test_suite.cpp +libs/test/src/xml_log_formatter.cpp +libs/test/src/xml_report_formatter.cpp +libs/test/test/custom_exception_test.cpp +libs/test/test/errors_handling_test.cpp +libs/test/test/minimal_test.cpp +libs/test/test/online_test.cpp +libs/test/test/output_test_stream_test.cpp +libs/test/test/parameterized_test_test.cpp +libs/test/test/prg_exec_fail1.cpp +libs/test/test/prg_exec_fail2.cpp +libs/test/test/prg_exec_fail3.cpp +libs/test/test/prg_exec_fail4.cpp +libs/test/test/result_report_test.cpp +libs/test/test/test_case_template_test.cpp +libs/test/test/test_files/errors_handling_test.pattern +libs/test/test/test_files/result_report_test.pattern +libs/test/test/test_fp_comparisons.cpp +libs/test/test/test_tools_test.cpp +libs/type_traits/examples/copy_example.cpp +libs/type_traits/examples/fill_example.cpp +libs/type_traits/examples/iter_swap_example.cpp +libs/type_traits/examples/trivial_destructor_example.cpp +libs/utility/base_from_member_test.cpp +libs/utility/call_traits_test.cpp +libs/utility/iterators_test.cpp +libs/utility/operators_test.cpp +libs/utility/shared_iterator_example1.cpp +libs/utility/shared_iterator_example2.cpp +libs/utility/shared_iterator_example3.cpp +libs/wave/ChangeLog +LICENSE_1_0.txt +more/blanket-permission.txt +tools/inspect/build/Jamfile.v2 +tools/inspect/inspect.cpp +tools/inspect/inspector.hpp +tools/inspect/link_check.cpp +tools/inspect/link_check.hpp +tools/inspect/tab_check.cpp +tools/inspect/tab_check.hpp +tools/quickbook/doc/quickbook.qbk diff --git a/run_test.sh b/run_test.sh new file mode 100755 index 0000000000..9d5fab3b0f --- /dev/null +++ b/run_test.sh @@ -0,0 +1,68 @@ +#!/bin/bash + +BOOST_VERSION=$1 +BOOST_PACKAGE_LIST=${2//,/ } + +echo "Boost package list: [$BOOST_PACKAGE_LIST]" + +TEST_LOG="/tmp/boost_test" +export TEST_LOG +rm -f ${TEST_LOG} + +# Color +Color_Off='\e[0m' # Text Reset + +# Regular Colors +Red='\e[0;31m' # Red +Green='\e[0;32m' # Green +Cyan='\e[0;36m' # Cyank + +# Bold +BWhite='\e[1;37m' # White + + +for ix in $BOOST_PACKAGE_LIST; +do +# echo "Build [$ix] test case" + pushd ./libs/${ix}/test + ../../../b2 > /dev/null 2>&1 + popd + +# echo "Check [$ix] test result" + pushd ./bin.v2/libs/${ix}/test + for iy in `find . -name "*.output"`; + do + result=`cat $iy | grep "EXIT STATUS:" | awk '{print $3}'` + if [ $result -eq 0 ] + then + echo -e "${Green}PASS${Color_Off}: [$ix] [${iy##*/}]" + echo "TEST: PASS: [$ix] [${iy##*/}]" >> ${TEST_LOG} + else + echo -e "${Red}FAIL${Color_Off}: [$ix] [${iy##*/}]" + echo "TEST: FAIL: [$ix] [${iy##*/}]" >> ${TEST_LOG} + fi + done + popd +done + + +TOTAL_CNT=`grep "TEST:" ${TEST_LOG} | wc -l` +PASS_CNT=`grep "PASS:" ${TEST_LOG} | wc -l` +FAIL_CNT=`grep "FAIL:" ${TEST_LOG} | wc -l` +SKIP_CNT=`grep "SKIP:" ${TEST_LOG} | wc -l` + + +br='==================='; br=$br$br$br$br; + +echo -e "${Green}$br ${Color_Off}" +echo -e "${Green}Testshite summary for Boost ${BOOST_VERSION}${Color_Off}" +echo -e "${Green}$br ${Color_Off}" +echo -e "#${BWhite} TOTAL: $TOTAL_CNT ${Color_Off}" +echo -e "#${Green} PASS${Color_Off} : $PASS_CNT" +echo -e "#${Red} FAIL${Color_Off} : $FAIL_CNT" +echo -e "#${Cyan} SKIP${Color_Off} : $SKIP_CNT" +echo -e "${Green}$br ${Color_Off}" + +rm -f ${TEST_LOG} +exit 0 + -- cgit v1.2.3