summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnas Nashif <anas.nashif@intel.com>2012-10-30 13:04:36 -0700
committerMyoungJune Park <mj2004.park@samsung.com>2016-04-07 11:45:09 +0900
commit0deb3b7a13d1892b84904b57bcdcfb92385d4700 (patch)
tree043bc4d98675221be8aad7ea423870c26f52599f
parent733b5d5ae2c5d625211e2985ac25728ac3f54883 (diff)
downloadboost-0deb3b7a13d1892b84904b57bcdcfb92385d4700.tar.gz
boost-0deb3b7a13d1892b84904b57bcdcfb92385d4700.tar.bz2
boost-0deb3b7a13d1892b84904b57bcdcfb92385d4700.zip
Bump to boost 1.58.0 (rebase)
Change-Id: I434ed719a1e7980af8df2109b3c5cea0b574fb61 Signed-off-by: MyoungJune Park <mj2004.park@samsung.com>
-rw-r--r--boost/config/compiler/gcc.hpp2
-rwxr-xr-xboost/iostreams/filter/regex.hpp2
-rw-r--r--boost/pool/pool.hpp38
-rw-r--r--libs/python/build/Jamfile.v21
-rw-r--r--libs/python/src/dict.cpp4
-rw-r--r--libs/python/src/list.cpp4
-rw-r--r--libs/python/src/long.cpp15
-rw-r--r--libs/python/src/object/class.cpp8
-rw-r--r--libs/python/src/str.cpp10
-rw-r--r--libs/python/src/tuple.cpp5
-rw-r--r--packaging/baselibs.conf18
-rw-r--r--packaging/boost-rpmlintrc14
-rw-r--r--packaging/boost.changes13
-rw-r--r--packaging/boost.manifest5
-rw-r--r--packaging/boost.pc11
-rw-r--r--packaging/boost.spec761
-rw-r--r--packaging/existing_extra_docs460
-rwxr-xr-xrun_test.sh68
18 files changed, 1407 insertions, 32 deletions
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<sizeof(size_type), sizeof(void *)>::value + sizeof(size_type);
+ size_type max_chunks = (std::numeric_limits<size_type>::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<UserAllocator>::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<UserAllocator>::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<UserAllocator>::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<UserAllocator>::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
-<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag
<tag>@$(__name__).tag
+ <cxxflags>-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<char*>("(O)"),
- arg_.ptr());
+ pun.pop, const_cast<char*>("(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<char*>("(O)"),
- arg_.ptr()));
+ pun.pop, const_cast<char*>("(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<char*>("(O)"),
- arg_.ptr());
+ pun.pop, const_cast<char*>("(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<char*>("(OO)"),
- arg_.ptr(), base.ptr());
+ pun.pop, const_cast<char*>("(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<char*>("()")))
)
-{}
+{
+ union { PyTypeObject *ptop; PyObject *pop; }pun = { &PyLong_Type };
+ object(detail::new_reference(
+ PyObject_CallFunction(pun.pop, const_cast<char*>("()"))));
+}
+
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<char*>("Osss"), fget.ptr(), 0, 0, docstr));
+ PyObject_CallFunction(pun.pop, const_cast<char*>("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<char*>("OOss"), fget.ptr(), fset.ptr(), 0, docstr));
+ PyObject_CallFunction(pun.pop, const_cast<char*>("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<char*>("(O)"),
- arg_.ptr());
+
+ return (detail::new_reference)PyObject_CallFunction(
+ pun.pop, const_cast<char*>("(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<char*>("(O)"),
- arg_.ptr());
+ pun.pop, const_cast<char*>("(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-<targettype>
+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 <anas.nashif@intel.com> submit/tizen/20130827.111941@86fbc3f
+- build with glibc 2.18
+
+* Tue Aug 27 2013 Anas Nashif <anas.nashif@intel.com> 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 <anas.nashif@intel.com> submit/trunk/20121229.051952@fffe0f9
+- use TIME_UTC_ instead of TIME_UTC
+
+* Fri Dec 28 2012 Anas Nashif <anas.nashif@intel.com> 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 @@
+<manifest>
+ <request>
+ <domain name="_"/>
+ </request>
+</manifest>
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
+