commit c3969a1a6c347b3e17c3dbd7da1bf5ff3eb2d451
Author: zyppe <210hcl@gmail.com>
Date:   Wed Feb 28 20:52:17 2024 +0800

    Initialize for boost-base

diff --git a/.boost-base.metadata b/.boost-base.metadata
new file mode 100644
index 0000000..c42183d
--- /dev/null
+++ b/.boost-base.metadata
@@ -0,0 +1,2 @@
+54950a14807fda3af0dc72d5180c4e33ac5a2e561de89fa782a247056cba9643 boost_1_56_pdf.tar.bz2
+19663b3972f9993402c5db32b3180d6ad91a89fd5bfe844cf5b15f1993ba24ea boost_1_66_0.tar.bz2
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..a01e8db
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+boost_1_56_pdf.tar.bz2
+boost_1_66_0.tar.bz2
diff --git a/README.boost-devel b/README.boost-devel
new file mode 100644
index 0000000..152efd4
--- /dev/null
+++ b/README.boost-devel
@@ -0,0 +1,4 @@
+boost-devel has been split up into individual packages for simpler
+product management. Please stop depending explicitly on boost-devel
+and depend on individual boost -devel packages
+
diff --git a/__init__.py b/__init__.py
new file mode 100644
index 0000000..fdffa2a
--- /dev/null
+++ b/__init__.py
@@ -0,0 +1 @@
+# placeholder
diff --git a/baselibs.conf b/baselibs.conf
new file mode 100644
index 0000000..b405349
--- /dev/null
+++ b/baselibs.conf
@@ -0,0 +1,26 @@
+libboost_atomic1_66_0
+libboost_container1_66_0
+libboost_context1_66_0
+libboost_coroutine1_66_0
+libboost_date_time1_66_0
+libboost_fiber1_66_0
+libboost_filesystem1_66_0
+libboost_graph1_66_0
+libboost_graph_parallel1_66_0
+libboost_iostreams1_66_0
+libboost_locale1_66_0
+libboost_math1_66_0
+libboost_mpi1_66_0
+libboost_test1_66_0
+libboost_program_options1_66_0
+libboost_python-py2_7-1_66_0
+libboost_python-py3-1_66_0
+libboost_random1_66_0
+libboost_serialization1_66_0
+libboost_signals1_66_0
+libboost_stacktrace1_66_0
+libboost_system1_66_0
+libboost_thread1_66_0
+libboost_type_erasure1_66_0
+libboost_wave1_66_0
+libboost_regex1_66_0
diff --git a/boost-1.55.0-python-test-PyImport_AppendInittab.patch b/boost-1.55.0-python-test-PyImport_AppendInittab.patch
new file mode 100644
index 0000000..b96121e
--- /dev/null
+++ b/boost-1.55.0-python-test-PyImport_AppendInittab.patch
@@ -0,0 +1,87 @@
+Index: boost_1_63_0/libs/python/test/exec.cpp
+===================================================================
+--- boost_1_63_0.orig/libs/python/test/exec.cpp
++++ boost_1_63_0/libs/python/test/exec.cpp
+@@ -56,8 +56,24 @@ void eval_test()
+   BOOST_TEST(value == "ABCDEFG");
+ }
+ 
++struct PyCtx
++{
++  PyCtx() {
++    Py_Initialize();
++  }
++
++  ~PyCtx() {
++    // N.B. certain problems may arise when Py_Finalize is called when
++    // using Boost.Python.  However in this test suite it all seems to
++    // work fine.
++    Py_Finalize();
++  }
++};
++
+ void exec_test()
+ {
++  PyCtx ctx;
++
+   // Retrieve the main module
+   python::object main = python::import("__main__");
+   
+@@ -138,6 +154,19 @@ void check_pyerr(bool pyerr_expected=fal
+   }
+ }
+ 
++template <class Cb>
++bool
++run_and_handle_exception(Cb cb, bool pyerr_expected = false)
++{
++  PyCtx ctx;
++  if (python::handle_exception(cb)) {
++    check_pyerr(pyerr_expected);
++    return true;
++  } else {
++    return false;
++  }
++}
++
+ int main(int argc, char **argv)
+ {
+   BOOST_TEST(argc == 2 || argc == 3);
+@@ -156,29 +185,19 @@ int main(int argc, char **argv)
+                  "builtin modules");
+   }
+ 
+-  // Initialize the interpreter
+-  Py_Initialize();
+-
+-  if (python::handle_exception(eval_test)) {
++   // N.B. exec_test mustn't be called through run_and_handle_exception
++  // as it needs to handles the python context by itself.
++  if (run_and_handle_exception(eval_test)
++      || python::handle_exception(exec_test))
+     check_pyerr();
+-  }
+-  else if(python::handle_exception(exec_test)) {
+-    check_pyerr();
+-  }
+-  else if (python::handle_exception(boost::bind(exec_file_test, script))) {
+-    check_pyerr();
+-  }
+-  
+-  if (python::handle_exception(exec_test_error))
+-  {
+-    check_pyerr(/*pyerr_expected*/ true);
+-  }
+   else
+-  {
++    run_and_handle_exception(boost::bind(exec_file_test, script));
++
++  if (!run_and_handle_exception(exec_test_error, true))
+     BOOST_ERROR("Python exception expected, but not seen.");
+-  }
+ 
+   if (argc > 2) {
++    PyCtx ctx;
+     // The main purpose is to test compilation. Since this test generates
+     // a file and I (rwgk) am uncertain about the side-effects, run it only
+     // if explicitly requested.
diff --git a/boost-1.57.0-python-abi_letters.patch b/boost-1.57.0-python-abi_letters.patch
new file mode 100644
index 0000000..a11c20f
--- /dev/null
+++ b/boost-1.57.0-python-abi_letters.patch
@@ -0,0 +1,64 @@
+Index: boost_1_65_0/tools/build/src/tools/python.jam
+===================================================================
+--- boost_1_65_0.orig/tools/build/src/tools/python.jam
++++ boost_1_65_0/tools/build/src/tools/python.jam
+@@ -99,7 +99,7 @@ py3-version = ;
+ #   using python : 2.3 : /usr/local/bin/python ;
+ #
+ rule init ( version ? : cmd-or-prefix ? : includes * : libraries ?
+-    : condition * : extension-suffix ? )
++    : condition * : extension-suffix ? : abi-letters ? )
+ {
+     project.push-current $(.project) ;
+ 
+@@ -112,7 +112,7 @@ rule init ( version ? : cmd-or-prefix ?
+         }
+     }
+ 
+-    configure $(version) : $(cmd-or-prefix) : $(includes) : $(libraries) : $(condition) : $(extension-suffix) ;
++    configure $(version) : $(cmd-or-prefix) : $(includes) : $(libraries) : $(condition) : $(extension-suffix) : $(abi-letters) ;
+ 
+     project.pop-current ;
+ }
+@@ -659,7 +659,7 @@ local rule system-library-dependencies (
+ 
+ # Declare a target to represent Python's library.
+ #
+-local rule declare-libpython-target ( version ? : requirements * )
++local rule declare-libpython-target ( version ? : requirements * : abi-letters ? )
+ {
+     # Compute the representation of Python version in the name of Python's
+     # library file.
+@@ -683,13 +683,13 @@ local rule declare-libpython-target ( ve
+     }
+ 
+     # Declare it.
+-    lib python.lib : : <name>python$(lib-version) $(requirements) ;
++    lib python.lib : : <name>python$(lib-version)$(abi-letters) $(requirements) ;
+ }
+ 
+ 
+ # Implementation of init.
+ local rule configure ( version ? : cmd-or-prefix ? : includes * : libraries ? :
+-    condition * : extension-suffix ? )
++    condition * : extension-suffix ? : abi-letters ? )
+ {
+     local prefix ;
+     local exec-prefix ;
+@@ -705,6 +705,7 @@ local rule configure ( version ? : cmd-o
+         extension-suffix ?= _d ;
+     }
+     extension-suffix ?= "" ;
++    abi-letters ?= "" ;
+ 
+     local cmds-to-try ;
+ 
+@@ -968,7 +969,7 @@ local rule configure ( version ? : cmd-o
+     }
+     else
+     {
+-        declare-libpython-target $(version) : $(target-requirements) ;
++        declare-libpython-target $(version) : $(target-requirements) : $(abi-letters) ;
+ 
+         # This is an evil hack.  On, Windows, when Python is embedded, nothing
+         # seems to set up sys.path to include Python's standard library
diff --git a/boost-1.57.0-python-libpython_dep.patch b/boost-1.57.0-python-libpython_dep.patch
new file mode 100644
index 0000000..57bfc26
--- /dev/null
+++ b/boost-1.57.0-python-libpython_dep.patch
@@ -0,0 +1,13 @@
+Index: boost_1_57_0/tools/build/src/tools/python.jam
+===================================================================
+--- boost_1_57_0/tools/build/src/tools/python.jam	(revision 50406)
++++ boost_1_57_0/tools/build/src/tools/python.jam	(working copy)
+@@ -994,7 +994,7 @@
+     else
+     {
+         alias python_for_extensions
+-            :
++            : python
+             : $(target-requirements)
+             :
+             : $(usage-requirements)
diff --git a/boost-aarch64-flags.patch b/boost-aarch64-flags.patch
new file mode 100644
index 0000000..01b3dae
--- /dev/null
+++ b/boost-aarch64-flags.patch
@@ -0,0 +1,15 @@
+Index: boost_1_58_0/tools/build/src/tools/gcc.jam
+===================================================================
+--- boost_1_58_0.orig/tools/build/src/tools/gcc.jam
++++ boost_1_58_0/tools/build/src/tools/gcc.jam
+@@ -457,10 +457,6 @@ rule setup-address-model ( targets * : s
+                 {
+                     option = -m32 ;
+                 }
+-                else if $(model) = 64
+-                {
+-                    option = -m64 ;
+-                }
+             }
+             # For darwin, the model can be 32_64. darwin.jam will handle that
+             # on its own.
diff --git a/boost-disable-pch-on-aarch64.patch b/boost-disable-pch-on-aarch64.patch
new file mode 100644
index 0000000..14854b1
--- /dev/null
+++ b/boost-disable-pch-on-aarch64.patch
@@ -0,0 +1,75 @@
+diff -urEbwB boost_1_60_0.orig/libs/math/build/Jamfile.v2 boost_1_60_0/libs/math/build/Jamfile.v2
+--- boost_1_60_0.orig/libs/math/build/Jamfile.v2	2015-12-23 17:26:17.352006018 +0100
++++ boost_1_60_0/libs/math/build/Jamfile.v2	2015-12-23 20:41:51.707246969 +0100
+@@ -4,23 +4,17 @@
+ # http://www.boost.org/LICENSE_1_0.txt.
+ 
+ import testing ;
+-import pch ;
+ 
+ project  
+     : requirements 
+       <toolset>intel-win:<cxxflags>-nologo 
+       <toolset>intel-win:<linkflags>-nologo 
+-      #<toolset>intel-linux:<pch>off
+-      <toolset>intel-darwin:<pch>off
+-      <toolset>msvc-7.1:<pch>off
+-      <toolset>gcc,<target-os>windows:<pch>off
+       #<toolset>gcc:<cxxflags>-fvisibility=hidden
+       <toolset>intel-linux:<cxxflags>-fvisibility=hidden
+       #<toolset>sun:<cxxflags>-xldscope=hidden
+       [ check-target-builds ../config//has_gcc_visibility "gcc visibility" : <toolset>gcc:<cxxflags>-fvisibility=hidden : ]
+     ;
+ 
+-cpp-pch pch : ../src/tr1/pch.hpp : <include>../src/tr1 <link>shared:<define>BOOST_MATH_TR1_DYN_LINK=1 ; 
+ 
+ C99_SOURCES = acosh
+ asinh
+@@ -80,19 +74,19 @@
+ explicit long_double_check ;
+         
+ # Library targets
+-lib boost_math_tr1 : ../src/tr1/$(TR1_SOURCES).cpp pch
++lib boost_math_tr1 : ../src/tr1/$(TR1_SOURCES).cpp
+     :         
+          <link>shared:<define>BOOST_MATH_TR1_DYN_LINK=1
+          <include>../src/tr1
+    ;
+ 
+-lib boost_math_tr1f : ../src/tr1/$(TR1_SOURCES)f.cpp pch
++lib boost_math_tr1f : ../src/tr1/$(TR1_SOURCES)f.cpp
+     :         
+          <link>shared:<define>BOOST_MATH_TR1_DYN_LINK=1
+          <include>../src/tr1
+    ;
+ 
+-lib boost_math_tr1l : ../src/tr1/$(TR1_SOURCES)l.cpp pch
++lib boost_math_tr1l : ../src/tr1/$(TR1_SOURCES)l.cpp
+     :         
+          <link>shared:<define>BOOST_MATH_TR1_DYN_LINK=1
+          <dependency>../config//has_long_double_support
+@@ -100,19 +94,19 @@
+          [ check-target-builds ../config//has_long_double_support "long double support" : : <build>no ]
+    ;
+ 
+-lib boost_math_c99 : ../src/tr1/$(C99_SOURCES).cpp pch
++lib boost_math_c99 : ../src/tr1/$(C99_SOURCES).cpp
+     :         
+          <link>shared:<define>BOOST_MATH_TR1_DYN_LINK=1
+          <include>../src/tr1
+    ;
+ 
+-lib boost_math_c99f : ../src/tr1/$(C99_SOURCES)f.cpp pch
++lib boost_math_c99f : ../src/tr1/$(C99_SOURCES)f.cpp
+     :         
+          <link>shared:<define>BOOST_MATH_TR1_DYN_LINK=1
+          <include>../src/tr1
+    ;
+ 
+-lib boost_math_c99l : ../src/tr1/$(C99_SOURCES)l.cpp pch
++lib boost_math_c99l : ../src/tr1/$(C99_SOURCES)l.cpp
+     :         
+          <link>shared:<define>BOOST_MATH_TR1_DYN_LINK=1
+          <dependency>../config//has_long_double_support
+Only in boost_1_60_0/libs/math/build: Jamfile.v2.orig
+Only in boost_1_60_0/libs/math/build: Jamfile.v2.rej
diff --git a/boost-no_segfault_in_Regex_filter.patch b/boost-no_segfault_in_Regex_filter.patch
new file mode 100644
index 0000000..ee7758e
--- /dev/null
+++ b/boost-no_segfault_in_Regex_filter.patch
@@ -0,0 +1,11 @@
+--- boost/iostreams/filter/regex.hpp
++++ boost/iostreams/filter/regex.hpp
+@@ -58,7 +58,7 @@
+                 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-no_type_punning.patch b/boost-no_type_punning.patch
new file mode 100644
index 0000000..57c632b
--- /dev/null
+++ b/boost-no_type_punning.patch
@@ -0,0 +1,144 @@
+Index: libs/python/src/dict.cpp
+===================================================================
+--- libs/python/src/dict.cpp.orig	2009-10-14 00:37:59.000000000 +0200
++++ libs/python/src/dict.cpp	2012-03-13 17:20:34.286172759 +0100
+@@ -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()
+Index: libs/python/src/list.cpp
+===================================================================
+--- libs/python/src/list.cpp.orig	2009-10-14 00:37:59.000000000 +0200
++++ libs/python/src/list.cpp	2012-03-13 17:20:34.286172759 +0100
+@@ -10,11 +10,11 @@ namespace boost { namespace python { nam
+ 
+ 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()
+Index: libs/python/src/long.cpp
+===================================================================
+--- libs/python/src/long.cpp.orig	2009-08-17 23:01:18.000000000 +0200
++++ libs/python/src/long.cpp	2012-03-13 17:20:34.287172735 +0100
+@@ -8,16 +8,16 @@ namespace boost { namespace python { nam
+ 
+ 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))
+Index: libs/python/src/object/class.cpp
+===================================================================
+--- libs/python/src/object/class.cpp.orig	2011-06-07 06:15:33.000000000 +0200
++++ libs/python/src/object/class.cpp	2012-03-13 17:20:34.287172735 +0100
+@@ -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);
+   }
+Index: libs/python/src/str.cpp
+===================================================================
+--- libs/python/src/str.cpp.orig	2009-10-14 00:37:59.000000000 +0200
++++ libs/python/src/str.cpp	2012-03-13 17:20:34.287172735 +0100
+@@ -9,14 +9,14 @@ namespace boost { namespace python { nam
+ 
+ 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()
+Index: libs/python/src/tuple.cpp
+===================================================================
+--- libs/python/src/tuple.cpp.orig	2009-08-17 23:01:18.000000000 +0200
++++ libs/python/src/tuple.cpp	2012-03-13 17:20:34.287172735 +0100
+@@ -8,9 +8,10 @@ namespace boost { namespace python { nam
+ 
+ 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/boost-pool_check_overflow.patch b/boost-pool_check_overflow.patch
new file mode 100644
index 0000000..9b4a33e
--- /dev/null
+++ b/boost-pool_check_overflow.patch
@@ -0,0 +1,36 @@
+Upstream URL: https://svn.boost.org/trac/boost/ticket/6701
+
+Check that request size doesn't overflow.
+
+Index: boost/pool/pool.hpp
+===================================================================
+--- boost/pool/pool.hpp.orig	2007-11-25 19:07:19.000000000 +0100
++++ boost/pool/pool.hpp	2012-06-22 13:03:49.422438613 +0200
+@@ -10,6 +10,8 @@
+ #define BOOST_POOL_HPP
+ 
+ #include <boost/config.hpp>  // for workarounds
++// std::numeric_limits
++#include <boost/limits.hpp>
+ 
+ // std::less, std::less_equal, std::greater
+ #include <functional>
+@@ -793,6 +793,9 @@ void * pool<UserAllocator>::ordered_mall
+   //! \returns Address of chunk n if allocated ok.
+   //! \returns 0 if not enough memory for n chunks.
+ 
++  if (requested_size && (n > (std::numeric_limits<size_type>::max)() / requested_size))
++    return 0;
++
+   const size_type partition_size = alloc_size();
+   const size_type total_req_size = n * requested_size;
+   const size_type num_chunks = total_req_size / partition_size +
+@@ -975,6 +979,8 @@
+   {
+      if(max_alloc_size && (n > max_alloc_size))
+         return 0;
++     if(chunk_size && (n > (std::numeric_limits<size_type>::max)() / chunk_size))
++        return 0;
+      void* ret = (user_allocator::malloc)(chunk_size * n);
+      used_list.insert(ret);
+      return ret;
diff --git a/boost-rpmlintrc b/boost-rpmlintrc
new file mode 100644
index 0000000..0f4dc07
--- /dev/null
+++ b/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/boost-rpmoptflags-only.patch b/boost-rpmoptflags-only.patch
new file mode 100644
index 0000000..76e58a5
--- /dev/null
+++ b/boost-rpmoptflags-only.patch
@@ -0,0 +1,51 @@
+Index: tools/build/src/tools/gcc.jam
+===================================================================
+--- tools/build/src/tools/gcc.jam.orig
++++ tools/build/src/tools/gcc.jam
+@@ -603,7 +603,7 @@ rule compile.fortran ( targets * : sourc
+ 
+ actions compile.c++ bind PCH_FILE
+ {
+-    "$(CONFIG_COMMAND)" $(LANG) -ftemplate-depth-$(TEMPLATE_DEPTH) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" -c -o "$(<:W)" "$(>:W)"
++    "$(CONFIG_COMMAND)" $(LANG) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" -c -o "$(<:W)" "$(>:W)"
+ }
+ 
+ actions compile.c bind PCH_FILE
+@@ -613,7 +613,7 @@ actions compile.c bind PCH_FILE
+ 
+ actions compile.c++.preprocess bind PCH_FILE
+ {
+-    "$(CONFIG_COMMAND)" $(LANG) -ftemplate-depth-$(TEMPLATE_DEPTH) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" "$(>:W)" -E >"$(<:W)"
++    "$(CONFIG_COMMAND)" $(LANG) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" "$(>:W)" -E >"$(<:W)"
+ }
+ 
+ actions compile.c.preprocess bind PCH_FILE
+@@ -755,17 +755,17 @@ actions compile.c.pch
+ ###
+ 
+ # Declare flags and action for compilation.
+-toolset.flags gcc.compile OPTIONS <optimization>off   : -O0 ;
+-toolset.flags gcc.compile OPTIONS <optimization>speed : -O3 ;
+-toolset.flags gcc.compile OPTIONS <optimization>space : -Os ;
+-
+-toolset.flags gcc.compile OPTIONS <inlining>off  : -fno-inline ;
+-toolset.flags gcc.compile OPTIONS <inlining>on   : -Wno-inline ;
+-toolset.flags gcc.compile OPTIONS <inlining>full : -finline-functions -Wno-inline ;
+-
+-toolset.flags gcc.compile OPTIONS <warnings>off : -w ;
+-toolset.flags gcc.compile OPTIONS <warnings>on  : -Wall ;
+-toolset.flags gcc.compile OPTIONS <warnings>all : -Wall -pedantic ;
++toolset.flags gcc.compile OPTIONS <optimization>off   :  ;
++toolset.flags gcc.compile OPTIONS <optimization>speed :  ;
++toolset.flags gcc.compile OPTIONS <optimization>space :  ;
++
++toolset.flags gcc.compile OPTIONS <inlining>off  :  ;
++toolset.flags gcc.compile OPTIONS <inlining>on   :  ;
++toolset.flags gcc.compile OPTIONS <inlining>full :  ;
++
++toolset.flags gcc.compile OPTIONS <warnings>off :  ;
++toolset.flags gcc.compile OPTIONS <warnings>on  :  ;
++toolset.flags gcc.compile OPTIONS <warnings>all :  ;
+ toolset.flags gcc.compile OPTIONS <warnings-as-errors>on : -Werror ;
+ 
+ toolset.flags gcc.compile OPTIONS <debug-symbols>on : -g ;
diff --git a/boost-strict_aliasing.patch b/boost-strict_aliasing.patch
new file mode 100644
index 0000000..4e742af
--- /dev/null
+++ b/boost-strict_aliasing.patch
@@ -0,0 +1,12 @@
+Index: libs/python/build/Jamfile
+===================================================================
+--- libs/python/build/Jamfile.orig
++++ libs/python/build/Jamfile
+@@ -110,6 +110,7 @@ rule lib_boost_python ( version )
+ 
+             -<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag
+             <tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).python-tag
++             <cxxflags>-fno-strict-aliasing
+ 
+             <conditional>@python.require-py
+ 
diff --git a/boost-thread.patch b/boost-thread.patch
new file mode 100644
index 0000000..80829eb
--- /dev/null
+++ b/boost-thread.patch
@@ -0,0 +1,13 @@
+Index: boost_1_58_0/boost/config/compiler/gcc.hpp
+===================================================================
+--- boost_1_58_0.orig/boost/config/compiler/gcc.hpp
++++ boost_1_58_0/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-use_std_xml_catalog.patch b/boost-use_std_xml_catalog.patch
new file mode 100644
index 0000000..fa9f1d8
--- /dev/null
+++ b/boost-use_std_xml_catalog.patch
@@ -0,0 +1,46 @@
+Index: boost_1_56_0/tools/build/src/tools/boostbook.jam
+===================================================================
+--- boost_1_56_0.orig/tools/build/src/tools/boostbook.jam
++++ boost_1_56_0/tools/build/src/tools/boostbook.jam
+@@ -548,40 +548,7 @@ rule generate-xml-catalog ( target : sou
+         "  <rewriteURI uriStartString=\"http://www.boost.org/tools/boostbook/dtd/\" rewritePrefix=\"file://$(boostbook-dtd-dir)/\"/>"
+         : true ;
+ 
+-    local docbook-xsl-dir = [ boostbook.docbook-xsl-dir ] ;
+-    if ! $(docbook-xsl-dir)
+-    {
+-        ECHO "BoostBook warning: no DocBook XSL directory specified." ;
+-        ECHO "  If you have the DocBook XSL stylesheets installed, please " ;
+-        ECHO "  set DOCBOOK_XSL_DIR to the stylesheet directory on either " ;
+-        ECHO "  the command line (via -sDOCBOOK_XSL_DIR=...) or in a " ;
+-        ECHO "  Boost.Jam configuration file. The DocBook XSL stylesheets " ;
+-        ECHO "  are available here: http://docbook.sourceforge.net/ " ;
+-        ECHO "  Stylesheets will be downloaded on-the-fly (very slow!) " ;
+-    }
+-    else
+-    {
+-        docbook-xsl-dir = [ format-catalog-path $(docbook-xsl-dir) ] ;
+-        print.text "  <rewriteURI uriStartString=\"http://docbook.sourceforge.net/release/xsl/current/\" rewritePrefix=\"file://$(docbook-xsl-dir)/\"/>" ;
+-    }
+-
+-    local docbook-dtd-dir = [ boostbook.docbook-dtd-dir ] ;
+-    if ! $(docbook-dtd-dir)
+-    {
+-        ECHO "BoostBook warning: no DocBook DTD directory specified." ;
+-        ECHO "  If you have the DocBook DTD installed, please set " ;
+-        ECHO "  DOCBOOK_DTD_DIR to the DTD directory on either " ;
+-        ECHO "  the command line (via -sDOCBOOK_DTD_DIR=...) or in a " ;
+-        ECHO "  Boost.Jam configuration file. The DocBook DTD is available " ;
+-        ECHO "  here: http://www.oasis-open.org/docbook/xml/4.2/index.shtml" ;
+-        ECHO "  The DTD will be downloaded on-the-fly (very slow!) " ;
+-    }
+-    else
+-    {
+-        docbook-dtd-dir = [ format-catalog-path $(docbook-dtd-dir) ] ;
+-        print.text "  <rewriteURI uriStartString=\"http://www.oasis-open.org/docbook/xml/4.2/\" rewritePrefix=\"file://$(docbook-dtd-dir)/\"/>" ;
+-    }
+-
++    print.text " <nextCatalog catalog=\"file:///etc/xml/catalog\"/> " ;
+     print.text "</catalog>" ;
+ }
+ 
diff --git a/boost-visibility.patch b/boost-visibility.patch
new file mode 100644
index 0000000..61dbf7e
--- /dev/null
+++ b/boost-visibility.patch
@@ -0,0 +1,110 @@
+---
+ boost/archive/impl/basic_xml_grammar.hpp     |   16 ++++++++--------
+ libs/serialization/src/basic_xml_grammar.ipp |   14 +++++++-------
+ 2 files changed, 15 insertions(+), 15 deletions(-)
+
+Index: boost/archive/impl/basic_xml_grammar.hpp
+===================================================================
+--- boost/archive/impl/basic_xml_grammar.hpp.orig
++++ boost/archive/impl/basic_xml_grammar.hpp
+@@ -135,7 +135,7 @@ private:
+         Sch,
+         NameChar;
+ 
+-    void init_chset();
++    BOOST_SYMBOL_VISIBLE void init_chset();
+ 
+     bool my_parse(
+         IStream & is,
+@@ -143,7 +143,7 @@ private:
+         const CharType delimiter = L'>'
+     ) const ;
+ public:
+-    struct return_values {
++    BOOST_SYMBOL_VISIBLE struct return_values {
+         StringType object_name;
+         StringType contents;
+         //class_id_type class_id;
+@@ -159,12 +159,12 @@ public:
+             tracking_level(false)
+         {}
+     } rv;
+-    bool parse_start_tag(IStream & is) /*const*/;
+-    bool parse_end_tag(IStream & is) const;
+-    bool parse_string(IStream & is, StringType & s) /*const*/;
+-    void init(IStream & is);
+-    bool windup(IStream & is);
+-    basic_xml_grammar();
++    BOOST_SYMBOL_VISIBLE bool parse_start_tag(IStream & is) /*const*/;
++    BOOST_SYMBOL_VISIBLE bool parse_end_tag(IStream & is) const;
++    BOOST_SYMBOL_VISIBLE bool parse_string(IStream & is, StringType & s) /*const*/;
++    BOOST_SYMBOL_VISIBLE void init(IStream & is);
++    BOOST_SYMBOL_VISIBLE bool windup(IStream & is);
++    BOOST_SYMBOL_VISIBLE basic_xml_grammar();
+ };
+ 
+ } // namespace archive
+Index: libs/serialization/src/basic_xml_grammar.ipp
+===================================================================
+--- libs/serialization/src/basic_xml_grammar.ipp.orig
++++ libs/serialization/src/basic_xml_grammar.ipp
+@@ -173,7 +173,7 @@ struct append_lit {
+ } // namespace anonymous
+ 
+ template<class CharType>
+-bool basic_xml_grammar<CharType>::my_parse(
++BOOST_SYMBOL_VISIBLE bool basic_xml_grammar<CharType>::my_parse(
+     typename basic_xml_grammar<CharType>::IStream & is,
+     const rule_t & rule_,
+     CharType delimiter
+@@ -209,7 +209,7 @@ bool basic_xml_grammar<CharType>::my_par
+ }
+ 
+ template<class CharType>
+-bool basic_xml_grammar<CharType>::parse_start_tag(
++BOOST_SYMBOL_VISIBLE bool basic_xml_grammar<CharType>::parse_start_tag(
+     typename basic_xml_grammar<CharType>::IStream & is
+ ){
+     rv.class_name.resize(0);
+@@ -217,12 +217,12 @@ bool basic_xml_grammar<CharType>::parse_
+ }
+ 
+ template<class CharType>
+-bool basic_xml_grammar<CharType>::parse_end_tag(IStream & is) const {
++BOOST_SYMBOL_VISIBLE bool basic_xml_grammar<CharType>::parse_end_tag(IStream & is) const {
+     return my_parse(is, ETag);
+ }
+ 
+ template<class CharType>
+-bool basic_xml_grammar<CharType>::parse_string(IStream & is, StringType & s){
++BOOST_SYMBOL_VISIBLE bool basic_xml_grammar<CharType>::parse_string(IStream & is, StringType & s){
+     rv.contents.resize(0);
+     bool result = my_parse(is, content, '<');
+     // note: unget caused a problem with dinkumware.  replace with
+@@ -235,7 +235,7 @@ bool basic_xml_grammar<CharType>::parse_
+ }
+ 
+ template<class CharType>
+-basic_xml_grammar<CharType>::basic_xml_grammar(){
++BOOST_SYMBOL_VISIBLE basic_xml_grammar<CharType>::basic_xml_grammar(){
+     init_chset();
+ 
+     S =
+@@ -432,7 +432,7 @@ basic_xml_grammar<CharType>::basic_xml_g
+ }
+ 
+ template<class CharType>
+-void basic_xml_grammar<CharType>::init(IStream & is){
++BOOST_SYMBOL_VISIBLE void basic_xml_grammar<CharType>::init(IStream & is){
+     init_chset();
+     if(! my_parse(is, XMLDecl))
+         boost::serialization::throw_exception(
+@@ -453,7 +453,7 @@ void basic_xml_grammar<CharType>::init(I
+ }
+ 
+ template<class CharType>
+-bool basic_xml_grammar<CharType>::windup(IStream & is) {
++BOOST_SYMBOL_VISIBLE bool basic_xml_grammar<CharType>::windup(IStream & is) {
+     return my_parse(is, ETag);
+ }
+ 
diff --git a/boost.changes b/boost.changes
new file mode 100644
index 0000000..b0b2325
--- /dev/null
+++ b/boost.changes
@@ -0,0 +1,1332 @@
+* Mon Jan 10 2022 adam.majer@suse.de
+- variant.patch: backport fix allowing perfect forwarding in
+  apply_visitor. Also fix wrong usage of boost::move (bsc#1194522)
+* Thu Mar 19 2020 adam.majer@suse.de
+- libreoffice_compat_backports.patch: add a backport of
+  Boost.Optional::has_value() for LibreOffice
+* Wed Apr  4 2018 kukuk@suse.de
+- Use %%license instead of %%doc [bsc#1082318]
+* Fri Jan 19 2018 adam.majer@suse.de
+- Multibuild requires versioned Name: tag and doesn't seem to do
+  this automatically. (bnc#1076640)
+* Mon Dec 18 2017 adam.majer@suse.de
+- Update to version 1.66.0
+  + Beast: new portable HTTP, WebSocket and network operations
+    using Boost.Asio. Header-only library.
+  + Callable Traits: new library and successor to
+    Boost.FunctionTypes. Header-only library.
+  + Mp11: new metaprogramming library
+  + Asio:
+  * implemented interface changes to reflect the Networking TS
+    (N4656)
+  * functions and classes that have been superseded by
+    Networking TS functionality have been deprecated.
+  * added support for customized handler tracking
+  * removed previously deprecated functions
+  + Atomic: improved compatibility with GCC 7. 128-bit operations
+    on x86_64 no longer require linking with compiled library.
+  + DateTime: Fixed an integral overflow that could cause incorrect
+    results when adding or subtracting many years from a date.
+  + Format: New format specifiers added and volatile arguments
+    can not be safely used with operator%%
+  + Fusion:
+  * fix compile error with std::array
+  * remove circular preprocessor include
+  + PolyCollection: backported to GCC 4.8 and 4.9 with some
+    limitations
+  + Uuid: added RTF-4122 namespaces in boost::uuids::ns
+  + for complete changelog, see
+    http://www.boost.org/users/history/version_1_66_0.html
+- refreshed patches: boost-rpmoptflags-only.patch
+* Wed Nov 29 2017 adam.majer@suse.de
+- re-enable Python 2 by default. It's still conditional, but
+  remains enabled by default. This can be disabled in project
+  config.
+* Tue Oct 24 2017 jmatejek@suse.com
+- build Python 2 conditionally
+* Tue Oct 10 2017 adam.majer@suse.de
+- Use multibuild setup - build no-dependency libraries in the
+  base package and build the rest of the compiled libraries in
+  the main variant. This should speed up bootstrapping.
+- boost-devel not built by default anymore.
+- libboost_headers-devel now provides boost-devel for legacy
+  dependencies. If you need compiled boost libraries depend on
+  the current compiled devel subpackage.
+- run %%fdupes only on the header files and documentation
+- drop build dependencies on gcc-fortran, chrpath.
+* Mon Oct  9 2017 nmoreychaisemartin@suse.com
+- Setup MPI environment prior to building boost.
+- Switch to OpenMPI2 as OpenMPI1 is becoming deprecated.
+* Wed Sep 20 2017 adam.majer@suse.de
+- New upstream version 1.65.1
+  + config, fiber - Return a continuation from functions executed
+    by resume_with.
+  + stacktrace - Change preprocessor file extensions to work with
+    the installation system.
+- Changes in version 1.65.0
+  + stacktrace - new library providing call sequence in human
+    readable format.
+  + polycollection - new library providing fast containers of
+    polymorphic objects, from Joaquín M López Muñoz.
+  + For full list of changes, see
+    http://www.boost.org/users/history/version_1_65_1.html
+- 1d862615.patch: upstreamed and removed
+- gcc_path.patch: obsolete, tr1 module is removed
+- mpi_upstream.patch: upstreamed and removed
+- boost-1.57.0-python-abi_letters.patch: refreshed
+- python_library_name.patch: refreshed and reverted upstream
+  changes to mpi/build/Jamfile as we are building python2 and
+  python3 versions of MPI separately.
+- baselibs.conf
+  + add libboost_stracktrace
+  + update to version 1.65.1
+* Tue May  9 2017 adam.majer@suse.de
+- 1d862615.patch: Fix regression caused by refactoring of
+  serialization code (bnc#1038083)
+* Mon May  8 2017 adam.majer@suse.de
+- make python-numpy optional build dependency
+- fix building of mpi python3 plugin
+* Thu Apr 20 2017 adam.majer@suse.de
+- New upstream version 1.64.0
+  + process - new library providing cross platform methods to
+  - create child processes
+  - setup stream for child processes
+  - sync and async communication streams with children
+  - sync and async wait
+  - process termination
+  + geometry library had some breaking changes,
+  - ublas_transformer is renamed to matrix_transformer
+  - explicit modifier is added to constructors of rtree
+    index::dynamic_* parameters
+  - strategy::area::huiller replaced by strategy::area::spherical
+  + context library updates
+  - deprecated API:execution-context
+  - fixed bad assembly for fcontext on ppc64/sysv/elf
+  + Updated libraries: any, atomic, config, container, context,
+    conversion, core, coroutine2, fiber, hash, interprocess,
+    intrusive, lexicalcast, math, multi-index containers,
+    multiprecision, predef, program options, regex, smart pointers,
+    test ,typeindex, typetraits, unordered, variant
+  + for details, see
+    http://www.boost.org/users/history/version_1_64_0.html
+- Build PyNumpy module
+  + add build requires on python-numpy
+- test_lowcase.patch: upstreamed
+- refreshed patches: boost-strict_aliasing.patch, gcc_path.patch,
+  python_mpi.patch
+- mpi_upstream.patch: pending upstream fixes to OpenMPI build
+- python_library_name.patch: we are building python versions in
+  different stagings so drop library renames.
+- python_numpy_retfunc.patch: rpmlint fixes
+* Fri Feb 10 2017 jmatejek@suse.com
+- update python macros
+* Fri Feb  3 2017 adam.majer@suse.de
+- baselibs.conf: (re)add python 2.7 and 3.x libraries
+* Wed Jan 25 2017 adam.majer@suse.de
+- Fix dependency typos.
+* Tue Jan 17 2017 adam.majer@suse.de
+- test_lowcase.patch: downcase Boost::Test usage of uppercase
+  variables. VERSION was clashing with GNU Autotools define
+  resulting in compilation errors of various packages.
+- recombine headers from various devel subpackages under the
+  libboost_headers-devel package. Not all usage of headers that
+  have compiled parts pull in their associated compiled symbols.
+- general cleanup of the spec file from old, commented stuffs
+* Sun Jan 15 2017 adam.majer@suse.de
+- remove non-existent dependency in the boost mpi python package
+* Wed Jan  4 2017 adam.majer@suse.de
+- update to version 1.63.0
+  * updated libraries: atomic, container, context, fiber,
+    fusion, geometry, hash, interprocess, intrusive, lexical cast,
+    log, metaparse, move, optional, phoenix, python, test,
+    typeindex, units, unordered
+  * see http://www.boost.org/users/history/version_1_63_0.html
+    for complete list of changes
+- refresh patches
+  * boost-1.55.0-python-test-PyImport_AppendInittab.patch
+  * boost-strict_aliasing.patch, and enable -fno-strict-aliasing
+    for python module
+- baselibs.conf:
+  * add libboost_locale
+  * rename python to include new soname
+- remove python-2059618.patch, not needed
+- make build condition --without buil_mpi work
+- allow building without python3 bindings, for SLE11SP4
+- remove versioned build dependency on libicu-devel, apparently
+  not needed.
+- split out the boost-devel package into individudal compiled
+  libraries and their -devel subpackages and libboost_headers-devel
+  package for header-only libraries.
+- remove all the -mt.so symlinks, probably not needed anymore.
+- ship MPI python bindings for both Python 2.7 and 3.x
+  * add python_mpi.patch to allow proper compiled library loading
+- dynamic_linking.patch: first attempt to remove static library
+  generation during build process.
+* Tue Nov  8 2016 adam.majer@suse.de
+- Revert upstream change that set default python version and
+  ignored user configuration.
+  python-2059618.patch (boo#1006584)
+* Thu Nov  3 2016 jengelh@inai.de
+- Rectify groups and description
+* Fri Sep 30 2016 adam.majer@suse.de
+- package boost-jam
+- add missing ldconfig for libboost_type_erasure
+- fix EOL encoding for documentation files
+* Thu Sep 29 2016 adam.majer@suse.de
+- update to version 1.62.0
+  * new library: fiber: framework for userland-threads/fibers
+  * new library: QVM: library for working with quaternions,
+    vectors and matrices of static size
+  * see http://www.boost.org/users/history/version_1_62_0.html
+    for complete changelog
+- remove boost-fix_include_config.patch - upstreamed
+- gcc_path.patch - fix GCC search paths (bnc#996917)
+  Boost assumes /usr/include/c++/x.y.z/ existence for GCC 4.x
+  onward while our version of GCC only has /usr/include/c++/x.y
+  for 4.x GCC and /usr/include/c++/x/ for 5.x onward.
+- migrate to using %%bcond_ instead of hardcoding macros
+  for different Boost features
+- better way to limit max number of compilation units than
+  by reading /proc/meminfo and guesstimating.
+* Thu Aug 18 2016 mvetter@suse.com
+- Fix boo#994378, boo#994381, boo#994382 boo#994383:
+  Fix build issues when optional_fwd.hpp is used before
+  including boost/config.hpp
+- Add boost-fix_include_config.patch from
+  gh#boostorg/optional#19
+* Fri Aug 12 2016 adrian@suse.de
+- build it from "boost.spec", but create versioned "boost-1_61-devel"
+  packages
+* Fri Jun 17 2016 adrian@suse.de
+- build quickbook also in versioned package
+* Tue Jun 14 2016 adrian@suse.de
+- update to version 1.61.0
+  Details on http://www.boost.org/users/history/version_1_61_0.html
+  Obsolete patches:
+  * boost-1.59-test-fenv.patch
+  * boost-deprecated-type_traits.patch
+* Tue Jun 14 2016 adrian@suse.de
+- rename package to boost-1_60 to allow multiple versions
+* Tue Mar 29 2016 dmitry_r@opensuse.org
+- Fix build on systems with GCC4
+* Sun Feb 14 2016 egeorget@openmailbox.org
+- Added libboost_python3 to the dependency macro.
+  * boost-devel will now correctly requires libboost_python3.
+* Mon Jan 18 2016 idonmez@suse.com
+- Add boost-deprecated-type_traits.patch to fix deprecated
+  type_traits usage in boost/graph/adjacency_matrix.hpp header.
+* Mon Jan  4 2016 idonmez@suse.com
+- Add the following patches from Fedora to fix underlinking in
+  boost::python code
+  * boost-1.57.0-python-abi_letters.patch
+  * boost-1.57.0-python-libpython_dep.patch
+  * boost-1.55.0-python-test-PyImport_AppendInittab.patch
+* Wed Dec 23 2015 fstrba@suse.com
+- Updated to version 1.60.0
+  * New library: VMD.
+  * Updated libraries: Atomic, Chrono, Container, Context, Core,
+    Filesystem, Flyweight, Fusion, Interprocess, Intrusive, Lexical
+    Cast, Locale, log, Move, Multi-index Containers, odeint,
+    Optional, Predef, Test, Thread, UUID
+  * See http://www.boost.org/users/history/version_1_60_0.html for
+    complete changelog.
+- Modified patch:
+  * boost-disable-pch-on-aarch64.patch
+  - rediff to a new context
+- Removed patch:
+  * boost-1.59-python-make_setter.patch
+  - integrated upstream
+- Add libboost_type_erasure subpackage
+* Sun Dec 13 2015 egeorget@openmailbox.org
+- Add support to Boost:Python3 (boo#951902)
+  * New library: python3
+* Tue Dec  8 2015 pth@suse.de
+- Add boost-visibility.patch to make members of basic_xml_grammar<char>
+  visible (boo#958150).
+- Fix redefinition of _docdir.
+* Thu Nov 26 2015 schwab@suse.de
+- coroutine2 depends on context, disable it if context is not built
+* Fri Oct 23 2015 idonmez@suse.com
+- Updated to version 1.59.0:
+  * New libraries: Convert, Coroutine2
+  * Updated Libraries: Container, Context, Coroutine, Fusion,
+    Geometry, Interprocess, Intrusive, Lexical Cast, Log, Move,
+    Multi-index Containers, Predef, Program Options, Property Tree,
+    Boost.Test v3, TypeIndex, Variant
+  * See http://www.boost.org/users/history/version_1_59_0.html for
+    complete changelog.
+- context now builds on aarch64
+- Import two patches from Fedora: boost-1.59-python-make_setter.patch,
+  boost-1.59-test-fenv.patch
+- Drop 0001-Fix-exec_file-for-Python-3-3.4.patch,
+  0002-Fix-a-regression-with-non-constexpr-types.patch,
+  boost-uuid-comparison.patch, boost-unrecognized-option.patch.
+  Fixed upstream.
+* Thu Jun 11 2015 idonmez@suse.com
+- Remove unneeded dependency on xorg-x11-devel
+* Thu May 21 2015 schwab@suse.de
+- boost-unrecognized-option.patch: remove unrecognized option -m32
+* Sat May  9 2015 dmueller@suse.com
+- update to 1.58.0:
+  boost docs remain at 1.56 since upstream hasn't updated yet
+  * New Libraries: Endian, Sort.
+  * Updated Libraries: Asio, Chrono, Container, Context, Conversion,
+  DateTime, Flyweight, Function, Functional/Factory, Fusion, Geometry,
+  Hash, Interprocess, Intrusive, Lexical Cast, Log, Math, Move,
+  Multi-index Containers, Multiprecision, Optional, Phoenix,
+  Predef, Random, Thread, TypeErasure, TypeIndex, Units,
+  Unordered, Variant.
+  See http://www.boost.org/users/history/version_1_58_0.html
+- add 0001-Fix-exec_file-for-Python-3-3.4.patch ,
+  0002-Fix-a-regression-with-non-constexpr-types.patch: Fixes regressions
+  in 1.58
+- drop bjam-alignment.patch, boost-gcc5.patch: Already fixed upstream
+  differently
+- add boost-rpmoptflags-only.patch: Build only with optflags
+- add boost-aarch64-flags.patch: Avoid using -m64
+- add boost-uuid-comparison.patch: Fix regression in UUID operator<
+- add boost-disable-pch-on-aarch64.patch: Disable pch on math library
+  to avoid compiler segfault
+* Mon Mar  9 2015 rneuhauser@suse.cz
+- Add quickbook subpackage
+* Mon Feb 23 2015 rguenther@suse.com
+- Use $RPM_OPT_FLAGS for building, force use of the GCC toolset.
+  Be more verbose and fail building with the first error.
+- Add boost-gcc5.patch to use -std=c++11 when building the coroutines
+  module which fixes build with GCC 5.
+* Fri Dec  5 2014 dimstar@opensuse.org
+- Revert the python3 building: it resulted in BOTH libboost_python
+  libraries to be using python 3 instructions, resulting in
+  failures of all Py2 related packages.
+* Thu Oct  2 2014 michael.hamann@kit.edu
+- Added boost_python3 for boost 1.56.0, config based on
+  https://projects.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/boost
+* Sat Sep 27 2014 dmitry_r@opensuse.org
+- Update documentation tarball (source was changed)
+- Fix aarch64 build
+* Thu Aug 14 2014 dmitry_r@opensuse.org
+- Update to version 1.56.0. Major changes since 1.54.0:
+  New libraries:
+  * Predef: This library defines a set of compiler, architecture,
+    operating system, library, and other version numbers from the
+    information it can gather of C, C++, Objective C, and Objective
+    C++ predefined macros or those defined in generally available
+    headers, from Rene Rivera.
+  * Align: Memory alignment functions, allocators, and adaptors.
+  * Type_Index: Runtime/Compile time copyable type info.
+  For a detailed descriptions see:
+  http://www.boost.org/users/history/version_1_56_0.html
+  http://www.boost.org/users/history/version_1_55_0.html
+- Rebase boost-thread.patch
+- Rabase boost-use_std_xml_catalog.patch
+- Rebase bjam-alignment.patch
+- Remove obsolete boost-glibc-2.18.patch
+- Remove obsolete boost-1.54-001-coroutine.patch
+- Remove obsolete boost-1.54-002-date-time.patch
+- Remove obsolete boost-1.54-003-log.patch
+- Remove obsolete boost-1.54-change85160.patch
+- Remove obsolete boost-1.54.0-thread-link_atomic.patch
+- Remove obsolete boost-ppc64-abiv2-context.patch
+- Remove obsolete boost-ppc64-abiv2-coroutine.patch
+- Remove outdated man pages boost_1_54_man.tar.bz2
+* Wed Jul 30 2014 coolo@suse.com
+- add baselibs.conf as source
+* Tue Jul 22 2014 fcrozat@suse.com
+- Ensure there is enough disk space available for build.
+* Tue Jul 22 2014 fcrozat@suse.com
+- use only JOBS=2 to avoid gcc being killed with OOM when memory is
+  between 4G and 7G.
+* Tue Apr 29 2014 dvaleev@suse.com
+- ppc64 ABIv2 support
+- enable build_context for ppc64le
+- added patches:
+  * boost-ppc64-abiv2-context.patch
+  * boost-ppc64-abiv2-coroutine.patch
+* Sat Apr 19 2014 schwab@suse.de
+- Fix quoting while creating shared build instructions
+- Properly configure library list
+- bjam-alignment.patch: fix alignment check in bjam
+* Tue Apr  1 2014 coolo@suse.com
+- buildignore python, python-base is enough
+* Tue Mar 11 2014 Rene.vanPaassen@gmail.com
+- further improved the use of supplied b2 / bootstrap.sh,
+  include user-config.jam, and remove superfluous python
+  and gcc instructions from user-config.jam
+* Mon Mar 10 2014 Rene.vanPaassen@gmail.com
+- fix problem with executable .pdf in doc by correcting
+  permissions after install (%%attr with a dir failed on
+  sled/sles)
+- add dependency on zlib-devel and libbz2-devel and use the
+  supplied bootstrap.sh script in building. This adds
+  on-the-fly compression to boost-iostreams
+* Thu Feb 27 2014 coolo@suse.com
+- remove broken python module mpi.so
+- trying to make the build more reliable:
+  * use -fno-var-tracking in cxxflags as recommended by richi
+  * disable parallel build on low memory
+* Sat Feb  8 2014 pth@suse.de
+- Add post and postun sections for libboost_graph_parallel.
+* Fri Feb  7 2014 ro@suse.de
+- add boost-1.54.0-thread-link_atomic.patch fixing upstream issue
+  https://svn.boost.org/trac/boost/ticket/9041
+  (fixes compilation failure of snapper on various platforms)
+* Wed Feb  5 2014 ro@suse.de
+- enable build_mpi on s390/s390x
+* Tue Jan  7 2014 schwab@suse.de
+- Disable coroutine library together with context
+* Sat Jan  4 2014 coolo@suse.com
+- fix build of libzypp - patch from boost's track
+- added patches:
+  * boost-1.54-change85160.patch
+* Tue Nov 26 2013 tbehrens@suse.com
+- Add boost-pool_check_overflow.patch: Prevent possible overflow when
+  calculating the amount to malloc (bnc#765443).
+  Fix from https://svn.boost.org/trac/boost/ticket/6701
+* Sun Oct 20 2013 jengelh@inai.de
+- Split libboost_graph so that the MPI components are not forced
+* Wed Sep 18 2013 dap.darkness@gmail.com
+- Update to 1.54.0. Major changes since 1.53.0:
+  New libraries:
+  * Log: Logging library, from Andrey Semashev.
+  * TTI: Type Traits Introspection library, from Edward Diener.
+  * Type Erasure: Runtime polymorphism based on concepts.
+  For a detailed descriptions see
+  http://www.boost.org/users/history/version_1_54_0.html
+- Update broken patch:
+  * boost-use_std_xml_catalog.patch
+- Delete merged patch:
+  * boost-fix_ppc64_asm.patch
+- Add post-release fix patches:
+  * boost-1.54-001-coroutine.patch
+  * boost-1.54-002-date-time.patch
+  * boost-1.54-003-log.patch
+- build_pdf define was deleted as unused;
+  package_pdf was refactored.
+- _constraints was added to request more memory to build.
+* Sun Aug 18 2013 tchvatal@suse.com
+- Fix build with updated glibc:
+  * boost-glibc-2.18.patch - taken from upstream scm
+* Sat Jun  8 2013 schwab@suse.de
+- Build context library only on supported architectures
+- Reenable mpi on aarch64
+- Avoid duplication between %%build and %%install
+* Wed Apr  3 2013 pth@suse.de
+- Apply upstream patch that fixes the ppc64 code in boost::context
+  (boost#8374): boost-fix_ppc64_asm.patch
+* Fri Mar 22 2013 idonmez@suse.com
+- Rename manpages to avoid conflict with other packages
+* Thu Mar 21 2013 mmeister@suse.com
+- Added url as source.
+  Please see http://en.opensuse.org/SourceUrls
+* Sat Mar 16 2013 dap.darkness@gmail.com
+- Update to 1.53.0. Major changes since 1.49.0:
+  New libraries:
+  * Algorithm:  A collection of useful generic algorithms.
+  * Context:  Context switching library.
+  * Functional/OverloadedFunction: Overload different functions.
+  * LocalFunction: Program functions locally, within other functions.
+  * Utility/IdentityType: Wrap types within round parenthesis.
+  For a detailed descriptions see
+  http://www.boost.org/users/history/version_1_50_0.html
+  http://www.boost.org/users/history/version_1_51_0.html
+  http://www.boost.org/users/history/version_1_52_0.html
+- Delete unneeded patches:
+  * boost-chrono_add_function_return.patch
+  * boost-fix_documentation.patch
+  * boost-time_utc.patch
+* Wed Feb 27 2013 dmueller@suse.com
+- build without openmpi on aarch64 for now
+* Wed Jan 23 2013 BSipos@rkf-eng.com
+- Require package for ICU having same minimum version that the build requires.
+- Avoid obsoleting older versions of boost documentation to allow multiple boost package versions in same environment.
+* Thu Jan 17 2013 opensuse@dstoecker.de
+- use bzip2 instead of xz to support older SUSE releases
+* Thu Sep  6 2012 cfarrell@suse.com
+- license update: BSL-1.0
+  Boost Software License 1.0 is available in SPDX format on
+  http://www.spdx.org/licenses as BSL-1.0
+* Thu Aug  2 2012 aj@suse.de
+- Add patch from upstream to use TIME_UTC_ instead of TIME_UTC since
+  the later is part of ISO C11.
+* Fri May 18 2012 aj@suse.de
+- Fix timer post script, it used the comment as content.
+* Fri May 11 2012 coolo@suse.com
+- fixing the previous fix
+* Wed May  9 2012 coolo@suse.com
+- fixing baselibs.conf after version bump
+* Sat Mar 17 2012 jengelh@medozas.de
+- Adjust Require for new libxslt-tools
+* Tue Mar 13 2012 pth@suse.de
+- Update to 1.49.0. Major changes since 1.46.1:
+  New libraries:
+  * Heap.
+  * Container
+  * Locale
+  * Move
+  * Chrono
+  * Geometry
+  * Phoenix
+  * Ratio
+  For a detailed descriptions see
+  http://www.boost.org/users/history/version_1_47_0.html
+  http://www.boost.org/users/history/version_1_48_0.html
+  http://www.boost.org/users/history/version_1_49_0.html
+- Rebuilt the man documentation with gcc 4.5 as the current gcc
+  segfaults when building quickbook.
+- Package PDF documentation independent of whether we build it
+  ourselves.
+- Fix missing function return in Boost::Chrono's process_cpu_clocks.hpp
+* Mon Feb 13 2012 coolo@suse.com
+- patch license to follow spdx.org standard
+* Tue Dec  6 2011 aj@suse.de
+- Do not package NEWS and LICENSE twice.
+* Fri Nov 25 2011 jengelh@medozas.de
+- Remove redundant/unwanted tags/section (cf. specfile guidelines)
+* Thu Nov 24 2011 nadvornik@suse.com
+- dropped visit_each patch (bnc#714373)
+* Mon Oct  3 2011 dmueller@suse.de
+- disable openmpi on %%%%arm
+* Mon Apr 18 2011 ro@suse.de
+- update baselibs.conf
+* Mon Mar 21 2011 idoenmez@novell.com
+- Fix attribute handling problem in spirit library,
+  See http://comments.gmane.org/gmane.comp.parsers.spirit.general/22073
+* Mon Mar 21 2011 pth@suse.de
+- Prefix bug numbers.
+* Fri Mar 18 2011 pth@suse.de
+- Make packaging of the pdf documentation configurable.
+* Fri Mar 18 2011 pth@suse.de
+- Update to 1.46.1, a bugfix release:
+  • Asio:
+  - EV_ONESHOT seems to cause problems on some versions of Mac OS X, with
+    the io_service destructor getting stuck inside the close() system call.
+    Changed the kqueue backend to use EV_CLEAR instead (boost#5021).
+  - Fixed compile failures with some versions of g++ due to the use of
+    anonymous enums (boost#4883).
+  - Fixed a bug on kqueue-based platforms, where some system calls that
+    repeatedly fail with EWOULDBLOCK are not correctly re-registered with
+    kqueue.
+  - Changed asio::streambuf to ensure that its internal pointers are
+    updated correctly after the data has been modified using std::streambuf
+    member functions.
+  - Fixed a bug that prevented the linger socket option from working on
+    platforms other than Windows.
+  For the rest see NEWS or the boost web site http://www.boost.org
+* Wed Mar 16 2011 pth@suse.de
+- Remove comment chars from doc-pdf description.
+* Mon Mar 14 2011 pth@suse.de
+- Use xz to compress tarballs.
+- Generate new man pages tarball.
+- Update pdf tarball.
+- Update to 1.46:
+  New Libraries
+    Icl: Interval Container Library, interval sets and maps and
+    aggregation of associated values, from Joachim Faulhaber.
+  For the rest of the changes see NEWS in the package documentation
+  directory or see http://www.boost.org/users/news/version_1_46_0 .
+* Thu Nov 25 2010 pth@suse.de
+- Remove the boost specific autoconf macros now that we have the
+  complete autoconf archive packaged (bnc#655747).
+- Move the lib64 patch over to autoconf-archive.
+* Mon Oct 25 2010 jslaby@novell.com
+- take care of random library (build 32bit on x86_64 and
+  require it in boost-devel)
+* Wed Sep 29 2010 coolo@novell.com
+- fix baselibs.conf
+* Fri Sep  3 2010 pth@suse.de
+- Shorten the list of update items.
+- Fix typo in spec.
+* Thu Aug 26 2010 pth@suse.de
+- Redo the lib64 patch for the boost autoconf macros so that
+  lib64 is used on all archs that need it.
+- Remove the ICU patch.
+* Thu Aug 26 2010 pth@suse.de
+- Update to 1.44.0:
+  New Libraries:
+  * Meta State Machine: High-performance expressive UML2 finite
+    state machines
+  * Polygon: Booleans/clipping, resizing/offsetting and more for
+    planar polygons with integral coordinates
+  Updated Libraries:
+  * Accumulators:
+  * Asio:
+  * Foreach:
+  * Fusion:
+  * Hash:
+  * Math:
+  * MPL:
+  * Multi-index Containers:
+  * Proto:
+  * Regex:
+  * Thread:
+  * Type Traits:
+  * uBLAS:
+  * Utility:
+  * Uuid:
+  * Config:
+  * Xpressive:
+  * Filesystem:
+    o This release contains both version 2 and version 3 of the
+    library.  Version 3 is a major upgrade that will break some
+    existing user code, so version 2 is the default.  Users are
+    encouraged to migrate to version 3.  See 'Version 2' and
+    'Version 3' for more information.
+  * Iostreams:
+    o Several fixes for file descriptors class, including a
+    breaking change to the constructors and open methods for
+    file_descriptor, file_descriptor_source and
+    file_descriptor_sink.  See the documentation for details.
+    The old methods are still available if you define
+    BOOST_IOSTREAMS_USE_DEPRECATED
+  * Spirit: Spirit V2.4, see the 'What's New' section for details.
+  * System:
+    o Change system_category and generic_category to functions, to
+    conform to the C++0x FCD.  This change may cause compile
+    errors some user code; the fix is add "()" to references to
+    system_category and generic_category, so that they become
+    function calls.
+  * Wave: See the Changelog for details.
+  Major Changes in 1.43.0:
+  New Libraries
+  * Functional/factory: Function objects for dynamic and by-value
+    construction
+  * Functional/forward: Function object adapters to address the
+    forwarding problem
+  For a complete list of changes see
+  http://www.boost.org/users/news/version_1_43_0 and
+  http://www.boost.org/users/news/version_1_44_0.
+* Fri Jul  9 2010 pth@suse.de
+- Rename patch to be identical to the one checked in for 11.3.
+  The patch adds an explicite specialization to the call to prevent
+  unwanted temporary instantiations.
+* Fri Jul  9 2010 lnussel@suse.de
+- fix bug that shows with gcc 4.5 (bnc#621140)
+* Wed Jun 16 2010 pth@suse.de
+- Noarch sub packages only doable from 11.2 on up.
+* Thu Jun 10 2010 wittemar@googlemail.com
+- build 32bit-packages
+* Mon May 24 2010 bg@novell.com
+- disable long double support for hppa
+* Thu May 20 2010 bg@novell.com
+- openmpi does not build on hppa
+* Thu Apr 29 2010 pth@novell.com
+- Move provides/obsoletes for boost-license to the right section
+  (bnc#544958).
+* Mon Apr 26 2010 pth@novell.com
+- Delete unneeded patches.
+* Wed Apr 14 2010 pth@suse.de
+- Readd those patches that are still needed.
+- Try to fix an aliasing bug in function_base.hpp
+- Build man pages locally and only include them as a tarball.
+- Split documentation in in format specific packages.
+* Fri Apr  2 2010 freespacer@gmx.de
+- update to 1.42.0:
+  New Libraries
+  * Uuid: A universally unique identifier, from Andy Tompkins.
+  Updated Libraries (see README for details)
+  * Asio:
+  * Circular Buffer:
+  * Fusion:
+  * Graph:
+  * Integer:
+  * Iostreams:
+  * Program.Options:
+  * PropertyMap:
+  * Proto:
+  * Regex:
+  * Spirit:
+  * Unordered:
+  * Xpressive:
+- update to 1.41.0:
+  New Libraries
+  * Property Tree: A tree data structure especially suited to storing
+    configuration data, from Marcin Kalicinski and Sebastian Redl.
+  Updated Libraries (see README for details)
+  * DateTime:
+  * Filesystem:
+  * Iostreams:
+  * Math:
+  * Multi-index Containers:
+  * Proto:
+  * Regex:
+  * Spirit:
+  * System:
+  * Thread:
+  * Unordered:
+  * Utility:
+  * Wave:
+  * Xpressive:
+- update to 1.40.0:
+  Updated Libraries (see README for details)
+  * Accumulators:
+  * Asio:
+  * Circular Buffer:
+  * Foreach:
+  * Function:
+  * Fusion:
+  * Graph:
+  * Hash:
+  * Interprocess:
+  * Intrusive:
+  * MPL:
+  * Program.Options:
+  * Property Map:
+  * Proto:
+  * Random:
+  * Serialization:
+  * Unordered:
+  * Xpressive:
+- removed patches no longer needed
+* Wed Jan  6 2010 jengelh@medozas.de
+- documentation change needed to be done in boost.spec.in
+  (not boost.spec)
+- openmpi change was missing too; add it now
+* Tue Dec 15 2009 jengelh@medozas.de
+- add baselibs for SPARC
+- add baselibs.conf as a source
+- deactivate use of openmpi on SPARC, as compat-dapl is not
+  available
+- package documentation as noarch
+* Mon Oct 19 2009 pth@suse.de
+- Provide/Obsolete boost-license (bnc#544958)
+* Thu Aug  6 2009 pth@suse.de
+- Add a fix from boost bugtracker that fixes the hash resizing
+  (boost#54376)
+- Add a test for cancelling deadline timers from the same changeset.
+* Tue Aug  4 2009 pth@suse.de
+- Readd the patch to fix the misplaced ifdef in
+  template_function.hpp:move_assign.
+* Tue Jul 28 2009 coolo@novell.com
+- update to 1.39.0:
+  New Libraries
+  * Signals2: Managed signals & slots callback implementation (thread-safe version 2),
+    from Frank Mori Hess.
+  Updated Libraries (see README for details)
+  * Asio:
+  * Flyweight:
+  * Foreach:
+  * Hash:
+  * Interprocess:
+  * Intrusive:
+  * Program.Options:
+  * Proto:
+  * PtrContainer:
+  * Range:
+  * Unordered:
+  * Xpressive:
+- removed patches no longer needed (hoping the best for ppc asm)
+* Thu Apr 16 2009 crrodriguez@suse.de
+- as agreed with maintainer, get rid of static libraries
+* Wed Apr 15 2009 ro@suse.de
+- buildfix: fix typo in specfile
+* Mon Mar 16 2009 pth@suse.de
+- Don't rely on system default mpi implementation being set. This
+  fixes building boost on systems before openSUSE 11.0.
+* Tue Mar  3 2009 pth@suse.de
+- Fix misplaced ifdef in template_function.hpp:move_assign. Fixes
+  building software that defines BOOST_NO_EXCEPTION (bnc#479659).
+* Wed Feb 25 2009 pth@suse.de
+- Fix packaging of the documentation.
+* Sun Feb 22 2009 pth@suse.de
+- Fix the line in the spec that copies the documentation.
+* Fri Feb 20 2009 pth@suse.de
+- Put the license in a versioned package. This allows installing
+  libraries in parallel (bnc#477603).
+* Fri Feb 13 2009 pth@suse.de
+- Fix spec file (remove patches).
+* Wed Feb 11 2009 pth@suse.de
+- Add boost autoconf macros from the autoconf archive to the
+  - devel package.
+- Update to 1.38.0:
+  New Libraries
+  * Flyweight:
+    o Design pattern to manage large quantities of highly redundant
+    objects, from Joaquín M López Muñoz.
+  * ScopeExit:
+    o Execute arbitrary code at scope exit, from Alexander Nasonov.
+  * Swap:
+    o Enhanced generic swap function, from Joseph Gauterin.
+  Updated Libraries
+  * Accumulators:
+    o Add rolling_sum, rolling_count and rolling_mean accumulators.
+  * Any:
+    o Use a by-value argument for operator= (#2311).
+  * Asio:
+    o Improved compatibility with some Windows firewall software.
+    o Ensured arguments to windows::overlapped_ptr::complete() are
+    correctly passed to the completion handler (#2614).
+    o Drop back to using a pipe for notification if eventfd is not
+    available at runtime on Linux (#2683).
+    o Various minor bug and documentation fixes (#2534, #2541,
+    [#2607], #2617, #2619)
+  * Config:
+    o Add new macros BOOST_NO_STD_UNORDERED and
+    BOOST_NO_INITIALIZER_LISTS.
+    o Added Codegear compiler support.
+    o Added Dragonfly to the BSD family of configs.
+    o Recognise latest compilers from MS and Intel.
+  * Date_Time:
+    o Added support for formatting and reading time durations longer
+    than 24 hours with new formatter: %%0.
+    o Removed the testfrmwk.hpp file from the public include directory.
+    o Fixed several bugs and compile errors.
+    o For full details see the change history
+  * Exception:
+    o Improved and more customizable diagnostic_information output.
+  * Filesystem:
+    o Fix native(name) test failures on POSIX-like systems.
+    o Several bugfixes (#2543, #2224, #2531, #1840, #2542).
+  * Graph:
+    o Added a new algorithms for Travelling Salesman Problem
+    approximation (metric_tsp_approx) and resource-constrained
+    Shortest Paths (r_c_shortest_paths).
+    o Support for named vertices in adjacency_list.
+    o A number of bugfixes ( #416, #1622, #1700, #2209, #2392,
+    [#2460], and #2550)
+  * Hash:
+    o boost/functional/detail/container_fwd.hpp has been moved to
+    boost/detail/container_fwd.hpp.  The current location is
+    deprecated.
+    o For more detail, see the library changelog.
+  * Interprocess:
+    o Updated documentation to show rvalue-references functions
+    instead of emulation functions.
+    o More non-copyable classes are now movable.
+    o Move-constructor and assignments now leave moved object in
+    default-constructed state instead of just swapping contents.
+    o Several bugfixes (#2391, #2431, #1390, #2570, #2528).
+  * Intrusive:
+    o New treap-based containers: treap, treap_set, treap_multiset.
+    o Corrected compilation bug for Windows-based 64 bit compilers.
+    o Corrected exception-safety bugs in container constructors.
+    o Updated documentation to show rvalue-references functions
+    instead of emulation functions.
+  * Lexical Cast:
+    o Changed to work without RTTI when BOOST_NO_TYPEID is defined
+    (#1220).
+  * Math:
+    o Added Johan Råde's optimised floating point classification routines.
+    o Fixed code so that it compiles in GCC's -pedantic mode (bug report #1451).
+  * Multi-index Containers:
+    o Some redundant type definitions have been deprecated. Consult the
+    library release notes for further information.
+  * Proto:
+    o Fix problem with SFINAE of binary operators (Bug 2407).
+    o Fix proto::call transform for callable transforms with >3 arguments.
+    o result_of::value changed behavior for array-by-value terminals.
+    o unpack_expr requires only Forward Sequences rather than Random Access
+    Sequences.
+    o Deprecate legacy undocumented BOOST_PROTO_DEFINE_(VARARG_)FUNCTION_TEMPLATE
+    macros.
+    o Add BOOST_PROTO_REPEAT and BOOST_PROTO_LOCAL_ITERATE macros to help with
+    repetitive code generation
+    o Support for nullary expressions with tag types other than
+    proto::tag::terminal
+    o Allow 0- and 1-argument variants of proto::or_ and proto::and_
+  * Regex:
+    o Breaking change: empty expressions, and empty alternatives are
+    now allowed when using the Perl regular expression syntax.
+    This change has been added for Perl compatibility, when the
+    new syntax_option_type no_empty_expressions is set then the
+    old behaviour is preserved and empty expressions are
+    prohibited.  This is issue #1081.
+    o Added support for Perl style ${n} expressions in format strings
+    (issue #2556).
+    o Added support for accessing the location of sub-expressions
+    within the regular expression string (issue #2269).
+    o Fixed compiler compatibility issues #2244, #2514, and #2458.
+  * Thread:
+    o No longer catches unhandled exceptions in threads as this debuggers
+    couldn't identify the cause of unhandled exceptions in threads. An
+    unhandled exception will still cause the application to terminate.
+  * TR1:
+    o Added support for the TR1 math functions and the unordered
+    containers.
+  * Type Traits:
+    o Added support for Codegear intrinsics.
+    o Minor tweaks to warning suppression and alignment_of code.
+  * Unordered:
+    o Use boost::swap.
+    o Use a larger prime number list for selecting the number of buckets.
+    o Use aligned storage to store the types.
+    o Add support for C++0x initializer lists where they're available.
+    o For more detail, see the library changelog.
+  * Xpressive:
+    o basic_regex gets nested syntax_option_flags and value_type typedef,
+    for compatibility with std::basic_regex
+    o Ported to Proto v4; Proto v2 at boost/xpressive/proto has been
+    removed.
+    o regex_error inherits from boost::exception
+  Other Changes
+  * Experimental support for building Boost with CMake has been introduced in
+    this version. For more details see the wiki, Discussion is taking place
+    on the Boost-cmake mailing list.
+  * Fixed subversion properties for several files. Most notably, unix shell
+    scripts should always have unix line endings, even in the windows
+    packages.
+* Fri Jan  9 2009 pth@suse.de
+- Apply patch in boost.spec.in
+* Thu Jan  8 2009 pth@suse.de
+- Actually use the patch.
+* Wed Jan  7 2009 pth@suse.de
+- Initialize all data passed in the syscall to keep valgrind
+  happy (bnc#461372).
+* Thu Dec 11 2008 ro@suse.de
+- fix baselibs.conf (no requirement for boost-xxbit)
+  (bnc#457699)
+* Thu Nov 27 2008 ro@suse.de
+- update baselibs.conf
+- package mpi.so only in mpi package, not in devel
+* Wed Nov 19 2008 jjolly@suse.de
+- Made the use of the mpi-selector conditional for mpi-enabled
+  platforms.
+* Tue Nov 11 2008 ro@suse.de
+- SLE-11 uses PPC64 instead of PPC, adapt baselibs.conf
+* Fri Oct 31 2008 pth@suse.de
+- Fix the bug that made boost.monitor mix up uid and pib and
+  also make boost.monitor not special-case SIGCLD (bnc#439805)
+- Fix generation of default extension in boost.filesystem.
+- Make boost recommend library subpackages instead of requiring
+  them to allow removal of unwanted libraries after update.
+- Run mkspec explicitely in a shell so that mkspec.sh doesn't
+  need to be executable.
+- Disable deletion of full-name symlinks in boost.spec.in.
+- Make boost-devel directly require all library subpackages.
+- boost.rpm isn't needed, even for updates, so don't build it and
+  remove the README file needeed only for this package.
+- Make debug package require all library subpackages.
+- Add pre_checkin.sh to ensure that boost.spec is regenerated
+  at check-in time.
+- Make boost.build use sane library names. Only the multi-threaded
+  libraries are built and these have no -mt in their name.
+  Symlinks for convenience are spupplied.
+- Use -fno-strict-aliasing only for boost.python, where it's needed.
+- Don't use configure and make (only convenience wrappers) but
+  call bjam directly.
+* Mon Oct 27 2008 ro@suse.de
+- do not remove full-name symlinks for shared libs
+* Thu Oct 23 2008 pth@suse.de
+- Use a script and a Makefile to generate boost.spec.
+- Pull in all libraries on update.
+- Modify README to apply to both openSUSE and SLE.
+* Thu Oct 23 2008 ro@suse.de
+- fix regexp for short symlinks
+- hook all mpi related parts to build_mpi macro
+- disable build_mpi on ia64 s390 s390x for the moment
+* Fri Oct 17 2008 pth@suse.de
+- Using a rpm macros in package name doesn't work with autobuild.
+* Wed Oct 15 2008 pth@suse.de
+- Fix naming of library packages to match the horribly broken
+  sonames of the boost libraries.
+- Add post/postun for all library packages.
+- Stop rpmlint warning about explicit library dependencies
+  needed to pull in all library subpackages during updates.
+* Tue Oct 14 2008 pth@suse.de
+- Fix build failure (README not in build directory).
+* Tue Sep  2 2008 pth@suse.de
+- Split off runtime libraries into their own packages.
+- Update to 1.36.0:
+  New Libraries
+  * Accumulators: Framework for incremental calculation, and
+    collection of statistical accumulators.
+  * Exception: A library for transporting of arbitrary data in
+    exception objects, and transporting of exceptions
+    between threads.
+  * Units: Zero-overhead dimensional analysis and unit/quantity
+    manipulation and conversion.
+  * Unordered: Unordered associative containers.
+  Updated Libraries
+  * Asio:
+    o Added support for serial ports.
+    o Added support for UNIX domain sockets.
+    o Added support for raw sockets and ICMP.
+    o Added wrappers for POSIX stream-oriented file descriptors
+    (excluding regular files).
+    o Added support for reactor-style operations using a new
+    null_buffers type.
+    o Added an iterator type for bytewise traversal of buffer
+    sequences.
+    o Added new read_until() and async_read_until() overloads that
+    take a user-defined function object for locating message
+    boundaries.
+    o Added an experimental two-lock queue (enabled by defining
+    BOOST_ASIO_ENABLE_TWO_LOCK_QUEUE) that may provide better
+    io_service scalability across many processors.
+    o Various fixes, performance improvements, and more complete
+    coverage of the custom memory allocation support.
+  * Assign:list_of() (and its variants) now has overloaded comparison
+    operators. This allows you to write test code such as
+    BOOST_CHECK_EQUAL(my_container,list_of(2)(3)(4)(5));.
+  * Foreach:BOOST_FOREACH macro for easily iterating over the elements
+    of a sequence.
+    o New BOOST_REVERSE_FOREACH macro for iterating over a sequence
+    in reverse.
+  * Function:
+    o Improved allocator support.
+  * Hash: Minor updates and fixes, for more info see the change log.
+  * Interprocess:
+    o Added anonymous shared memory for UNIX systems.
+    o Fixed missing move semantics on managed memory classes.
+    o Added copy_on_write and open_read_only options for shared
+    memory and mapped file managed classes.
+    o shared_ptr is movable and supports aliasing.
+  * Intrusive:
+    o Added linear<> and cache_last<> options to singly linked lists.
+    o Added optimize_multikey<> option to unordered container hooks.
+    o Optimized unordered containers when store_hash option is used
+    in the hook.
+    o Implementation changed to avoid explicit use of try-catch
+    blocks and be compilable with exceptions disabled.
+  * Math:
+    o Added new non-central Chi-Square, Beta, F and T distributions.
+    o Added Exponential Integral and Zeta special functions.
+    o Added Rounding, Truncation, and Unit-in-the-last-place
+    functions.
+    o Added support for compile time powers of a runtime base.
+    o Added a few SSE2 based optimisations for the Lanczos
+    approximations.
+  * MPI:
+    o Added support for non-blocking operations in Python
+    o Added support for graph topologies.
+  * Multi-index Containers: Minor additions and maintenance fixes.
+    Consult the library release notes for
+    further information.
+  * PtrContainer: Support for a few more containers, and addition
+    of insert iterators. For details see upgrading
+    details.
+  * Spirit: Integrated the "Classic" Spirit V1.8.x code base with
+    Spirit V2, "The New Generation". See Change Log.
+  * Thread:
+    o New generic lock and try_lock functions for locking multiple
+    mutexes at once.
+    o Rvalue reference support for move semantics where the
+    compilers supports it.
+    o A few bugs fixed and missing functions added (including
+    the serious win32 condition variable bug).
+    o scoped_try_lock types are now backwards-compatible with
+    Boost 1.34.0 and previous releases.
+    o Support for passing function arguments to the thread
+    function by supplying additional arguments to the thread
+    constructor.
+    o Backwards-compatibility overloads added for timed_lock and
+    timed_wait functions to allow use of xtime for timeouts.
+  * Wave:
+    o Wave V2.0 is a new major release introducing some breaking
+    API changes, preventing it to be used with Boost versions
+    earlier than V1.36.0. Mainly, the API and hook interface
+    have been streamlined for more consistency.
+    o Fixed a couple of bugs, improved regression test system to
+    include testing of the preporcessing hooks interface
+    (for details see: Changelog).
+  * Xpressive:
+    o Regular expressions that can be written as strings or as
+    expression templates, and that can refer to each other and
+    themselves recursively with the power of context-free
+    grammars.
+    o skip() for specifying which parts of the input sequence
+    to ignore when matching it against a regex.
+    o regex_replace() accepts formatter objects and formatter
+    expressions in addition to format strings.
+    o Range-based regex_replace() algorithm.
+    o Fix crash when semantic actions are placed in look-aheads,
+    look-behinds or independent sub-expressions.
+* Mon Jun 23 2008 pth@suse.de
+- Qualify name to avoid clash (bnc#401964)
+* Fri Jun 20 2008 schwab@suse.de
+- Fix ppc atomic ops.
+* Thu Apr 10 2008 ro@suse.de
+- added baselibs.conf file to build xxbit packages
+  for multilib support
+* Mon Jan 28 2008 schwab@suse.de
+- Remove obsolete patch again.
+* Fri Jan 18 2008 pth@suse.de
+- Fix CVE-2008-0171 and CVE-2008-0171 (bugzilla #353180)
+- Qualify special_values_parser (bugzilla #353897)
+* Thu Jan 17 2008 schwab@suse.de
+- Remove obsolete patch.
+* Mon Jan 14 2008 pth@suse.de
+- Move 1.34.1 from BS to Autobuild
+- Add patch for critical bug in Boost.Function.
+- Include C headers where necessary.
+- Make the tests for ULONG_MAX more readable 64.
+* Wed Oct 24 2007 rguenther@suse.de
+- Use -fpermissive in addition to -O2 for building.
+- Add patch to enable building wave with GCC 4.3.
+* Mon Aug 20 2007 pth@suse.de
+- Only use fdupes from 10.3 onwards.
+* Sat Aug 11 2007 aj@suse.de
+- Fix spec file to build again.
+* Thu Aug  9 2007 pth@suse.de
+- Add man pages (made for 1.33.1).
+- Package html documentation differently.
+- Check all links and add missing files that do exist.
+- Use %%%%fdupes
+- Add patch by rschiele@gmail.com to pass compiler flags into
+  Boost.build.
+- Update to 1.34.1 and use .spec file from bkoz@redhat.com as
+  a basis.
+  Changes 1.33.1 -> 1.34.0:
+  New Libraries:
+  * Foreach Library: BOOST_FOREACH macro for easily iterating over
+    the elements of a sequence,
+  * Statechart Library: Arbitrarily complex finite state machines
+    can be implemented in easily readable and
+    maintainable C++ code,
+  * TR1 Library: An implementation of the C++ Technical Report on Standard
+    Library Extensions, from John Maddock. This library does
+    not itself implement the TR1 components, rather it's a
+    thin wrapper that will include your standard library's
+    TR1 implementation (if it has one), otherwise it will
+    include the Boost Library equivalents, and import them
+    into namespace std::tr1. Highlights include: Reference
+    Wrappers, Smart Pointers, result_of, Function Object
+    Binders, Polymorphic function wrappers, Type Traits,
+    Random Number Generators and Distributions, Tuples, Fixed
+    Size Array, Hash Function Objects, Regular Expressions,
+    and Complex Number Additional Algorithms.
+  * Typeof Library: Typeof operator emulation, from Arkadiy Vertleyb
+    and Peder Holt.
+  * Xpressive Library: Regular expressions that can be written as strings
+    or as expression templates, and that can refer to
+    each other and themselves recursively with the
+    power of context-free grammars, from Eric Niebler.
+    Updated Libraries:
+  * Assign Library:
+    o Support for ptr_map<key,T> via the new function ptr_map_insert()
+    o Support for initialization of Pointer Containers when the
+    containers hold pointers to an abstract base class.
+  * Date_time library:
+    o Support for new US/Canada timezone rules and other bug fixes.
+    See Change History for details.
+  * Filesystem Library: Major upgrade in preparation for submission to the
+    C++ Standards Committee for TR2. Changes include:
+    o Internationalization, provided by class templates basic_path,
+    basic_filesystem_error, basic_directory_iterator, and
+    basic_directory_entry.
+    o Simplification of the path interface by eliminating special
+    constructors to identify native formats.
+    o Rationalization of predicate function design, including the
+    addition of several new functions.
+    o Clearer specification by reference to POSIX, the ISO/IEEE Single
+    Unix Standard, with provisions for Windows and other operating
+    systems.
+    o Preservation of existing user code whenever possible.
+    o More efficient directory iteration.
+    o Addition of a recursive directory iterator.
+  * Function Library: Boost.Function now implements a small buffer
+    optimization, which can drastically improve the
+    performance when copying or constructing
+    Boost.Function objects storing small function
+    objects. For instance, bind(&X:foo, &x, _1, _2)
+    requires no heap allocation when placed into a
+    Boost.Function object.
+  * Functional/Hash Library
+    o Use declarations for standard classes, so that the library
+    doesn't need to include all of their headers
+    o Deprecated the <boost/functional/hash/*.hpp> headers.
+    o Add support for the BOOST_HASH_NO_EXTENSIONS macro, which
+    disables the extensions to TR1
+    o Minor improvements to the hash functions for floating point numbers.
+  * Graph Library:
+    o edmonds_maximum_cardinality_matching,
+    o lengauer_tarjan_dominator_tree,
+    o compressed_sparse_row_graph,
+    o sorted_erdos_renyi_iterator,
+    o biconnected_components now supports a visitor and named
+    parameters,
+    o adjacency_matrix now models the Bidirectional Graph concept.
+    o dijkstra_shortest_paths now calls vis.initialize_vertex for each
+    vertex during initialization.
+    o Note: the name of the compiled library for the GraphViz reader has
+    changed to boost_graph (from bgl-viz) to match Boost conventions.
+    o See the complete revision history for more information.
+  * MultiArray Library: Boost.MultiArray now by default provides
+    range-checking for operator[]. Range checking can
+    be disabled by defining the macro
+    BOOST_DISABLE_ASSERTS before including
+    multi_array.hpp. A bug in multi_array::resize()
+    related to storage orders was fixed.
+  * Multi-index Containers Library:
+    o New random access indices.
+    o Non key-based indices feature new rearrange facilities.
+    o This version also includes a number of optimizations and usage
+    improvements. For a complete list of changes, see the library
+    release notes.
+  * Optional Library:
+    o boost::none_t and boost::none now added to Optional's
+    documentation
+    o Relational operators now directly support arguments of type
+    'T' and 'none_t'
+    o operator->() now also works with reference types.
+    o Helper functions make_optional(val), make_optional(cond,val)
+    and get_optional_value_or(opt,alternative_value) added.
+    o Constructor taking a boolean condition (as well as a value)
+    added.
+    o Member function get_value_or(alternative_value) added.
+    o Incompatbility bug with mpl::apply<> fixed.
+    o Converting assignment bug with uninitialized lvalues fixed.
+  * Parameter Library:
+    o Every ArgumentPack is now a valid MPL Forward Sequence.
+    o Support for unnamed arguments (those whose keyword is
+    deduced from their types) is added.
+    o Support for named and unnamed template arguments is added.
+    o New overload generation macros solve the forwarding problem
+    directly.
+    o See also the Python library changes, below.
+  * Pointer Container Library:
+    o Support for serialization via Boost.Serialization.
+    o Exceptions can be disabled by defining the macro
+    BOOST_PTR_CONTAINER_NO_EXCEPTIONS before including any header.
+    This macro is defined by default if BOOST_NO_EXCEPTIONS is defined.
+    o Additional std::auto_ptr<T> overloads added s.t. one can also
+    pass std::auto_ptr<T> instead of only T* arguments to member
+    functions.
+    o transfer() now has weaker requirements s.t. one can transfer
+    objects from ptr_container<Derived> to ptr_container<Base>,
+  * Python Library:
+    o Boost.Python now automatically appends C++ signatures to
+    docstrings. The new docstring_options.hpp header is available to
+    control the content of docstrings.
+    o stl_input_iterator, for turning a Python iterable object into an
+    STL input iterator, from Eric Niebler.
+    o Support for void* conversions is added.
+    o Integrated support for wrapping C++ functions built with the
+    parameter library; keyword names are automatically known to
+    docsstrings.
+    o Enhancements to the API for better embedding support
+    (boost::python::import(), boost::python::exec(), and
+    boost::python::exec_file()).
+  * Signals Library: More improvements to signal invocation performance.
+  * Smart Pointers Library:
+    o Allocator support as proposed in N1851 (162 Kb PDF).
+    o pointer_cast and pointer_to_other utilities to allow
+    pointer-independent code,
+  * String Algorithm Library:
+    o lexicographical_compare
+    o join
+    o New comparison predicates is_less, is_not_greater.
+    o Negative indexes support (like Perl) in various algorihtms
+    (*_head/tail, *_nth).
+  * Wave Library:
+    o Wave now correctly recognizes pp-number tokens as mandated by
+    the C++ Standard, which are converted to C++ tokens right before
+    they are returned from the library.
+    o Several new preprocessing hooks have been added. For a complete
+    description please refer to the related documentation page: The
+    Context Policy.
+    o Shared library (dll) support has been added for the generated
+    Wave libraries.
+    o The overall error handling has been improved. It is now possible
+    to recover and continue after an error or a warning was issued.
+    o Support for optional comment and/or full whitespace
+    preservation in the generated output stream has been added.
+    o The Wave library now performs automatic include guard
+    detection to avoid accessing header files more than once, if
+    appropriate.
+    o Full interactive mode has been added to the Wave tool. Now the
+    Wave tool can be used just like Python or Perl for instance to
+    interactively try out your BOOST_PP macros. Additionally it is
+    now possible to load and save the current state of an
+    interactive session (macro tables et.al.).
+    o The overall performance has been improved by upto 40-60%%,
+    depending on the concrete files to process.
+    o Support for new pragmas has been added allowing to control
+    certain library features from inside the preprocessed sources
+    (partial output redirection, control of generated whitespace
+    and #line directives).
+    o Optional support for #pragma message "..." has been added.
+    o This version also includes a number of bug fixes and usage
+    improvements. For a complete list of changes, see the
+    libraries change log.
+  Fixes in 1.34.1:
+  * Fixes for build on IBM pSeries for AIX and Linux
+  * gcc-4.2 atomicity.h location fixed
+  * [iostreams] zlib_compressor memory leaks in 1.34.0
+  * filtering ostream problem... pushing zlib_compressor works in 1_33,
+    dies in 1_34
+  * [doc] The "Getting Started" page mentions incorrect library names
+  * [filesystem] missing documentation or bad links
+  * add missing docs for boost.python API enhancements.
+  * Entire iostreams library outdated in 1.34.0
+  * numeric_limits specializations in limits.hpp are incorrect
+  * Updated ICU support in Boost.Regex
+  * Make boost.python compatible with python 2.5
+  * ::boost::detail::empty_base improved
+  * Fix failing uild of libs/python/example/quickstart.
+  * Fix problems when building Python modules on boost 1.34.0
+  * Patches to allow boost 1.34.0 to compile with stricter warning
+    checking under mac OS and gcc
+  * Unable to compile Python example, tutorial, or quickstart with
+    Boost 1_34_0
+  * Improper overflow handling in shortest paths algorithms
+  * Multiple include paths for Python
+  * Add documentation for the iter_find/split algorithms
+  * regex_token_iterator crashes
+  * regex_error exception when quantifying some non-capturing groups
+  * read_write_mutex docs don't clearly specify that the functionality
+    is not present
+- Remove patches not needed anymore.
+- Replace file dupes by symlinks.
+- Add rpmlintrc to suppress rpmlint warnings for things that won't be
+  changed.
+* Sun Jul 15 2007 schwab@suse.de
+- Fix reference to atomicity.h.
+* Sat Mar 24 2007 aj@suse.de
+- Add libbz2-devel to BuildRequires.
+* Fri Sep 22 2006 pth@suse.de
+- Apply patch from community to build with Python 2.5
+* Fri Jul 14 2006 sf@suse.de
+- fixed wrong usage of visit_each() (Bug #192116 )
+* Thu Jul 13 2006 sf@suse.de
+- fixed link creation to libboost_thread.so, using %%_lib instead
+  of lib
+* Mon Jun 19 2006 jw@suse.de
+- added a libboost_thread.so as a symlink to libboost_thread-mt.so
+* Tue Apr  4 2006 pth@suse.de
+- Add libboost_wave.a to file list
+* Tue Apr  4 2006 pth@suse.de
+- Use explicit file names instead of wildcards to detect libraries
+  that weren't built.
+* Wed Feb  8 2006 schwab@suse.de
+- Fix broken assembler constraints [#148429].
+* Wed Jan 25 2006 mls@suse.de
+- converted neededforbuild to BuildRequires
+* Tue Jan 17 2006 schwab@suse.de
+- Don't strip binaries.
+* Wed Dec  7 2005 pth@suse.de
+- Fix cases of type-punning in boost::python
+- Compile without -fno-strict-aliasing again.
+- Remove unnecessary type attributes in forward declarations.
+* Tue Dec  6 2005 pth@suse.de
+- Update to 1.33.1.
+- Fix use of uninitialized variable.
+- Compile with -fno-strict-aliasing.
+- Update NEWS file
+* Thu Aug 25 2005 pth@suse.de
+- Incorporate fixes that are bound to be in 1.33.1
+- Build boost.regex with unicode support.
+* Fri Aug 19 2005 pth@suse.de
+- Add a NEWS file.
+* Thu Aug 18 2005 pth@suse.de
+- Update to 1.33.0 with 5 new libraries. See NEWS for specifics.
+- Fix use of uninitialized class member (matz@suse.de)
+- Compile with -O2 instead of -O3
+- Make build process use %%optflags
+* Thu Mar 10 2005 pth@suse.de
+- Update to 1.32.0
+* Fri May  7 2004 pth@suse.de
+- Add convenience symlinks (#38491)
+* Sun Apr 25 2004 coolo@suse.de
+- build with several jobs
+* Fri Mar  5 2004 pth@suse.de
+- Update to 1.31.0.
+- Make building boost work on Linux platforms where gcc does not
+  define _REENTRANT when passed -pthread. Patch was done by
+  Robert Schiele.
+* Sat Jan 10 2004 adrian@suse.de
+- add %%run_ldconfig
+* Wed Aug 20 2003 pthomas@suse.de
+- Update to 1.30.2, a bugfix release
+* Wed Jul 23 2003 pthomas@suse.de
+- Initial package, based on the work by Robert Schiele.
+- Fix building with Python 2.3
diff --git a/boost.spec b/boost.spec
new file mode 100644
index 0000000..db3dba4
--- /dev/null
+++ b/boost.spec
@@ -0,0 +1,1919 @@
+#
+# spec file for package boost-base
+#
+# Copyright (c) 2022-2023 ZhuningOS
+#
+
+
+%define ver 1.66.0
+%define file_version 1_66_0
+%define docs_version 1.56.0
+%define short_version 1_56
+%define lib_appendix 1_66_0
+%bcond_with    build_docs
+%bcond_without package_pdf
+%bcond_without build_quickbook
+%bcond_with    boost_devel
+%define my_docdir %{_docdir}/boost-%{version}
+
+%if "base" == "base"
+%define build_base 1
+%define name_suffix -base
+%else
+%define build_base 0
+%define name_suffix %nil
+%endif
+
+# Build with OpenMPI
+%if 0%{?suse_version} >= 1330
+  # OpenMPI >= 2 is not available on ppc64be
+  %ifarch ppc64
+    %define mpi_implem openmpi
+  %else
+    %define mpi_implem openmpi2
+  %endif
+%else
+  # Keep OpenMPI1 for older releases where OpenMPI2 is not available
+  %define mpi_implem openmpi
+%endif
+
+%ifarch ia64 hppa
+%bcond_with  build_mpi
+%else
+%bcond_without build_mpi
+%endif
+
+%bcond_without python3
+%bcond_without python2
+
+# Python NumPy library is only available on Leap 42.1 OpenSUSE onward
+# and is not availble in SLE
+%if 0%{?suse_version} >= 1330 || 0%{?is_opensuse}
+%bcond_without python_numpy
+%else
+%bcond_with python_numpy
+%endif
+
+# context hasn't been ported to most architectures yet
+%ifarch %ix86 x86_64 %arm aarch64 mips ppc ppc64 ppc64le
+%bcond_without build_context
+%else
+%bcond_with build_context
+%endif
+
+# needs newer *default* GCC to compile runtime
+%if %{with build_context} && 0%{?suse_version} > 1320
+%bcond_without boost_fiber
+%else
+%bcond_with boost_fiber
+%endif
+
+Name:           boost%name_suffix
+%define package_name boost_1_66
+Version:        1.66.0
+Release:        12.3.1
+Summary:        Boost C++ Libraries
+License:        BSL-1.0
+Group:          Development/Libraries/C and C++
+Url:            http://www.boost.org
+Source0:        http://downloads.sourceforge.net/project/boost/boost/%{version}/boost_%{file_version}.tar.bz2
+Source1:        boost-rpmlintrc
+Source3:        http://downloads.sourceforge.net/project/boost/boost-docs/%{docs_version}/boost_%{short_version}_pdf.tar.bz2
+Source4:        existing_extra_docs
+#Source5:        NEWS
+Source10:       exception.objdump
+Source11:       __init__.py
+Source100:      baselibs.conf
+Source101:      symbol_diff.sh
+Source102:      README.boost-devel
+Patch1:         boost-thread.patch
+Patch2:         boost-no_type_punning.patch
+Patch3:         boost-no_segfault_in_Regex_filter.patch
+Patch4:         boost-pool_check_overflow.patch
+Patch5:         boost-strict_aliasing.patch
+Patch6:         boost-use_std_xml_catalog.patch
+Patch7:         boost-rpmoptflags-only.patch
+Patch9:         boost-aarch64-flags.patch
+Patch10:        boost-disable-pch-on-aarch64.patch
+Patch13:        boost-visibility.patch
+Patch14:        boost-1.57.0-python-libpython_dep.patch
+Patch15:        boost-1.57.0-python-abi_letters.patch
+Patch16:        boost-1.55.0-python-test-PyImport_AppendInittab.patch
+Patch17:        python_mpi.patch
+Patch18:        dynamic_linking.patch
+Patch20:        python_library_name.patch
+Patch21:        python_numpy_retfunc.patch
+Patch22:        libreoffice_compat_backports.patch
+Patch23:        variant.patch
+BuildRequires:  fdupes
+BuildRequires:  libbz2-devel
+BuildRequires:  libexpat-devel
+BuildRequires:  libicu-devel
+BuildRequires:  zlib-devel
+%if %{with boost_fiber}
+BuildRequires:  gcc-c++ > 5
+%else
+BuildRequires:  gcc-c++
+%endif
+%if ! %build_base
+BuildRequires:  dos2unix
+%if %{with python2}
+BuildRequires:  python2-devel
+%if %{with python_numpy}
+BuildRequires:  python2-numpy-devel
+%endif # numpy2
+%endif # python2
+%if %{with python3}
+BuildRequires:  python3-devel
+%if %{with python_numpy}
+BuildRequires:  python3-numpy-devel
+%endif # numpy3
+%endif # python3
+%if %{with build_mpi}
+BuildRequires:  %{mpi_implem}-devel
+%endif
+%if %{with build_docs}
+BuildRequires:  docbook
+BuildRequires:  docbook-xsl-stylesheets
+BuildRequires:  doxygen
+BuildRequires:  libxslt-tools
+BuildRequires:  texlive-latex
+%endif
+%endif # ! build_base
+BuildRoot:      %{_tmppath}/%{name}-%{version}-build
+
+%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.
+
+# %%if %%build_base
+%package     -n libboost_headers%{lib_appendix}-devel
+Summary:        Development headers for Boost
+Group:          Development/Libraries/C and C++
+Requires:       boost-license%{lib_appendix}
+Requires:       libstdc++-devel
+Provides:       libboost_headers-devel = %{version}
+%if %{without boost_devel}
+Provides:       boost-devel = %{version}
+%endif
+Conflicts:      otherproviders(libboost_headers-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_headers%{lib_appendix}-devel
+A collection of header-only libraries for Boost.
+
+%package     -n boost-license%{lib_appendix}
+Summary:        Boost License
+Group:          Development/Libraries/C and C++
+Provides:       boost-license = %{version}-%{release}
+%if 0%{?suse_version} >= 1120
+BuildArch:      noarch
+%endif
+
+%description -n boost-license%{lib_appendix}
+This package contains the license boost is provided under.
+
+%if %{with boost_devel}
+%package -n     %{package_name}-devel
+Summary:        Development package for Boost C++
+Group:          Development/Libraries/C and C++
+Requires:       libboost_atomic%{lib_appendix}-devel
+Requires:       libboost_chrono%{lib_appendix}-devel
+Requires:       libboost_container%{lib_appendix}-devel
+%if %{with build_context}
+Requires:       libboost_context%{lib_appendix}-devel
+Requires:       libboost_coroutine%{lib_appendix}-devel
+%endif
+Requires:       libboost_date_time%{lib_appendix}-devel
+%if %{with boost_fiber}
+Requires:       libboost_fiber%{lib_appendix}-devel
+%endif
+Requires:       libboost_filesystem%{lib_appendix}-devel
+Requires:       libboost_graph%{lib_appendix}-devel
+Requires:       libboost_iostreams%{lib_appendix}-devel
+Requires:       libboost_locale%{lib_appendix}-devel
+Requires:       libboost_log%{lib_appendix}-devel
+Requires:       libboost_math%{lib_appendix}-devel
+%if %{with build_mpi}
+Requires:       libboost_graph_parallel%{lib_appendix}-devel
+Requires:       libboost_mpi%{lib_appendix}-devel
+%endif
+Requires:       libboost_program_options%{lib_appendix}-devel
+%if %{with python2}
+Requires:       libboost_python-py2_7-%{lib_appendix}-devel
+%endif
+%if %{with python3}
+Requires:       libboost_python-py3-%{lib_appendix}-devel
+%endif
+Requires:       libboost_random%{lib_appendix}-devel
+Requires:       libboost_regex%{lib_appendix}-devel
+Requires:       libboost_serialization%{lib_appendix}-devel
+Requires:       libboost_signals%{lib_appendix}-devel
+Requires:       libboost_system%{lib_appendix}-devel
+Requires:       libboost_test%{lib_appendix}-devel
+Requires:       libboost_thread%{lib_appendix}-devel
+Requires:       libboost_timer%{lib_appendix}-devel
+Requires:       libboost_type_erasure%{lib_appendix}-devel
+Requires:       libboost_wave%{lib_appendix}-devel
+Requires:       libstdc++-devel
+Provides:       boost-devel = %version
+Conflicts:      otherproviders(boost-devel)
+
+%description -n %{package_name}-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).
+%endif # with boost_devel
+
+%package     -n %{package_name}-jam
+Summary:        A Boost Make Replacement
+Group:          Development/Tools/Building
+Provides:       boost-jam
+Conflicts:      otherproviders(boost-jam)
+
+%description -n %{package_name}-jam
+Boost Jam is a build tool based on FTJam, which in turn is based on
+Perforce Jam. It contains significant improvements made to facilitate
+its use in the Boost Build System.
+
+%package      -n %{package_name}-doc-html
+Summary:        HTML documentation for the Boost C++ Libraries
+Group:          Development/Libraries/C and C++
+%if 0%{?suse_version} >= 1120
+BuildArch:      noarch
+%endif
+
+%description  -n %{package_name}-doc-html
+This package contains the documentation of the boost dynamic libraries
+in HTML format.
+
+%if %{with build_docs}
+%package        doc-man
+Summary:        Man documentation for the Boost C++ Libraries
+Group:          Development/Libraries/C and C++
+%if 0%{?suse_version} >= 1120
+BuildArch:      noarch
+%endif
+
+%description    doc-man
+This package contains the documentation of the boost dynamic libraries
+as man pages.
+%endif
+
+%if %{with package_pdf}
+%package      -n %{package_name}-doc-pdf
+Summary:        PDF documentation for the Boost C++ Libraries
+Group:          Development/Libraries/C and C++
+%if 0%{?suse_version} >= 1120
+BuildArch:      noarch
+%endif
+
+%description  -n %{package_name}-doc-pdf
+This package contains the documentation of the boost dynamic libraries
+in PDF format.
+%endif
+
+%package     -n libboost_atomic%{lib_appendix}
+Summary:        Boost.Atomic runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_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 libboost_atomic%{lib_appendix}-devel
+Summary:        Development headers for Boost.Atomic
+Group:          Development/Libraries/C and C++
+Requires:       libboost_atomic%{lib_appendix} = %{version}
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libstdc++-devel
+Provides:       libboost_atomic-devel = %{version}
+Conflicts:      otherproviders(libboost_atomic-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_atomic%{lib_appendix}-devel
+Development 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 libboost_container%{lib_appendix}
+Summary:        Boost.Container runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_container%{lib_appendix}
+This package contains the Boost.Container runtime library.
+
+%package     -n libboost_container%{lib_appendix}-devel
+Summary:        Development headers for Boost.Container
+Group:          Development/Libraries/C and C++
+Requires:       libboost_container%{lib_appendix} = %{version}
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libstdc++-devel
+Provides:       libboost_container-devel = %{version}
+Conflicts:      otherproviders(libboost_container-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_container%{lib_appendix}-devel
+Development header files and libraries for Boost.Container.
+Boost.Container library implements several well-known containers,
+including STL containers. The aim of the library is to offers advanced
+features not present in standard containers or to offer the latest
+standard draft features for compilers that don't comply with the latest
+C++ standard.
+
+%package     -n libboost_context%{lib_appendix}
+Summary:        Boost.Context runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_context%{lib_appendix}
+Runtime support for Boost.Context, a library that providing cooperative
+multitasking support.
+
+%package     -n libboost_context%{lib_appendix}-devel
+Summary:        Development headers for Boost.Context
+Group:          Development/Libraries/C and C++
+Requires:       libboost_context%{lib_appendix} = %{version}
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libstdc++-devel
+Provides:       libboost_context-devel = %{version}
+Conflicts:      otherproviders(libboost_context-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_context%{lib_appendix}-devel
+Development headers and libraries for Boost.Context, a library that
+providing cooperative multitasking support.
+
+%package     -n libboost_coroutine%{lib_appendix}
+Summary:        Boost::Coroutine runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_coroutine%{lib_appendix}
+This package contains the Boost Coroutine runtime library.
+
+%package     -n libboost_coroutine%{lib_appendix}-devel
+Summary:        Development headers for Boost.Coroutine
+Group:          Development/Libraries/C and C++
+Requires:       libboost_context%{lib_appendix}-devel = %{version}
+Requires:       libboost_coroutine%{lib_appendix} = %{version}
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libstdc++-devel
+Provides:       libboost_coroutine-devel = %{version}
+Conflicts:      otherproviders(libboost_coroutine-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_coroutine%{lib_appendix}-devel
+This package provides headers for Boost.Coroutine libraries.
+Boost.Coroutine2 provides templates for generalized subroutines which
+allow suspending and resuming execution at certain locations.
+
+%package     -n libboost_date_time%{lib_appendix}
+Summary:        Boost.DateTime runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_date_time%{lib_appendix}
+This package contains the Boost Date.DateTime runtime libraries.
+
+%package     -n libboost_date_time%{lib_appendix}-devel
+Summary:        Development headers for Boost.DateTime library
+Group:          Development/Libraries/C and C++
+Requires:       libboost_date_time%{lib_appendix} = %{version}
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Recommends:     libboost_serialization%{lib_appendix}-devel = %{version}
+Requires:       libstdc++-devel
+Provides:       libboost_date_time-devel = %{version}
+Conflicts:      otherproviders(libboost_date_time-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_date_time%{lib_appendix}-devel
+This package contains development header files and libraries for
+Boost.DateTime library.
+
+%package     -n libboost_fiber%{lib_appendix}
+Summary:        Boost.Fiber runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_fiber%{lib_appendix}
+This package contains Boost.Fiber runtime library.
+
+%package     -n libboost_fiber%{lib_appendix}-devel
+Summary:        Development headers for Boost.Fiber library
+Group:          Development/Libraries/C and C++
+Requires:       libboost_context%{lib_appendix}-devel = %{version}
+Requires:       libboost_fiber%{lib_appendix} = %{version}
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libstdc++-devel
+Provides:       libboost_fiber-devel = %{version}
+Conflicts:      otherproviders(libboost_fiber-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_fiber%{lib_appendix}-devel
+This package contains development header files and libraries for
+Boost.Fiber library. Boost.Fiber is a cooperative multi-tasking
+userland threading library.
+
+%package     -n libboost_filesystem%{lib_appendix}
+Summary:        Boost.Filesystem Runtime Libraries
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_filesystem%{lib_appendix}
+This package contains the Boost.Filesystem library.
+
+%package     -n libboost_filesystem%{lib_appendix}-devel
+Summary:        Development headers for Boost.Filesystem library
+Group:          Development/Libraries/C and C++
+Requires:       libboost_filesystem%{lib_appendix} = %{version}
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libboost_system%{lib_appendix}-devel = %{version}
+Requires:       libstdc++-devel
+Provides:       libboost_filesystem-devel = %{version}
+Conflicts:      otherproviders(libboost_filesystem-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_filesystem%{lib_appendix}-devel
+Development headers for Boost.Filesystem library, a library providing
+facilities to manipulate files and directories, and the paths that
+identify them.
+
+%package     -n libboost_graph%{lib_appendix}
+Summary:        Boost.Graph runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_graph%{lib_appendix}
+This package contains the Boost.Graph runtime library.
+
+%package     -n libboost_graph%{lib_appendix}-devel
+Summary:        Development headers for Boost.Graph library
+Group:          Development/Libraries/C and C++
+Requires:       libboost_graph%{lib_appendix} = %{version}
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+## FIXME:!!!! need better list of requirements here
+Requires:       libstdc++-devel
+Provides:       libboost_graph-devel = %{version}
+Conflicts:      otherproviders(libboost_graph-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_graph%{lib_appendix}-devel
+Development headers for Boost.Graph library. The BGL algorithms consist
+of a core set of algorithm patterns and a larger set of graph
+algorithms. The core algorithm patterns are Breadth First Search, Depth
+First Search, and Uniform Cost Search.
+
+
+%package     -n libboost_iostreams%{lib_appendix}
+Summary:        Boost.IOStreams Runtime Libraries
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_iostreams%{lib_appendix}
+This package contains the Boost.IOStreams Runtime libraries.
+
+%package     -n libboost_iostreams%{lib_appendix}-devel
+Summary:        Development headers for Boost.IOStreans library
+Group:          Development/Libraries/C and C++
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libboost_iostreams%{lib_appendix} = %{version}
+Provides:       libboost_iostreams-devel = %{version}
+Conflicts:      otherproviders(libboost_iostreams-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_iostreams%{lib_appendix}-devel
+Boost.IOStreams provides a framework for defining streams, stream
+buffers and IO filters
+
+%package     -n libboost_log%{lib_appendix}
+Summary:        Boost.Log runtime Run-Time library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_log%{lib_appendix}
+This package contains runtime library for Boost.Log.
+
+%package     -n libboost_log%{lib_appendix}-devel
+Summary:        Development headers for Boost.Log library
+Group:          Development/Libraries/C and C++
+Requires:       libboost_date_time%{lib_appendix}-devel = %{version}
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libboost_log%{lib_appendix} = %{version}
+Requires:       libboost_system%{lib_appendix} = %{version}
+Requires:       libboost_thread%{lib_appendix} = %{version}
+Provides:       libboost_log-devel = %{version}
+Conflicts:      otherproviders(libboost_log-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_log%{lib_appendix}-devel
+Development headers for Boost.Log library which 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 libboost_math%{lib_appendix}
+Summary:        Boost.Math runtime libraries
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_math%{lib_appendix}
+This package contains the Boost.Math Runtime libraries.
+
+%package     -n libboost_math%{lib_appendix}-devel
+Summary:        Development headers for Boost.Math libraries
+Group:          Development/Libraries/C and C++
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libboost_math%{lib_appendix} = %{version}
+Provides:       libboost_math-devel = %{version}
+Conflicts:      otherproviders(libboost_math-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_math%{lib_appendix}-devel
+Development headers for Boost.Math* boost libraries.
+
+%if %{with build_mpi}
+%package     -n libboost_mpi%{lib_appendix}
+Summary:        Boost.MPI runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_mpi%{lib_appendix}
+This package contains the Boost.MPI runtime library.
+
+%package     -n libboost_mpi%{lib_appendix}-devel
+Summary:        Development headers for Boost.MPI library
+Group:          Development/Libraries/C and C++
+Requires:       libboost_graph%{lib_appendix}-devel
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+%if %{with python2}
+Requires:       libboost_python-py2_7-%{lib_appendix}-devel
+%endif
+%if %{with python3}
+Requires:       libboost_python-py3-%{lib_appendix}-devel
+%endif
+Requires:       %{mpi_implem}-devel
+Requires:       libboost_mpi%{lib_appendix} = %{version}
+Requires:       libboost_serialization%{lib_appendix}-devel
+Provides:       libboost_mpi-devel = %{version}
+Conflicts:      otherproviders(libboost_mpi-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_mpi%{lib_appendix}-devel
+Development headers for Boost.MPI boost library
+
+%package     -n libboost_graph_parallel%{lib_appendix}
+Summary:        Boost.Graph.Distributed runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_graph_parallel%{lib_appendix}
+This package contains the Boost.Graph parallel runtime library
+
+%package     -n libboost_graph_parallel%{lib_appendix}-devel
+Summary:        Development headers for Boost.Graph parallel library
+Group:          Development/Libraries/C and C++
+Requires:       libboost_graph_parallel%{lib_appendix} = %{version}
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libboost_mpi%{lib_appendix}-devel = %{version}
+Provides:       libboost_graph_parallel-devel = %{version}
+Conflicts:      otherproviders(libboost_graph_parallel-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_graph_parallel%{lib_appendix}-devel
+Development headers for Boost.Graph parallel boost library.
+
+%if %{with python2}
+%package     -n libboost_mpi_python-py2_7-%{lib_appendix}
+Summary:        Boost.MPI Python serialization library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_mpi_python-py2_7-%{lib_appendix}
+This package contains the Boost.MPI Python 2.7 serialization library
+
+%package     -n libboost_mpi_python-py2_7-%{lib_appendix}-devel
+Summary:        Development library for Boost.MPI Python 2.7 serialization
+Group:          Development/Libraries/C and C++
+Requires:       libboost_mpi%{lib_appendix}-devel = %{version}
+Requires:       libboost_mpi_python-py2_7-%{lib_appendix} = %{version}
+Requires:       libboost_python-py2_7-%{lib_appendix} = %{version}
+Provides:       libboost_mpi_python-devel = %{version}
+Conflicts:      otherproviders(libboost_mpi_python-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_mpi_python-py2_7-%{lib_appendix}-devel
+This package contains the Boost.MPI development library for Python 2.7
+serialization interface.
+
+
+%package     -n python2-boost_parallel_mpi%{lib_appendix}
+Summary:        Python 2.7 bindings for Boost.Parallel.MPI library
+Group:          Development/Languages/Python
+Provides:       python-boost_parallel_mpi = %{version}
+Provides:       python-boost_parallel_mpi%{lib_appendix} = %{version}
+Conflicts:      otherproviders(python-boost_parallel_mpi)
+
+%description -n python2-boost_parallel_mpi%{lib_appendix}
+This package contains the Boost.Parallel.MPI bindings for Python 2.7
+
+%endif # python2
+
+%if %{with python3}
+
+%package     -n libboost_mpi_python-py3-%{lib_appendix}
+Summary:        Boost.MPI Python 3.x serialization library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_mpi_python-py3-%{lib_appendix}
+This package contains the Boost.MPI Python 3.x serialization
+inteface.
+
+%package     -n libboost_mpi_python-py3-%{lib_appendix}-devel
+Summary:        Development library for Boost.MPI Python 3.x serialization
+Group:          Development/Libraries/C and C++
+Requires:       libboost_mpi%{lib_appendix}-devel = %{version}
+Requires:       libboost_mpi_python-py3-%{lib_appendix} = %{version}
+Requires:       libboost_python-py3-%{lib_appendix} = %{version}
+Provides:       libboost_mpi_python3-devel = %{version}
+Conflicts:      otherproviders(libboost_mpi_python3-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_mpi_python-py3-%{lib_appendix}-devel
+This package contains the Boost.MPI development library for Python 3.x
+serialization interface
+
+%package     -n python3-boost_parallel_mpi%{lib_appendix}
+Summary:        Python 3.x bindings for Boost.Parallel.MPI library
+Group:          Development/Languages/Python
+Provides:       python3-boost_parallel_mpi = %{version}
+Conflicts:      otherproviders(python3-boost_parallel_mpi)
+
+%description -n python3-boost_parallel_mpi%{lib_appendix}
+This package contains the Boost.Parallel.MPI bindings for Python 3.x
+
+%endif  # python3
+%endif  # mpi
+
+%package    -n libboost_test%{lib_appendix}
+Summary:        Boost.Test runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_test%{lib_appendix}
+This package contains the BoosttTest runtime library.
+
+%package     -n libboost_test%{lib_appendix}-devel
+Summary:        Development headers for Boost.Test library
+Group:          Development/Libraries/C and C++
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libboost_test%{lib_appendix} = %{version}
+Provides:       libboost_test-devel = %{version}
+Conflicts:      otherproviders(libboost_test-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_test%{lib_appendix}-devel
+Development headers for Boost.Test library. Boost.Test supports for
+simple program testing, full unit testing, and for program execution
+monitoring.
+
+%package     -n libboost_program_options%{lib_appendix}
+Summary:        Boost.ProgramOptions runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_program_options%{lib_appendix}
+This package contains the Boost.ProgramOptions runtime library.
+
+%package     -n libboost_program_options%{lib_appendix}-devel
+Summary:        Development headers for Boost.ProgramOptions library
+Group:          Development/Libraries/C and C++
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libboost_program_options%{lib_appendix} = %{version}
+Provides:       libboost_program_options-devel = %{version}
+Conflicts:      otherproviders(libboost_program_options-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_program_options%{lib_appendix}-devel
+This package contains development headers for Boost.ProgramOptions
+library.
+
+%if %{with python2}
+%package     -n libboost_python-py2_7-%{lib_appendix}
+Summary:        Boost.Python runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_python-py2_7-%{lib_appendix}
+This package contains the Boost::Python runtime library for default
+version of python.
+
+%package     -n libboost_python-py2_7-%{lib_appendix}-devel
+Summary:        Development headers for Boost.Python library
+Group:          Development/Libraries/C and C++
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libboost_python-py2_7-%{lib_appendix} = %{version}
+Provides:       libboost_python-devel = %{version}
+Conflicts:      otherproviders(libboost_python-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_python-py2_7-%{lib_appendix}-devel
+Development headers for Boost::Python library for the default version of
+python.
+
+%if %{with python_numpy}
+%package     -n libboost_numpy-py2_7-%{lib_appendix}
+Summary:        Boost.Python.NumPy runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_numpy-py2_7-%{lib_appendix}
+This package contains the Boost::Python::NumPy runtime library for default
+version of python.
+
+%package     -n libboost_numpy-py2_7-%{lib_appendix}-devel
+Summary:        Development headers for Boost.Python.NumPy library
+Group:          Development/Libraries/C and C++
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libboost_numpy-py2_7-%{lib_appendix} = %{version}
+Provides:       libboost_numpy-devel = %{version}
+Conflicts:      otherproviders(libboost_numpy-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_numpy-py2_7-%{lib_appendix}-devel
+Development headers for Boost::Python::NumPy library for the default version of
+python.
+%endif # with numpy
+%endif # with python2
+
+%if %{with python3}
+%package     -n libboost_python-py3-%{lib_appendix}
+Summary:        Boost.Python runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description    -n libboost_python-py3-%{lib_appendix}
+This package contains the Boost.Python runtime libraries for python3
+bindings.
+
+%package     -n libboost_python-py3-%{lib_appendix}-devel
+Summary:        Development headers for Boost.Python library
+Group:          Development/Libraries/C and C++
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libboost_python-py3-%{lib_appendix} = %{version}
+Provides:       libboost_python3-devel = %{version}
+Conflicts:      otherproviders(libboost_python3-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_python-py3-%{lib_appendix}-devel
+Development headers for Boost.Python library. This package contains
+library for python3 development for boost.
+
+%if %{with python_numpy}
+%package     -n libboost_numpy-py3-%{lib_appendix}
+Summary:        Boost.Python.NumPy runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description    -n libboost_numpy-py3-%{lib_appendix}
+This package contains the Boost.Python.NumPy runtime libraries for python3
+bindings.
+
+%package     -n libboost_numpy-py3-%{lib_appendix}-devel
+Summary:        Development headers for Boost.Python.NumPy library
+Group:          Development/Libraries/C and C++
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libboost_numpy-py3-%{lib_appendix} = %{version}
+Provides:       libboost_numpy3-devel = %{version}
+Conflicts:      otherproviders(libboost_numpy3-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_numpy-py3-%{lib_appendix}-devel
+Development headers for Boost.Python.NumPy library. This package contains
+library for python3 development for boost.
+%endif  # with numpy
+
+%endif  # with python3
+
+%package     -n libboost_serialization%{lib_appendix}
+Summary:        Boost.Serialization runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_serialization%{lib_appendix}
+This package contains the Boost.Serialization runtime library.
+
+%package     -n libboost_serialization%{lib_appendix}-devel
+Summary:        Development headers for Boost.Serialization library
+Group:          Development/Libraries/C and C++
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libboost_serialization%{lib_appendix} = %{version}
+Provides:       libboost_serialization-devel = %{version}
+Conflicts:      otherproviders(libboost_serialization-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_serialization%{lib_appendix}-devel
+This package contains development headers for Boost.Serialization
+library.
+
+%package     -n libboost_signals%{lib_appendix}
+Summary:        Boost.Signals runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_signals%{lib_appendix}
+This package contains the Boost::Signals Runtime library.
+
+%package     -n libboost_signals%{lib_appendix}-devel
+Summary:        Development headers for Boost.Signals library
+Group:          Development/Libraries/C and C++
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libboost_signals%{lib_appendix} = %{version}
+Provides:       libboost_signals-devel = %{version}
+Conflicts:      otherproviders(libboost_signals-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_signals%{lib_appendix}-devel
+This package contains development headers for Boost.Signals library.
+Boost.Signals is deprecated in favour of Boost.Signals2, a header-only
+library and part of libboost_headers-devel.
+
+%package     -n libboost_stacktrace%{lib_appendix}
+Summary:        Boost.Stacktrace runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_stacktrace%{lib_appendix}
+This package contains the Boost.Stacktrace runtime library.
+
+%package     -n libboost_stacktrace%{lib_appendix}-devel
+Summary:        Development headers for Boost.Stacktrace library
+Group:          Development/Libraries/C and C++
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libboost_stacktrace%{lib_appendix} = %{version}
+Provides:       libboost_stacktrace-devel = %{version}
+Conflicts:      otherproviders(libboost_stacktrace-devel)
+
+%description -n libboost_stacktrace%{lib_appendix}-devel
+This package contains development headers for Boost.Stacktrace library.
+Boost.Stacktrace is a simple C++03 library that provide information
+about call sequence in a human-readable form.
+
+%package     -n libboost_system%{lib_appendix}
+Summary:        Boost.System runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_system%{lib_appendix}
+This package contains the Boost.System runtime library.
+
+%package     -n libboost_system%{lib_appendix}-devel
+Summary:        Development headers for Boost.System library
+Group:          Development/Libraries/C and C++
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libboost_system%{lib_appendix} = %{version}
+Provides:       libboost_system-devel = %{version}
+Conflicts:      otherproviders(libboost_system-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_system%{lib_appendix}-devel
+This package contains development headers for Boost.System library.
+
+%package     -n libboost_thread%{lib_appendix}
+Summary:        Boost.Thread runtime libraries
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_thread%{lib_appendix}
+This package contains the Boost.Thread runtime library.
+
+%package     -n libboost_thread%{lib_appendix}-devel
+Summary:        Development headers for Boost.Thread library
+Group:          Development/Libraries/C and C++
+Requires:       libboost_chrono%{lib_appendix}-devel = %{version}
+Requires:       libboost_date_time%{lib_appendix}-devel = %{version}
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libboost_thread%{lib_appendix} = %{version}
+Provides:       libboost_thread-devel = %{version}
+Conflicts:      otherproviders(libboost_thread-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_thread%{lib_appendix}-devel
+This package contains development headers for Boost.Thread library.
+
+%package     -n libboost_wave%{lib_appendix}
+Summary:        Boost.Wave runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_wave%{lib_appendix}
+This package contains the Boost::Wave runtime library.
+
+%package     -n libboost_wave%{lib_appendix}-devel
+Summary:        Development headers for Boost.Wave library
+Group:          Development/Libraries/C and C++
+Requires:       libboost_filesystem%{lib_appendix}-devel = %{version}
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libboost_serialization%{lib_appendix}-devel = %{version}
+Requires:       libboost_wave%{lib_appendix} = %{version}
+Provides:       libboost_wave-devel = %{version}
+Conflicts:      otherproviders(libboost_wave-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_wave%{lib_appendix}-devel
+This package contains development headers for Boost.Wave library.
+
+%package     -n libboost_regex%{lib_appendix}
+Summary:        Boost.Regex runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_regex%{lib_appendix}
+This package contains the Boost.Regex runtime library.
+
+%package     -n libboost_regex%{lib_appendix}-devel
+Summary:        Development headers for Boost.Regex library
+Group:          Development/Libraries/C and C++
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libboost_regex%{lib_appendix} = %{version}
+Provides:       libboost_regex-devel = %{version}
+Conflicts:      otherproviders(libboost_regex-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_regex%{lib_appendix}-devel
+This package contains development headers for Boost.Regex library.
+
+%package     -n libboost_random%{lib_appendix}
+Summary:        Boost.Random runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_random%{lib_appendix}
+This package contains the Boost.Random runtime library.
+
+%package     -n libboost_random%{lib_appendix}-devel
+Summary:        Development headers for Boost.Random library
+Group:          Development/Libraries/C and C++
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libboost_random%{lib_appendix} = %{version}
+Provides:       libboost_random-devel = %{version}
+Conflicts:      otherproviders(libboost_random-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_random%{lib_appendix}-devel
+This package contains Boost.Random development headers.
+
+%package     -n libboost_chrono%{lib_appendix}
+Summary:        The Boost::Chrono runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_chrono%{lib_appendix}
+This package contains the Boost::Chrono runtime library.
+
+%package     -n libboost_chrono%{lib_appendix}-devel
+Summary:        Development headers for Boost.Chrono library
+Group:          Development/Libraries/C and C++
+Requires:       libboost_chrono%{lib_appendix} = %{version}
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Provides:       libboost_chrono-devel = %{version}
+Conflicts:      otherproviders(libboost_chrono-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_chrono%{lib_appendix}-devel
+This package contains Boost.Chrono development headers.
+
+%package     -n libboost_locale%{lib_appendix}
+Summary:        Boost::Locale runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_locale%{lib_appendix}
+This package contains Boost::Locale runtime library.
+
+%package     -n libboost_locale%{lib_appendix}-devel
+Summary:        Development headers for Boost.Locale library
+Group:          Development/Libraries/C and C++
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libboost_locale%{lib_appendix} = %{version}
+Provides:       libboost_locale-devel = %{version}
+Conflicts:      otherproviders(libboost_locale-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_locale%{lib_appendix}-devel
+This package contains development headers for Boost.Locale library.
+
+%package     -n libboost_timer%{lib_appendix}
+Summary:        Boost.Timer runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_timer%{lib_appendix}
+This package contains Boost.Timer runtime library.
+
+%package     -n libboost_timer%{lib_appendix}-devel
+Summary:        Development headers for Boost.Timer library
+Group:          Development/Libraries/C and C++
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libboost_system%{lib_appendix}-devel = %{version}
+Requires:       libboost_timer%{lib_appendix} = %{version}
+Provides:       libboost_timer-devel = %{version}
+Conflicts:      otherproviders(libboost_timer-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_timer%{lib_appendix}-devel
+This package contains development headers for Boost.Timer library.
+
+%package     -n libboost_type_erasure%{lib_appendix}
+Summary:        Boost.TypeErasure runtime library
+Group:          System/Libraries
+Requires:       boost-license%{lib_appendix}
+
+%description -n libboost_type_erasure%{lib_appendix}
+This package contains Boost::TypeErasure runtime library.
+
+%package     -n libboost_type_erasure%{lib_appendix}-devel
+Summary:        Development headers for Boost.TypeErasure library
+Group:          Development/Libraries/C and C++
+PreReq:         libboost_headers%{lib_appendix}-devel = %{version}
+Requires:       libboost_type_erasure%{lib_appendix} = %{version}
+Provides:       libboost_type_erasure-devel = %{version}
+Conflicts:      otherproviders(libboost_type_erasure-devel)
+Conflicts:      boost-devel < 1.63
+
+%description -n libboost_type_erasure%{lib_appendix}-devel
+This package contains development headers for Boost.TypeErasure library.
+
+%if %{with build_quickbook}
+%package -n %{package_name}-quickbook
+Summary:        Documentation tool geared towards C++
+Group:          Development/Tools/Doc Generators
+Requires:       boost-license%{lib_appendix}
+Provides:       quickbook = %version
+Conflicts:      otherproviders(quickbook)
+
+%description -n %{package_name}-quickbook
+QuickBook is a WikiWiki style documentation tool geared towards C++
+documentation using simple rules and markup for simple formatting
+tasks.
+%endif
+
+%prep
+%setup -q -n boost_%{lib_appendix} -b 3
+#everything in the tarball has the executable flag set ...
+find -type f ! \( -name \*.sh -o -name \*.py -o -name \*.pl \) -exec chmod -x {} +
+%patch1 -p1
+%patch2
+%patch3
+%patch4
+%patch5
+%patch6 -p1
+%patch7
+%patch9 -p1
+%patch10 -p1
+%patch13
+%patch14 -p1
+%patch15 -p1
+%patch16 -p1
+%patch17 -p1
+%patch18 -p1
+%patch20 -p1
+%patch21 -p1
+%patch22 -p1
+%patch23 -p1
+
+%build
+find . -type f -exec chmod u+w {} +
+
+# General case
+cat << EOF >user-config.jam
+import os ;
+local RPM_OPT_FLAGS = [ os.environ RPM_OPT_FLAGS ] ;
+using gcc : : : <compileflags>\$(RPM_OPT_FLAGS) ;
+project user-config ;
+EOF
+
+%if %build_base
+cat << \EOF >.build
+export LIBRARIES_FLAGS="--without-mpi --without-python"
+%if ! %{with build_context}
+# coroutine depends on context
+LIBRARIES_FLAGS+=" --without-context --without-coroutine"
+%endif
+
+%if ! %{with boost_fiber}
+LIBRARIES_FLAGS+=" --without-fiber"
+%endif
+EOF
+
+%else # ! build_base
+
+# Since boost build system is broken and incable of handling multiple python versions,
+# we need to build boost piece by piece. First time to build all the non-python bits,
+# then we build MPI and/or PYTHON modules for two python versions we need.
+# MPI builds a python module.
+cat << \EOF >.build
+export PY_LIBRARIES_FLAGS="--with-python"
+%if %{with build_mpi}
+PY_LIBRARIES_FLAGS+=" --with-mpi"
+%endif
+
+# Dummy entry to make sure we don't build everything
+export LIBRARIES_FLAGS="--with-system"
+
+# Dummy entry replaced with real libraries, if we build something
+%if %{with build_mpi}
+LIBRARIES_FLAGS=" --with-graph_parallel"
+%endif
+
+EOF
+
+%if %{with build_mpi}
+# Set PATH, MANPATH and LD_LIBRARY_PATH for mpi
+. %{_libdir}/mpi/gcc/%{mpi_implem}/bin/mpivars.sh
+%endif
+
+# Need specific Boost Jam config files.
+#   1. one all "normal" libraries
+#   2. one for each python version for for python/mpi libraries
+#      use staging directories for MPI/PYTHON combinations.
+
+# General case
+cat << EOF >user-config.jam
+alias boost_python_alias : : <library>/boost/python//boost_python ;
+EOF
+%endif # ! build_base
+
+# bootstrap b2
+./bootstrap.sh \
+    --prefix=%{_prefix} --exec-prefix=%{_bindir} \
+    --libdir=%{_libdir} --includedir=%{_includedir} \
+    --with-toolset=gcc
+
+# Read shared build instructions
+. ./.build
+
+%if ! %build_base
+
+# Build boost base PYTHON and MPI, installed in python staging
+cp user-config.jam user-config-py.jam
+cat << EOF >> user-config-py.jam
+using python 
+     : %{py_ver}
+     : %{_bindir}/python2
+     : %{_includedir}/python%{py_ver}
+     : %{_libdir}/python%{py_ver}
+     :
+     :
+     ;
+%if %{with build_mpi}
+using mpi ;
+%endif
+EOF
+
+%if %{with python2}
+./b2 -d+2 -q --user-config=./user-config-py.jam \
+    --build-type=minimal --build-dir=./python-build \
+    --python-buildid=py2.7 \
+    --stagedir=./python-stage %{?_smp_mflags} \
+    $PY_LIBRARIES_FLAGS \
+    threading=multi link=shared runtime-link=shared stage
+%endif # with python2
+
+# Build boost python3 and MPI, installed in python3 staging
+%if %{with python3}
+cp user-config.jam user-config-py3.jam
+# sed -i -e 's#//boost_python#//boost_python3#' ./user-config-py3.jam
+%{?!py3_abiflags: %define py3_abiflags m}
+%{?!python3_version: %define python3_version %py3_ver }
+
+cat << EOF >> user-config-py3.jam
+using python
+	: %{python3_version}
+	: %{_bindir}/python3
+	: %{_includedir}/python%{python3_version}%{py3_abiflags}
+	:
+	:
+	: .%{py3_soflags}
+	: %{py3_abiflags}
+	;
+%if %{with build_mpi}
+using mpi ;
+%endif
+EOF
+
+./b2 -d+2 -q --user-config=./user-config-py3.jam \
+    --build-type=minimal --build-dir=./python3-build \
+    --python-buildid=py3 \
+    --stagedir=./python3-stage %{?_smp_mflags} \
+    $PY_LIBRARIES_FLAGS \
+    threading=multi link=shared runtime-link=shared stage
+%endif # python3
+
+%if %{with build_docs}
+cat << EOF >>user-config.jam
+using xsltproc ;
+
+using boostbook
+    : %{_datadir}/xml/docbook/stylesheet/nwalsh/current
+    : %{_datadir}/xml/docbook/schema/dtd/4.2
+    ;
+
+using doxygen ;
+EOF
+%endif
+
+# needed to get graph_parallel built
+%if %{with build_mpi}
+echo 'using mpi ;' >> ./user-config.jam
+%endif
+
+%endif # ! build_base
+
+# This is run for both mini and non-mini build
+./b2 -d+2 -q --user-config=./user-config.jam \
+    --build-type=minimal --build-dir=./build \
+    --stagedir=./stage %{?_smp_mflags} \
+    $LIBRARIES_FLAGS \
+    threading=multi link=shared runtime-link=shared stage
+
+%if ! %build_base
+
+# Verify that all symbols built in different stages are interchangeable.
+# Can't be too careful!
+cp %{SOURCE101} .
+chmod +x symbol_diff.sh
+%if %{with python3}
+./symbol_diff.sh python3-stage/lib/libboost_mpi.so           stage/lib/libboost_mpi.so
+./symbol_diff.sh python3-stage/lib/libboost_serialization.so stage/lib/libboost_serialization.so
+%endif
+%if %{with python2}
+./symbol_diff.sh python-stage/lib/libboost_serialization.so  stage/lib/libboost_serialization.so
+./symbol_diff.sh python-stage/lib/libboost_mpi.so            stage/lib/libboost_mpi.so
+%endif
+#./symbol_diff.sh python-stage/lib/libboost_serialization.so  stage/lib/libboost_serialization.so
+#./symbol_diff.sh python-stage/lib/libboost_mpi.so            stage/lib/libboost_mpi.so
+
+# Build documentation
+%if %{with build_quickbook}
+pushd tools/quickbook
+../../b2 --user-config=../../user-config.jam --v2 dist-bin %{?_smp_mflags}
+popd
+%endif
+
+%if %{with build_docs}
+cd doc
+./b2 --user-config=../user-config.jam --v2 man %{?_smp_mflags}
+%endif
+
+%endif # ! build_base
+
+%install
+
+# Read shared build instructions
+. ./.build
+
+%if ! %build_base
+
+%if %{with build_mpi}
+# Set PATH, MANPATH and LD_LIBRARY_PATH for mpi
+. %{_libdir}/mpi/gcc/%{mpi_implem}/bin/mpivars.sh
+%endif
+
+%if %{with python3}
+./b2 -d+2 -q --user-config=./user-config-py3.jam \
+    --build-type=minimal --build-dir=./python3-build \
+    --python-buildid=py3 \
+    --prefix=%{buildroot}%{_prefix} --exec-prefix=%{buildroot}%{_bindir} \
+    --libdir=%{buildroot}%{_libdir} --includedir=%{buildroot}%{_includedir} \
+    --stagedir=./python3-stage %{?_smp_mflags} \
+    $PY_LIBRARIES_FLAGS \
+    threading=multi link=shared runtime-link=shared install
+%endif
+
+%if %{with python2}
+./b2 -d+2 -q --user-config=./user-config-py.jam \
+    --build-type=minimal --build-dir=./python-build \
+    --python-buildid=py2.7 \
+    --prefix=%{buildroot}%{_prefix} --exec-prefix=%{buildroot}%{_bindir} \
+    --libdir=%{buildroot}%{_libdir} --includedir=%{buildroot}%{_includedir} \
+    --stagedir=./python-stage %{?_smp_mflags} \
+    $PY_LIBRARIES_FLAGS \
+    threading=multi link=shared runtime-link=shared install
+%endif
+
+%endif # ! build_base
+
+# Generic install
+./b2 -d+2 -q \
+     --build-type=minimal --build-dir=./build --stagedir=./stage \
+     --prefix=%{buildroot}%{_prefix} --exec-prefix=%{buildroot}%{_bindir} \
+     --libdir=%{buildroot}%{_libdir} --includedir=%{buildroot}%{_includedir} \
+     --user-config=./user-config.jam \
+     $LIBRARIES_FLAGS \
+     threading=multi link=shared runtime-link=shared install
+
+# No python dependencies in the main tree
+
+! $(ldd %{buildroot}%{_libdir}/*.so* | grep python\\.)
+
+%if ! %build_base
+%if %{with python2}
+ln -s libboost_mpi_python-py2_7.so %{buildroot}%{_libdir}/libboost_mpi_python.so
+ln -s libboost_python-py2_7.so     %{buildroot}%{_libdir}/libboost_python.so
+%endif
+
+%if %{with python3}
+! $(ldd %{buildroot}%{_libdir}/*.so* | grep python3-\\.)
+ln -s libboost_python-py3.so       %{buildroot}%{_libdir}/libboost_python3.so
+%endif
+
+# Move Python libraries over to proper places
+%if %{with python2}
+mkdir -p %{buildroot}%{python2_sitearch}/boost/parallel/mpi/
+mv %{buildroot}/%{_libdir}/mpi.so %{buildroot}%{python2_sitearch}/boost/parallel/mpi/
+install -m 0644 libs/mpi/build/__init__.py %{buildroot}%{python2_sitearch}/boost/parallel/mpi/
+install -m 0644 %{SOURCE11} %{buildroot}%{python2_sitearch}/boost/parallel
+install -m 0644 %{SOURCE11} %{buildroot}%{python2_sitearch}/boost
+%endif
+
+%if %{with python3}
+mkdir -p %{buildroot}%{python3_sitearch}/boost/parallel/mpi/
+mv %{buildroot}/%{_libdir}/mpi.*so %{buildroot}%{python3_sitearch}/boost/parallel/mpi/mpi.%{py3_soflags}.so
+install -m 0644 libs/mpi/build/__init__.py %{buildroot}%{python3_sitearch}/boost/parallel/mpi/
+install -m 0644 %{SOURCE11} %{buildroot}%{python3_sitearch}/boost/parallel
+install -m 0644 %{SOURCE11} %{buildroot}%{python3_sitearch}/boost
+%endif
+
+#install doc files
+mkdir -p %{buildroot}%{my_docdir}
+%if %{with boost_devel}
+install -m 0644 %{SOURCE102} %{buildroot}%{my_docdir}
+%endif
+find libs/ -name \*.htm\* -o -name \*.css -o -name \*.js | xargs dos2unix
+find . -name \*.htm\* -o -name \*.gif -o -name \*.css -o -name \*.jpg -o -name \*.png -o -name \*.ico | \
+	tar --files-from=%{SOURCE4} -cf - --files-from=- | tar -C %{buildroot}%{my_docdir} -xf -
+rm -rf %{buildroot}%{my_docdir}/boost
+#ln -s %%{_includedir}/boost %%{buildroot}%%{my_docdir}
+#ln -s ../LICENSE_1_0.txt %%{buildroot}%%{my_docdir}/libs
+find %{buildroot}%{my_docdir} -name \*.py -exec chmod -x {} +
+chmod -x ../boost_%{short_version}_pdf/*.pdf
+
+%if %{with build_quickbook}
+mkdir -p %{buildroot}%{_bindir}
+install -m 0755 dist/bin/quickbook %{buildroot}%{_bindir}/quickbook
+%endif
+
+%endif # ! build_base
+
+%if %build_base
+mkdir -p %{buildroot}%{_bindir}
+install -m 755 bjam %{buildroot}%{_bindir}
+ln -s bjam %{buildroot}%{_bindir}/jam
+
+# Remove exception library, but only if the symbols are not
+# actually used. For now, the only symbol that is linked is
+# should never be used as it's only available on Windows. So,
+# verify that here.
+objdump -Ctj .text -Ctj .text %{buildroot}%{_libdir}/libboost_exception.so | \
+  grep '^[0-9a-f]\+[[:space:]]\+g[[:space:]]\+F' | \
+  sed -e 's#[0-9a-f]\+[[:space:]]\+g[[:space:]]\+F[[:space:]]\+\.text[[:space:]]\+[0-9a-f]\+[[:space:]]\+##' | \
+  diff %{SOURCE10} - || echo "WARNING: libexception symbol change?"
+rm %{buildroot}%{_libdir}/libboost_exception.so
+rm %{buildroot}%{_libdir}/libboost_exception.so.%{version}
+
+%fdupes %{buildroot}%{_includedir}/boost
+mkdir -p %{buildroot}%{my_docdir}
+%else  # ! build_base
+rm -r %{buildroot}%{_includedir}/boost
+rm %{buildroot}%{_libdir}/libboost_serialization*
+rmdir --ignore-fail-on-non-empty %{buildroot}%{_libdir}
+%fdupes %{buildroot}%{my_docdir}
+%endif
+
+%if %build_base
+%post -n libboost_atomic%{lib_appendix} -p /sbin/ldconfig
+%post -n libboost_container%{lib_appendix} -p /sbin/ldconfig
+%post -n libboost_context%{lib_appendix} -p /sbin/ldconfig
+%post -n libboost_coroutine%{lib_appendix} -p /sbin/ldconfig
+%post -n libboost_date_time%{lib_appendix} -p /sbin/ldconfig
+%post -n libboost_fiber%{lib_appendix} -p /sbin/ldconfig
+%post -n libboost_filesystem%{lib_appendix} -p /sbin/ldconfig
+%post -n libboost_iostreams%{lib_appendix} -p /sbin/ldconfig
+%post -n libboost_log%{lib_appendix} -p /sbin/ldconfig
+%post -n libboost_test%{lib_appendix} -p /sbin/ldconfig
+%post -n libboost_program_options%{lib_appendix} -p /sbin/ldconfig
+
+%post -n libboost_regex%{lib_appendix} -p /sbin/ldconfig
+%post -n libboost_serialization%{lib_appendix} -p /sbin/ldconfig
+%post -n libboost_signals%{lib_appendix} -p /sbin/ldconfig
+%post -n libboost_thread%{lib_appendix} -p /sbin/ldconfig
+%post -n libboost_type_erasure%{lib_appendix} -p /sbin/ldconfig
+%post -n libboost_math%{lib_appendix} -p /sbin/ldconfig
+
+%post -n libboost_graph%{lib_appendix} -p /sbin/ldconfig
+%post -n libboost_stacktrace%{lib_appendix} -p /sbin/ldconfig
+%post -n libboost_system%{lib_appendix} -p /sbin/ldconfig
+%post -n libboost_wave%{lib_appendix} -p /sbin/ldconfig
+%post -n libboost_random%{lib_appendix} -p /sbin/ldconfig
+%post -n libboost_chrono%{lib_appendix} -p /sbin/ldconfig
+%post -n libboost_locale%{lib_appendix} -p /sbin/ldconfig
+%post -n libboost_timer%{lib_appendix} -p /sbin/ldconfig
+
+%else  # ! build_base
+
+%if %{with python2}
+%post -n libboost_python-py2_7-%{lib_appendix} -p /sbin/ldconfig
+%if %{with python_numpy}
+%post -n libboost_numpy-py2_7-%{lib_appendix} -p /sbin/ldconfig
+%endif
+%endif
+
+%if %{with python3}
+%post -n libboost_python-py3-%{lib_appendix} -p /sbin/ldconfig
+%if %{with python_numpy}
+%post -n libboost_numpy-py3-%{lib_appendix} -p /sbin/ldconfig
+%endif
+%endif
+
+%if %{with build_mpi}
+%post -n libboost_mpi%{lib_appendix} -p /sbin/ldconfig
+%post -n libboost_graph_parallel%{lib_appendix} -p /sbin/ldconfig
+%if %{with python2}
+%post -n libboost_mpi_python-py2_7-%{lib_appendix} -p /sbin/ldconfig
+%endif
+%if %{with python3}
+%post -n libboost_mpi_python-py3-%{lib_appendix} -p /sbin/ldconfig
+%endif
+%endif
+
+%endif # ! build_base
+
+%if %build_base
+%postun -n libboost_atomic%{lib_appendix} -p /sbin/ldconfig
+%postun -n libboost_container%{lib_appendix} -p /sbin/ldconfig
+%postun -n libboost_context%{lib_appendix} -p /sbin/ldconfig
+%postun -n libboost_coroutine%{lib_appendix} -p /sbin/ldconfig
+%postun -n libboost_date_time%{lib_appendix} -p /sbin/ldconfig
+%postun -n libboost_fiber%{lib_appendix} -p /sbin/ldconfig
+%postun -n libboost_filesystem%{lib_appendix} -p /sbin/ldconfig
+%postun -n libboost_iostreams%{lib_appendix} -p /sbin/ldconfig
+%postun -n libboost_log%{lib_appendix} -p /sbin/ldconfig
+%postun -n libboost_test%{lib_appendix} -p /sbin/ldconfig
+%postun -n libboost_program_options%{lib_appendix} -p /sbin/ldconfig
+%postun -n libboost_regex%{lib_appendix} -p /sbin/ldconfig
+%postun -n libboost_serialization%{lib_appendix} -p /sbin/ldconfig
+%postun -n libboost_signals%{lib_appendix} -p /sbin/ldconfig
+%postun -n libboost_thread%{lib_appendix} -p /sbin/ldconfig
+%postun -n libboost_type_erasure%{lib_appendix} -p /sbin/ldconfig
+%postun -n libboost_math%{lib_appendix} -p /sbin/ldconfig
+
+%postun -n libboost_graph%{lib_appendix} -p /sbin/ldconfig
+%postun -n libboost_stacktrace%{lib_appendix} -p /sbin/ldconfig
+%postun -n libboost_system%{lib_appendix} -p /sbin/ldconfig
+%postun -n libboost_wave%{lib_appendix} -p /sbin/ldconfig
+%postun -n libboost_random%{lib_appendix} -p /sbin/ldconfig
+%postun -n libboost_chrono%{lib_appendix} -p /sbin/ldconfig
+%postun -n libboost_locale%{lib_appendix} -p /sbin/ldconfig
+%postun -n libboost_timer%{lib_appendix} -p /sbin/ldconfig
+
+%else # ! build_base
+
+%if %{with python2}
+%postun -n libboost_python-py2_7-%{lib_appendix} -p /sbin/ldconfig
+%if %{with python_numpy}
+%postun -n libboost_numpy-py2_7-%{lib_appendix} -p /sbin/ldconfig
+%endif
+%endif
+
+%if %{with python3}
+%postun -n libboost_python-py3-%{lib_appendix} -p /sbin/ldconfig
+%if %{with python_numpy}
+%postun -n libboost_numpy-py3-%{lib_appendix} -p /sbin/ldconfig
+%endif
+%endif
+
+%if %{with build_mpi}
+%postun -n libboost_mpi%{lib_appendix} -p /sbin/ldconfig
+%postun -n libboost_graph_parallel%{lib_appendix} -p /sbin/ldconfig
+%if %{with python2}
+%postun -n libboost_mpi_python-py2_7-%{lib_appendix} -p /sbin/ldconfig
+%endif
+%if %{with python3}
+%postun -n libboost_mpi_python-py3-%{lib_appendix} -p /sbin/ldconfig
+%endif
+%endif
+
+%endif # build_base
+
+%if %{build_base}
+%files -n %{package_name}-jam
+%defattr(-, root, root, -)
+%{_bindir}/bjam
+%{_bindir}/jam
+
+%files -n libboost_atomic%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_atomic.so.%{version}
+
+%files -n libboost_atomic%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_atomic.so
+
+%files -n libboost_container%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_container.so.%{version}
+
+%files -n libboost_container%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_container.so
+
+%if %{with build_context}
+
+%files -n libboost_context%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_context.so.%{version}
+
+%files -n libboost_context%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_context.so
+
+%files -n libboost_coroutine%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_coroutine.so.%{version}
+
+%files -n libboost_coroutine%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_coroutine.so
+
+%endif # if with build_context
+
+%files -n libboost_date_time%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_date_time.so.%{version}
+
+%files -n libboost_date_time%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_date_time.so
+
+%if %{with boost_fiber}
+
+%files -n libboost_fiber%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_fiber.so.%{version}
+
+%files -n libboost_fiber%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_fiber.so
+
+%endif # with boost_fiber
+
+%files -n libboost_filesystem%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_filesystem.so.%{version}
+
+%files -n libboost_filesystem%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_filesystem.so
+
+%files -n libboost_graph%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_graph.so.%{version}
+
+%files -n libboost_graph%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_graph.so
+
+%files -n libboost_iostreams%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_iostreams.so.%{version}
+
+%files -n libboost_iostreams%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_iostreams.so
+
+%files -n libboost_log%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_log.so.%{version}
+%{_libdir}/libboost_log_setup.so.%{version}
+
+%files -n libboost_log%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_log.so
+%{_libdir}/libboost_log_setup.so
+
+%files -n libboost_math%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_math_c99f.so.%{version}
+%{_libdir}/libboost_math_c99l.so.%{version}
+%{_libdir}/libboost_math_c99.so.%{version}
+%{_libdir}/libboost_math_tr1f.so.%{version}
+%{_libdir}/libboost_math_tr1l.so.%{version}
+%{_libdir}/libboost_math_tr1.so.%{version}
+
+%files -n libboost_math%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_math_c99f.so
+%{_libdir}/libboost_math_c99l.so
+%{_libdir}/libboost_math_c99.so
+%{_libdir}/libboost_math_tr1f.so
+%{_libdir}/libboost_math_tr1l.so
+%{_libdir}/libboost_math_tr1.so
+
+%files -n libboost_test%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_prg_exec_monitor.so.%{version}
+%{_libdir}/libboost_test_exec_monitor.so.%{version}
+%{_libdir}/libboost_unit_test_framework.so.%{version}
+
+%files -n libboost_test%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_prg_exec_monitor.so
+%{_libdir}/libboost_test_exec_monitor.so
+%{_libdir}/libboost_unit_test_framework.so
+
+%files -n libboost_program_options%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_program_options.so.%{version}
+
+%files -n libboost_program_options%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_program_options.so
+%endif # build_base
+
+%if ! %build_base
+
+%if %{with build_mpi}
+%files -n libboost_mpi%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_mpi.so.%{version}
+
+%files -n libboost_mpi%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_mpi.so
+
+%files -n libboost_graph_parallel%{lib_appendix}
+%defattr(-,root,root)
+%{_libdir}/libboost_graph_parallel.so.%{version}
+
+%files -n libboost_graph_parallel%{lib_appendix}-devel
+%defattr(-,root,root)
+%{_libdir}/libboost_graph_parallel.so
+
+%if %{with python2}
+%files -n libboost_mpi_python-py2_7-%{lib_appendix}
+%defattr(-,root,root)
+%{_libdir}/libboost_mpi_python-py2_7.so.%{version}
+
+%files -n libboost_mpi_python-py2_7-%{lib_appendix}-devel
+%defattr(-,root,root)
+%{_libdir}/libboost_mpi_python-py2_7.so
+%{_libdir}/libboost_mpi_python.so
+
+%files -n python2-boost_parallel_mpi%{lib_appendix}
+%defattr(-, root, root, -)
+%dir %{python2_sitearch}/boost
+%dir %{python2_sitearch}/boost/parallel
+%dir %{python2_sitearch}/boost/parallel/mpi
+%{python2_sitearch}/boost/__init__.py
+%{python2_sitearch}/boost/parallel/__init__.py
+%{python2_sitearch}/boost/parallel/mpi/__init__.py
+%{python2_sitearch}/boost/parallel/mpi/mpi.so
+%endif # with python2
+
+%if %{with python3}
+%files -n libboost_mpi_python-py3-%{lib_appendix}
+%defattr(-,root,root)
+%{_libdir}/libboost_mpi_python-py3.so.%{version}
+
+%files -n libboost_mpi_python-py3-%{lib_appendix}-devel
+%defattr(-,root,root)
+%{_libdir}/libboost_mpi_python-py3.so
+
+%files -n python3-boost_parallel_mpi%{lib_appendix}
+%defattr(-, root, root, -)
+%dir %{python3_sitearch}/boost
+%dir %{python3_sitearch}/boost/parallel
+%dir %{python3_sitearch}/boost/parallel/mpi
+%{python3_sitearch}/boost/__init__.py
+%{python3_sitearch}/boost/parallel/__init__.py
+%{python3_sitearch}/boost/parallel/mpi/__init__.py
+%{python3_sitearch}/boost/parallel/mpi/mpi.%{py3_soflags}.so
+
+%endif # with python3
+%endif # with build_mpi
+
+%if %{with python2}
+%files -n libboost_python-py2_7-%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_python-py2_7.so.%{version}
+
+%files -n libboost_python-py2_7-%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_python.so
+%{_libdir}/libboost_python-py2_7.so
+
+%if %{with python_numpy}
+%files -n libboost_numpy-py2_7-%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_numpy-py2_7.so.%{version}
+
+%files -n libboost_numpy-py2_7-%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_numpy-py2_7.so
+
+%endif # with numpy
+%endif # with python2
+
+%if %{with python3}
+%files -n libboost_python-py3-%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_python-py3.so.%{version}
+
+%files -n libboost_python-py3-%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_python3.so
+%{_libdir}/libboost_python-py3.so
+
+%if %{with python_numpy}
+%files -n libboost_numpy-py3-%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_numpy-py3.so.%{version}
+
+%files -n libboost_numpy-py3-%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_numpy-py3.so
+
+%endif  # with numpy
+%endif  # with python3
+%endif  # ! build_base
+
+%if %build_base
+%files -n libboost_serialization%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_serialization.so.%{version}
+%{_libdir}/libboost_wserialization.so.%{version}
+
+%files -n libboost_serialization%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_serialization.so
+%{_libdir}/libboost_wserialization.so
+
+%files -n libboost_signals%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_signals.so.%{version}
+
+%files -n libboost_signals%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_signals.so
+
+%files -n libboost_stacktrace%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_stacktrace_addr2line.so.%{version}
+%{_libdir}/libboost_stacktrace_basic.so.%{version}
+%{_libdir}/libboost_stacktrace_noop.so.%{version}
+
+%files -n libboost_stacktrace%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_stacktrace_addr2line.so
+%{_libdir}/libboost_stacktrace_basic.so
+%{_libdir}/libboost_stacktrace_noop.so
+
+%files -n libboost_system%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_system.so.%{version}
+
+%files -n libboost_system%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_system.so
+
+%files -n libboost_thread%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_thread.so.%{version}
+
+%files -n libboost_thread%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_thread.so
+
+%files -n libboost_wave%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_wave.so.%{version}
+
+%files -n libboost_wave%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_wave.so
+
+%files -n libboost_regex%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_regex.so.%{version}
+
+%files -n libboost_regex%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_regex.so
+
+%files -n libboost_random%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_random.so.%{version}
+
+%files -n libboost_random%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_random.so
+
+%files -n libboost_chrono%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_chrono.so.%{version}
+
+%files -n libboost_chrono%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_chrono.so
+
+%files -n libboost_locale%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_locale.so.%{version}
+
+%files -n libboost_locale%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_locale.so
+
+%files -n libboost_timer%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_timer.so.%{version}
+
+%files -n libboost_timer%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_timer.so
+
+%files -n libboost_type_erasure%{lib_appendix}
+%defattr(-, root, root, -)
+%{_libdir}/libboost_type_erasure.so.%{version}
+
+%files -n libboost_type_erasure%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%{_libdir}/libboost_type_erasure.so
+%endif # if build_base
+
+%if ! %build_base
+%if %{with boost_devel}
+%files -n %{package_name}-devel
+%defattr(-, root, root, -)
+%dir %{my_docdir}
+%{my_docdir}/README.boost-devel
+%endif
+
+%files -n %{package_name}-doc-html
+%defattr(-, root, root, -)
+%dir %{my_docdir}
+%doc %{my_docdir}/*
+# %%exclude %%{my_docdir}/LICENSE_1_0.txt
+%if %{with boost_devel}
+%exclude %{my_docdir}/README.boost-devel
+%endif
+
+%if %{with build_docs}
+%files doc-man
+%defattr(-, root, root, -)
+%doc %{_mandir}/man3/*.3.gz
+%doc %{_mandir}/man7/*.7.gz
+%doc %{_mandir}/man9/*.9.gz
+%endif
+
+%if %{with package_pdf}
+%files -n %{package_name}-doc-pdf
+%defattr(-, root, root, -)
+%doc ../boost_%{short_version}_pdf/*.pdf
+%endif
+
+%if %{with build_quickbook}
+%files -n %{package_name}-quickbook
+%defattr(-, root, root, -)
+%{_bindir}/quickbook
+%endif
+%endif # ! build_base
+
+%if %build_base
+%files -n libboost_headers%{lib_appendix}-devel
+%defattr(-, root, root, -)
+%dir %{_includedir}/boost
+%{_includedir}/boost/*
+
+%files -n boost-license%{lib_appendix}
+%defattr(-, root, root, -)
+%license LICENSE_1_0.txt
+
+%endif
+
+%changelog
diff --git a/dynamic_linking.patch b/dynamic_linking.patch
new file mode 100644
index 0000000..5df4dea
--- /dev/null
+++ b/dynamic_linking.patch
@@ -0,0 +1,115 @@
+Index: boost_1_63_0/libs/test/build/Jamfile.v2
+===================================================================
+--- boost_1_63_0.orig/libs/test/build/Jamfile.v2
++++ boost_1_63_0/libs/test/build/Jamfile.v2
+@@ -93,7 +93,7 @@ lib boost_test_exec_monitor
+   : # sources
+     $(TEST_EXEC_MON_SOURCES).cpp
+   : # requirements
+-    <link>static
++    # <link>static
+   : # default build
+   : # usage-requirements
+     <link>shared:<define>BOOST_TEST_DYN_LINK=1
+Index: boost_1_63_0/libs/exception/build/Jamfile.v2
+===================================================================
+--- boost_1_63_0.orig/libs/exception/build/Jamfile.v2
++++ boost_1_63_0/libs/exception/build/Jamfile.v2
+@@ -7,7 +7,7 @@
+ 
+ project boost/exception
+     : source-location ../src
+-    : requirements <link>static
++    : # requirements <link>static
+     ;
+ 
+ lib boost_exception : clone_current_exception_non_intrusive.cpp ;
+Index: boost_1_63_0/libs/chrono/build/Jamfile.v2
+===================================================================
+--- boost_1_63_0.orig/libs/chrono/build/Jamfile.v2
++++ boost_1_63_0/libs/chrono/build/Jamfile.v2
+@@ -99,7 +99,7 @@ project boost/chrono
+ 
+         <define>BOOST_SYSTEM_NO_DEPRECATED
+         <link>shared:<define>BOOST_CHRONO_DYN_LINK=1
+-        <link>static:<define>BOOST_CHRONO_STATIC_LINK=1
++        # <link>static:<define>BOOST_CHRONO_STATIC_LINK=1
+         <toolset>gcc-3.4.4:<linkflags>--enable-auto-import
+         <toolset>gcc-4.3.4:<linkflags>--enable-auto-import
+         <toolset>gcc-4.4.0,<target-os>windows:<linkflags>--enable-auto-import 
+@@ -113,6 +113,6 @@ lib boost_chrono
+     : $(SOURCES).cpp
+     :
+     <link>shared:<define>BOOST_ALL_DYN_LINK=1 # tell source we're building dll's
+-    <link>static:<define>BOOST_All_STATIC_LINK=1 # tell source we're building static lib's
++    # <link>static:<define>BOOST_All_STATIC_LINK=1 # tell source we're building static lib's
+     ;
+ 
+Index: boost_1_63_0/libs/system/build/Jamfile.v2
+===================================================================
+--- boost_1_63_0.orig/libs/system/build/Jamfile.v2
++++ boost_1_63_0/libs/system/build/Jamfile.v2
+@@ -11,7 +11,7 @@ project boost/system
+     : source-location ../src
+     : usage-requirements  # pass these requirement to dependents (i.e. users)
+       <link>shared:<define>BOOST_SYSTEM_DYN_LINK=1
+-      <link>static:<define>BOOST_SYSTEM_STATIC_LINK=1
++#      <link>static:<define>BOOST_SYSTEM_STATIC_LINK=1
+     ;
+ 
+ SOURCES = error_code ;
+@@ -19,7 +19,7 @@ SOURCES = error_code ;
+ lib boost_system
+    : $(SOURCES).cpp
+    : <link>shared:<define>BOOST_SYSTEM_DYN_LINK=1
+-     <link>static:<define>BOOST_SYSTEM_STATIC_LINK=1
++#     <link>static:<define>BOOST_SYSTEM_STATIC_LINK=1
+    ;
+ 
+-boost-install boost_system ;
+\ No newline at end of file
++boost-install boost_system ;
+Index: boost_1_63_0/libs/timer/build/Jamfile.v2
+===================================================================
+--- boost_1_63_0.orig/libs/timer/build/Jamfile.v2
++++ boost_1_63_0/libs/timer/build/Jamfile.v2
+@@ -14,7 +14,7 @@ project boost/timer
+       <library>/boost/system//boost_system
+     : usage-requirements  # pass these requirement to dependants (i.e. users)
+       <link>shared:<define>BOOST_TIMER_DYN_LINK=1
+-      <link>static:<define>BOOST_TIMER_STATIC_LINK=1
++#      <link>static:<define>BOOST_TIMER_STATIC_LINK=1
+     ;
+ 
+ SOURCES = auto_timers_construction cpu_timer ;
+@@ -22,7 +22,7 @@ SOURCES = auto_timers_construction cpu_t
+ lib boost_timer
+    : $(SOURCES).cpp
+    : <link>shared:<define>BOOST_TIMER_DYN_LINK=1
+-     <link>static:<define>BOOST_TIMER_STATIC_LINK=1
++#     <link>static:<define>BOOST_TIMER_STATIC_LINK=1
+    ;
+ 
+ boost-install boost_timer ;
+Index: boost_1_63_0/libs/filesystem/build/Jamfile.v2
+===================================================================
+--- boost_1_63_0.orig/libs/filesystem/build/Jamfile.v2
++++ boost_1_63_0/libs/filesystem/build/Jamfile.v2
+@@ -11,7 +11,7 @@ project boost/filesystem
+     : source-location ../src
+     : usage-requirements # pass these requirement to dependents (i.e. users)
+       <link>shared:<define>BOOST_FILESYSTEM_DYN_LINK=1
+-      <link>static:<define>BOOST_FILESYSTEM_STATIC_LINK=1
++#      <link>static:<define>BOOST_FILESYSTEM_STATIC_LINK=1
+     ;
+ 
+ SOURCES =
+@@ -28,7 +28,7 @@ SOURCES =
+ lib boost_filesystem
+     : $(SOURCES).cpp ../../system/build//boost_system
+     : <link>shared:<define>BOOST_FILESYSTEM_DYN_LINK=1
+-      <link>static:<define>BOOST_FILESYSTEM_STATIC_LINK=1
++#      <link>static:<define>BOOST_FILESYSTEM_STATIC_LINK=1
+     :
+     : # Boost.Filesystem uses some of Boost.System functions in inlined/templated
+       # functions, so clients that use Boost.Filesystem will have direct references 
diff --git a/exception.objdump b/exception.objdump
new file mode 100644
index 0000000..4d03ed3
--- /dev/null
+++ b/exception.objdump
@@ -0,0 +1 @@
+boost::exception_detail::clone_current_exception_non_intrusive(boost::exception_detail::clone_base const*&)
diff --git a/existing_extra_docs b/existing_extra_docs
new file mode 100644
index 0000000..773c668
--- /dev/null
+++ b/existing_extra_docs
@@ -0,0 +1,470 @@
+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/conversion/cast_test.cpp
+libs/conversion/lexical_cast_test.cpp
+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/filesystem/test/wide_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.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/random/nondet_random_speed.cpp
+libs/random/random_demo.cpp
+libs/random/random_speed.cpp
+libs/random/random_test.cpp
+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/addressof_test.cpp
+libs/utility/base_from_member_test.cpp
+libs/utility/call_traits_test.cpp
+libs/utility/iterators_test.cpp
+libs/utility/noncopyable_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
+more/blanket-permission.txt
+tools/build/v2/hacking.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/libreoffice_compat_backports.patch b/libreoffice_compat_backports.patch
new file mode 100644
index 0000000..502eb86
--- /dev/null
+++ b/libreoffice_compat_backports.patch
@@ -0,0 +1,17 @@
+Backport Boost::Optional::has_value() from
+https://github.com/boostorg/optional/commit/5182f7f30fad87023ae5e5a4e1f660fb513fb469
+needed by LibreOffice 6.4.2
+
+
+Index: boost_1_66_0/boost/optional/optional.hpp
+===================================================================
+--- boost_1_66_0.orig/boost/optional/optional.hpp
++++ boost_1_66_0/boost/optional/optional.hpp
+@@ -1334,6 +1334,7 @@ class optional
+ #endif
+       
+     bool operator!() const BOOST_NOEXCEPT { return !this->is_initialized() ; }
++    bool has_value() const BOOST_NOEXCEPT { return this->is_initialized() ; }
+     
+     BOOST_EXPLICIT_OPERATOR_BOOL_NOEXCEPT()
+ } ;
diff --git a/python_library_name.patch b/python_library_name.patch
new file mode 100644
index 0000000..f3da6cd
--- /dev/null
+++ b/python_library_name.patch
@@ -0,0 +1,176 @@
+Python module needs to be built without these extra renames.
+MPI module needs to reference correct python
+
+~Index: boost_1_64_0/libs/mpi/build/Jamfile.v2
+~===================================================================
+~--- boost_1_64_0.orig/libs/mpi/build/Jamfile.v2
+~+++ boost_1_64_0/libs/mpi/build/Jamfile.v2
+~@@ -61,10 +61,10 @@ libraries += boost_mpi ;
+~     lib boost_mpi_python
+~       : # Sources
+~         python/serialize.cpp
+~+        /user-config//boost_python_alias
+~       : # Requirements
+~         <library>boost_mpi
+~         <library>/mpi//mpi [ mpi.extra-requirements ]
+~-      	<library>/boost/python//boost_python
+~         <link>shared:<define>BOOST_MPI_DYN_LINK=1
+~         <link>shared:<define>BOOST_MPI_PYTHON_DYN_LINK=1
+~         <link>shared:<define>BOOST_PYTHON_DYN_LINK=1        
+~@@ -92,8 +92,8 @@ libraries += boost_mpi ;
+~         python/skeleton_and_content.cpp
+~         python/status.cpp
+~         python/py_timer.cpp
+~+        /user-config//boost_python_alias
+~       : # Requirements
+~-      	<library>/boost/python//boost_python      
+~         <library>boost_mpi_python
+~         <library>boost_mpi
+~         <library>/mpi//mpi [ mpi.extra-requirements ]
+Index: boost_1_65_0/libs/python/build/Jamfile
+===================================================================
+--- boost_1_65_0.orig/libs/python/build/Jamfile
++++ boost_1_65_0/libs/python/build/Jamfile
+@@ -42,15 +42,15 @@ rule cond ( test ? : yes * : no * ) { if
+ rule unless ( test ? : yes * : no * ) { if ! $(test) { return $(yes) ; } else { return $(no) ; } }
+ local rule eq ( a : b ) { if $(a) = $(b) { return 1 ; } }
+ 
+-lib_boost_python(2) = boost_python ;
+-lib_boost_python(3) = boost_python3 ;
++#lib_boost_python(2) = boost_python ;
++#lib_boost_python(3) = boost_python3 ;
+ 
+-lib_boost_python($(py2-version)) = $(lib_boost_python(2)) ;
+-lib_boost_python($(py3-version)) = $(lib_boost_python(3)) ;
++#lib_boost_python($(py2-version)) = $(lib_boost_python(2)) ;
++#lib_boost_python($(py3-version)) = $(lib_boost_python(3)) ;
+ 
+ rule lib_boost_python ( version )
+ {
+-    lib $(lib_boost_python($(version)))
++    lib boost_python #$(lib_boost_python($(version)))
+         : # sources
+         list.cpp
+         long.cpp
+@@ -121,16 +121,16 @@ rule lib_boost_python ( version )
+         ;
+ }
+ 
+-lib_boost_numpy(2) = boost_numpy ;
+-lib_boost_numpy(3) = boost_numpy3 ;
++#lib_boost_numpy(2) = boost_numpy ;
++#lib_boost_numpy(3) = boost_numpy3 ;
+ 
+-lib_boost_numpy($(py2-version)) = $(lib_boost_numpy(2)) ;
+-lib_boost_numpy($(py3-version)) = $(lib_boost_numpy(3)) ;
++#lib_boost_numpy($(py2-version)) = $(lib_boost_numpy(2)) ;
++#lib_boost_numpy($(py3-version)) = $(lib_boost_numpy(3)) ;
+ 
+ rule lib_boost_numpy ( version )
+ {
+     numpy-include = [ python.numpy-include ] ;
+-    lib $(lib_boost_numpy($(version)))
++    lib boost_numpy #$(lib_boost_numpy($(version)))
+         : # sources
+         numpy/dtype.cpp
+         numpy/matrix.cpp
+@@ -172,7 +172,7 @@ for local N in 2 3
+     }
+     else
+     {
+-        alias $(lib_boost_python($(N))) ;
++        #alias $(lib_boost_python($(N))) ;
+     }
+     if $(py$(N)-version) && [ python.numpy ]
+     {
+@@ -181,7 +181,7 @@ for local N in 2 3
+     }
+     else
+     {
+-        alias $(lib_boost_numpy($(N))) ;
++        #alias $(lib_boost_numpy($(N))) ;
+     }
+ }
+ 
+Index: boost_1_65_0/libs/mpi/build/Jamfile.v2
+===================================================================
+--- boost_1_65_0.orig/libs/mpi/build/Jamfile.v2
++++ boost_1_65_0/libs/mpi/build/Jamfile.v2
+@@ -58,33 +58,13 @@ libraries += boost_mpi ;
+ 
+   if [ python.configured ]
+   {
+-    py2-version = [ py-version 2 ] ;
+-    py3-version = [ py-version 3 ] ;
+-
+-    # These library names are synchronized with those defined by Boost.Python, see libs/python/build/Jamfile.
+-    lib_boost_python(2) = boost_python ;
+-    lib_boost_python(3) = boost_python3 ;
+-
+-    lib_boost_python($(py2-version)) = $(lib_boost_python(2)) ;
+-    lib_boost_python($(py3-version)) = $(lib_boost_python(3)) ;
+-
+-    lib_boost_mpi_python(2) = boost_mpi_python ;
+-    lib_boost_mpi_python(3) = boost_mpi_python3 ;
+-
+-    lib_boost_mpi_python($(py2-version)) = $(lib_boost_mpi_python(2)) ;
+-    lib_boost_mpi_python($(py3-version)) = $(lib_boost_mpi_python(3)) ;
+-
+-    for local N in 2 3
+-    {
+-        if $(py$(N)-version)
+-        {
+-            lib $(lib_boost_mpi_python($(py$(N)-version)))
++    lib boost_mpi_python
+               : # Sources
+                 python/serialize.cpp
+               : # Requirements
+                 <library>boost_mpi
+                 <library>/mpi//mpi [ mpi.extra-requirements ]
+-                <library>/boost/python//$(lib_boost_python($(py$(N)-version)))
++                <library>/boost/python//boost_python
+                 <link>shared:<define>BOOST_MPI_DYN_LINK=1
+                 <link>shared:<define>BOOST_MPI_PYTHON_DYN_LINK=1
+                 <link>shared:<define>BOOST_PYTHON_DYN_LINK=1
+@@ -92,12 +72,12 @@ libraries += boost_mpi ;
+                 -<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag
+                 <tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).python-tag
+                 <python-debugging>on:<define>BOOST_DEBUG_PYTHON
+-                <python>$(py$(N)-version)
+               : # Default build
+                 <link>shared
+               : # Usage requirements
+                 <library>/mpi//mpi [ mpi.extra-requirements ]
+               ;
++            libraries += boost_mpi_python ;
+ 
+             python-extension mpi
+               : # Sources
+@@ -114,8 +94,8 @@ libraries += boost_mpi ;
+                 python/status.cpp
+                 python/py_timer.cpp
+               : # Requirements
+-                <library>/boost/python//$(lib_boost_python($(py$(N)-version)))
+-                <library>$(lib_boost_mpi_python($(py$(N)-version)))
++        <library>/boost/python//boost_python
++        <library>boost_mpi_python
+                 <library>boost_mpi
+                 <library>/mpi//mpi [ mpi.extra-requirements ]
+                 <link>shared:<define>BOOST_MPI_DYN_LINK=1
+@@ -123,16 +103,7 @@ libraries += boost_mpi ;
+                 <link>shared:<define>BOOST_PYTHON_DYN_LINK=1
+                 <link>shared <runtime-link>shared
+                 <python-debugging>on:<define>BOOST_DEBUG_PYTHON
+-                <python>$(py$(N)-version)
+               ;
+-
+-            libraries += $(lib_boost_mpi_python($(py$(N)-version))) ;
+-        }
+-        else
+-        {
+-            alias $(lib_boost_mpi_python($(N))) ;
+-        }
+-    }
+   }
+ }
+ else if ! ( --without-mpi in  [ modules.peek : ARGV ] )
diff --git a/python_mpi.patch b/python_mpi.patch
new file mode 100644
index 0000000..e0d7d70
--- /dev/null
+++ b/python_mpi.patch
@@ -0,0 +1,27 @@
+Author: Adam Majer <adam.majer@suse.de>
+Summary: Fix MPI module loading
+
+MPI requires dl.RTLD_NOW|dl.RTLD_GLOBAL flags to load
+properly.
+
+
+Index: boost_1_64_0/libs/mpi/build/__init__.py
+===================================================================
+--- boost_1_64_0.orig/libs/mpi/build/__init__.py
++++ boost_1_64_0/libs/mpi/build/__init__.py
+@@ -1,10 +1,7 @@
+ import sys
+-if sys.platform == 'linux2':
+-    import DLFCN as dl
+-    flags = sys.getdlopenflags()
+-    sys.setdlopenflags(dl.RTLD_NOW|dl.RTLD_GLOBAL)
+-    import mpi
+-    sys.setdlopenflags(flags)
+-else:
+-    import mpi
++import DLFCN as dl
++flags = sys.getdlopenflags()
++sys.setdlopenflags(dl.RTLD_NOW|dl.RTLD_GLOBAL)
++import boost.parallel.mpi.mpi
++sys.setdlopenflags(flags)
+ 
diff --git a/python_numpy_retfunc.patch b/python_numpy_retfunc.patch
new file mode 100644
index 0000000..763fa04
--- /dev/null
+++ b/python_numpy_retfunc.patch
@@ -0,0 +1,22 @@
+Author: Adam Majer <amajer@suse.de>
+Date: Tue Apr  4 10:18:49 CEST 2017
+Summary: rpmlint fixes?
+
+After build, the following errors were returned.
+
+[  110s] libs/python/src/numpy/numpy.cpp: In function 'void* boost::python::numpy::wrap_import_array()':
+[  110s] libs/python/src/numpy/numpy.cpp:22:1: warning: control reaches end of non-void function [-Wreturn-type]
+[  110s]  }
+
+Index: boost_1_64_0/libs/python/src/numpy/numpy.cpp
+===================================================================
+--- boost_1_64_0.orig/libs/python/src/numpy/numpy.cpp
++++ boost_1_64_0/libs/python/src/numpy/numpy.cpp
+@@ -19,6 +19,7 @@ static void wrap_import_array()
+ static void * wrap_import_array()
+ {
+   import_array();
++  return NULL; // import_array no longer auto-returns?
+ }
+ #endif
+ 
diff --git a/symbol_diff.sh b/symbol_diff.sh
new file mode 100644
index 0000000..e65be58
--- /dev/null
+++ b/symbol_diff.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# compares symbols of $1 vs. $2
+#    returns diff of the two global function tables
+#
+
+if test $# -ne 2; then
+   echo "$0 library1 library2"
+   exit 2
+fi
+
+PARAMS='[0-9a-f]\+[[:space:]]\+g[[:space:]]\+F[[:space:]]\+\.text[[:space:]]\+[0-9a-f]\+[[:space:]]\+'
+
+objdump -t $1 | grep $PARAMS | sed -e 's#'$PARAMS'##' | sort > temp.$$
+objdump -t $2 | grep $PARAMS | sed -e 's#'$PARAMS'##' | sort | diff temp.$$ -
+
+RET=$?
+
+rm temp.$$
+
+exit $RET
diff --git a/variant.patch b/variant.patch
new file mode 100644
index 0000000..7693b60
--- /dev/null
+++ b/variant.patch
@@ -0,0 +1,102 @@
+commit 33784034b70a6607c9413633375e84912213a123
+Author: Pawel Dac <pawel.dac@gmail.com>
+Date:   Tue Nov 7 17:49:15 2017 +0100
+
+    Perfect forwarding for passing visitor in apply_visitor.
+    
+    Allows to catch Visitor&&, Visitor& and const Visitor&.
+    
+    Removed apply_visitor with const Visitor& since it was catching inlined Visitors&&.
+    Passing const Visitor to result_wrapper resulted in compilation error when Visitor was mutable.
+
+commit 03035b2f6b5d48d82270725f6eb52968180a2c64
+Author: Antony Polukhin <antoshkka@gmail.com>
+Date:   Thu Jul 23 15:28:07 2020 +0300
+
+    Fix wrong usage of boost::move (fixes #53, #82)
+
+Index: boost_1_66_0/boost/variant/detail/apply_visitor_unary.hpp
+===================================================================
+--- boost_1_66_0.orig/boost/variant/detail/apply_visitor_unary.hpp
++++ boost_1_66_0/boost/variant/detail/apply_visitor_unary.hpp
+@@ -155,9 +155,9 @@ struct result_wrapper1
+ {
+     typedef decltype(result_multideduce1<Visitor, Variant>::deduce()) result_type;
+ 
+-    Visitor& visitor_;
+-    explicit result_wrapper1(Visitor& visitor) BOOST_NOEXCEPT
+-        : visitor_(visitor)
++    Visitor&& visitor_;
++    explicit result_wrapper1(Visitor&& visitor) BOOST_NOEXCEPT
++        : visitor_(::boost::forward<Visitor>(visitor))
+     {}
+ 
+     template <class T>
+@@ -169,26 +169,15 @@ struct result_wrapper1
+ }} // namespace detail::variant
+ 
+ template <typename Visitor, typename Visitable>
+-inline decltype(auto) apply_visitor(Visitor& visitor, Visitable&& visitable,
++inline decltype(auto) apply_visitor(Visitor&& visitor, Visitable&& visitable,
+     typename boost::disable_if<
+         boost::detail::variant::has_result_type<Visitor>
+     >::type* = 0)
+ {
+-    boost::detail::variant::result_wrapper1<Visitor, typename remove_reference<Visitable>::type> cpp14_vis(visitor);
++    boost::detail::variant::result_wrapper1<Visitor, typename remove_reference<Visitable>::type> cpp14_vis(::boost::forward<Visitor>(visitor));
+     return ::boost::forward<Visitable>(visitable).apply_visitor(cpp14_vis);
+ }
+ 
+-template <typename Visitor, typename Visitable>
+-inline decltype(auto) apply_visitor(const Visitor& visitor, Visitable&& visitable,
+-    typename boost::disable_if<
+-        boost::detail::variant::has_result_type<Visitor>
+-    >::type* = 0)
+-{
+-    boost::detail::variant::result_wrapper1<const Visitor, typename remove_reference<Visitable>::type> cpp14_vis(visitor);
+-    return ::boost::forward<Visitable>(visitable).apply_visitor(cpp14_vis);
+-}
+-
+-
+ #endif // !defined(BOOST_NO_CXX14_DECLTYPE_AUTO) && !defined(BOOST_NO_CXX11_DECLTYPE_N3276)
+ 
+ } // namespace boost
+Index: boost_1_66_0/libs/variant/test/const_ref_apply_visitor.cpp
+===================================================================
+--- boost_1_66_0.orig/libs/variant/test/const_ref_apply_visitor.cpp
++++ boost_1_66_0/libs/variant/test/const_ref_apply_visitor.cpp
+@@ -190,6 +190,13 @@ void test_cpp14_visitor(const variant_ty
+     BOOST_CHECK(boost::apply_visitor([](auto&& v) { return lvalue_rvalue_detector()(FORWARD(v)); }, test_var) == "lvalue reference");
+ }
+ 
++void test_cpp14_mutable_visitor(const variant_type& test_var)
++{
++    std::cout << "Testing const lvalue visitable for c++14 with inline mutable lambda\n";
++
++    BOOST_CHECK(boost::apply_visitor([](auto&& v) mutable -> auto { return lvalue_rvalue_detector()(FORWARD(v)); }, test_var) == "lvalue reference");
++}
++
+ void test_cpp14_visitor(const variant_type& test_var, const variant_type& test_var2)
+ {
+     std::cout << "Testing const lvalue visitable for c++14\n";
+@@ -329,6 +336,7 @@ void run_cpp14_tests()
+     variant_type v1(10), v2(20), v3(30);
+ 
+     test_cpp14_visitor(v1);
++    test_cpp14_mutable_visitor(v1);
+     test_cpp14_visitor(v2, v3);
+     test_cpp14_visitor(v1, v2, v3);
+ 
+Index: boost_1_66_0/boost/variant/variant.hpp
+===================================================================
+--- boost_1_66_0.orig/boost/variant/variant.hpp
++++ boost_1_66_0/boost/variant/variant.hpp
+@@ -1048,7 +1048,7 @@ public: // internal visitor interfaces
+     template <typename T>
+     typename enable_if_c<MoveSemantics && is_same<T, T>::value, result_type>::type internal_visit(T&& operand, int)
+     {
+-        return visitor_(::boost::move<T>(operand));
++        return visitor_(::boost::move(operand));
+     }
+ 
+     //using workaround with is_same<T, T> to prenvent compilation error, because we need to use T in enable_if to make SFINAE work