diff --git a/README.boost-devel b/README.boost-devel new file mode 100644 index 0000000..809a8b1 --- /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..821dc46 --- /dev/null +++ b/__init__.py @@ -0,0 +1 @@ +# placeholder diff --git a/baselibs.conf b/baselibs.conf index 42381b4..c4ea162 100644 --- a/baselibs.conf +++ b/baselibs.conf @@ -1,25 +1,25 @@ -boost_1_62-devel +boost_1_63-devel requires -boost- -libboost_atomic1_62_0 -libboost_container1_62_0 -libboost_context1_62_0 -libboost_coroutine1_62_0 -libboost_date_time1_62_0 -libboost_fiber1_62_0 -libboost_filesystem1_62_0 -libboost_graph1_62_0 -libboost_graph_parallel1_62_0 -libboost_iostreams1_62_0 -libboost_math1_62_0 -libboost_mpi1_62_0 -libboost_test1_62_0 -libboost_program_options1_62_0 -libboost_python1_62_0 -libboost_random1_62_0 -libboost_serialization1_62_0 -libboost_signals1_62_0 -libboost_system1_62_0 -libboost_thread1_62_0 -libboost_type_erasure1_62_0 -libboost_wave1_62_0 -libboost_regex1_62_0 +libboost_atomic1_63_0 +libboost_container1_63_0 +libboost_context1_63_0 +libboost_coroutine1_63_0 +libboost_date_time1_63_0 +libboost_fiber1_63_0 +libboost_filesystem1_63_0 +libboost_graph1_63_0 +libboost_graph_parallel1_63_0 +libboost_iostreams1_63_0 +libboost_locale1_63_0 +libboost_math1_63_0 +libboost_mpi1_63_0 +libboost_test1_63_0 +libboost_program_options1_63_0 +libboost_random1_63_0 +libboost_serialization1_63_0 +libboost_signals1_63_0 +libboost_system1_63_0 +libboost_thread1_63_0 +libboost_type_erasure1_63_0 +libboost_wave1_63_0 +libboost_regex1_63_0 diff --git a/boost-1.55.0-python-test-PyImport_AppendInittab.patch b/boost-1.55.0-python-test-PyImport_AppendInittab.patch index 0858fe4..af3fbf6 100644 --- a/boost-1.55.0-python-test-PyImport_AppendInittab.patch +++ b/boost-1.55.0-python-test-PyImport_AppendInittab.patch @@ -1,7 +1,8 @@ -diff -up boost_1_55_0/libs/python/test/exec.cpp\~ boost_1_55_0/libs/python/test/exec.cpp ---- boost_1_55_0/libs/python/test/exec.cpp~ 2010-07-05 00:38:38.000000000 +0200 -+++ boost_1_55_0/libs/python/test/exec.cpp 2015-01-09 21:31:12.903218280 +0100 -@@ -56,6 +56,20 @@ void eval_test() +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"); } @@ -21,17 +22,12 @@ diff -up boost_1_55_0/libs/python/test/exec.cpp\~ boost_1_55_0/libs/python/test/ + void exec_test() { - // Register the module with the interpreter -@@ -68,6 +82,8 @@ void exec_test() - ) == -1) - throw std::runtime_error("Failed to add embedded_hello to the interpreter's " - "builtin modules"); -+ + PyCtx ctx; ++ // Retrieve the main module python::object main = python::import("__main__"); -@@ -148,41 +164,43 @@ void check_pyerr(bool pyerr_expected=fal +@@ -138,6 +154,19 @@ void check_pyerr(bool pyerr_expected=fal } } @@ -51,22 +47,25 @@ diff -up boost_1_55_0/libs/python/test/exec.cpp\~ boost_1_55_0/libs/python/test/ int main(int argc, char **argv) { BOOST_TEST(argc == 2 || argc == 3); - std::string script = argv[1]; +@@ -156,29 +185,19 @@ int main(int argc, char **argv) + "builtin modules"); + } + - // Initialize the interpreter - Py_Initialize(); - +- - if (python::handle_exception(eval_test)) { -- check_pyerr(); ++ // 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))) { -+ // 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(); +- check_pyerr(); - } - - if (python::handle_exception(exec_test_error)) @@ -86,13 +85,3 @@ diff -up boost_1_55_0/libs/python/test/exec.cpp\~ boost_1_55_0/libs/python/test/ // 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. - exercise_embedding_html(); - } - -- // Boost.Python doesn't support Py_Finalize yet. -- // Py_Finalize(); - return boost::report_errors(); - } - - -Diff finished. Fri Jan 9 21:31:13 2015 diff --git a/boost-strict_aliasing.patch b/boost-strict_aliasing.patch index 1aa8674..ce0bfd2 100644 --- a/boost-strict_aliasing.patch +++ b/boost-strict_aliasing.patch @@ -1,12 +1,12 @@ -Index: libs/python/build/Jamfile.v2 +Index: libs/python/build/Jamfile =================================================================== ---- libs/python/build/Jamfile.v2.orig 2010-07-13 00:29:41.000000000 +0200 -+++ libs/python/build/Jamfile.v2 2010-08-24 12:51:20.939878260 +0200 -@@ -51,6 +51,7 @@ project boost/python - : requirements - -@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag - @$(__name__).tag -+ -fno-strict-aliasing - ; +--- libs/python/build/Jamfile.orig ++++ libs/python/build/Jamfile +@@ -116,6 +116,7 @@ rule lib_boost_python ( is-py3 ? ) - rule tag ( name : type ? : property-set ) + -@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag + @$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).python-tag ++ -fno-strict-aliasing + + : # default build + shared diff --git a/boost.changes b/boost.changes index 042cfa8..5b6bdf4 100644 --- a/boost.changes +++ b/boost.changes @@ -1,3 +1,55 @@ +------------------------------------------------------------------- +Wed Jan 25 13:24:39 UTC 2017 - adam.majer@suse.de + +- Fix dependency typos. + +------------------------------------------------------------------- +Tue Jan 17 12:00:48 UTC 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 18:57:34 UTC 2017 - adam.majer@suse.de + +- remove non-existent dependency in the boost mpi python package + +------------------------------------------------------------------- +Wed Jan 4 12:31:56 UTC 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 13:32:31 UTC 2016 - adam.majer@suse.de diff --git a/boost.spec b/boost.spec index 3a289e7..90d8d66 100644 --- a/boost.spec +++ b/boost.spec @@ -1,7 +1,7 @@ # # spec file for package boost # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,32 +16,29 @@ # -%define ver 1.62.0 -%define file_version 1_62_0 +%define ver 1.63.0 +%define file_version 1_63_0 %define docs_version 1.56.0 %define short_version 1_56 -%define lib_appendix 1_62_0 -# building manpages is broken +%define lib_appendix 1_63_0 %bcond_with build_docs %bcond_without package_pdf %bcond_without build_quickbook -%define build_docs 0 -%define boost_l1 libboost_date_time%{lib_appendix} libboost_filesystem%{lib_appendix} libboost_graph%{lib_appendix} -%define boost_l2 libboost_iostreams%{lib_appendix} libboost_math%{lib_appendix} libboost_test%{lib_appendix} -%define boost_l3 libboost_program_options%{lib_appendix} libboost_python%{lib_appendix} libboost_python3-%{lib_appendix} libboost_serialization%{lib_appendix} -%define boost_l4 libboost_signals%{lib_appendix} libboost_system%{lib_appendix} libboost_thread%{lib_appendix} -%define boost_l5 libboost_wave%{lib_appendix} libboost_regex%{lib_appendix} libboost_regex%{lib_appendix} -%define boost_l6 libboost_random%{lib_appendix} libboost_chrono%{lib_appendix} libboost_locale%{lib_appendix} -%define boost_l7 libboost_timer%{lib_appendix} libboost_atomic%{lib_appendix} libboost_log%{lib_appendix} libboost_container%{lib_appendix} -%define most_libs %{boost_l1} %{boost_l2} %{boost_l3} %{boost_l4} %{boost_l5} %{boost_l6} %{boost_l7} %define my_docdir %{_docdir}/boost-%{version} -# Just hardcode build_mpi to 1 as soon as openmpi builds on all -# named architectures. + +# Build with OpenMPI %ifarch ia64 hppa %bcond_with build_mpi %else %bcond_without build_mpi %endif + +%if 0%{?suse_version} < 1200 +%bcond_with python3 +%else +%bcond_without python3 +%endif + # context hasn't been ported to most architectures yet %ifarch %ix86 x86_64 %arm aarch64 mips ppc ppc64 ppc64le %bcond_without build_context @@ -49,34 +46,22 @@ %bcond_with build_context %endif -# needs newer GCC to compile runtime +# 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 -%ifarch hppa -%bcond_with long_double -%else -%bcond_without long_double -%endif -%if %{with build_context} -%define context_libs libboost_context%{lib_appendix} libboost_coroutine%{lib_appendix} -%endif -%if %{with build_mpi} -%define mpi_libs libboost_graph_parallel%lib_appendix libboost_mpi%{lib_appendix} -%endif -%if %{with boost_fiber} -BuildRequires: gcc-c++ > 5 -%define fiber_libs libboost_fiber%{lib_appendix} -%endif - -%define all_libs %{most_libs} %{?context_libs} %{?mpi_libs} %{?fiber_libs} +#%ifarch hppa +#%bcond_with long_double +#%else +#%bcond_without long_double +#%endif Name: boost -%define package_name boost_1_62 -Version: 1.62.0 +%define package_name boost_1_63 +Version: 1.63.0 Release: 0 Summary: Boost C++ Libraries License: BSL-1.0 @@ -87,7 +72,11 @@ 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 @@ -101,24 +90,31 @@ 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-2059618.patch +Patch17: python_mpi.patch +Patch18: dynamic_linking.patch +Patch19: test_lowcase.patch Patch100: gcc_path.patch BuildRequires: chrpath BuildRequires: dos2unix BuildRequires: fdupes +%if %{with boost_fiber} +BuildRequires: gcc-c++ > 5 +%else BuildRequires: gcc-c++ +%endif %if 0%{?suse_version} <= 1320 # boost requires quadmath.h BuildRequires: gcc-fortran %endif BuildRequires: libbz2-devel BuildRequires: libexpat-devel -BuildRequires: libicu-devel >= 4.4 +BuildRequires: libicu-devel BuildRequires: python-devel +%if %{with python3} BuildRequires: python3-devel +%endif #!BuildIgnore: python BuildRequires: zlib-devel -Recommends: %{all_libs} BuildRoot: %{_tmppath}/%{name}-%{version}-build %if %{with build_mpi} BuildRequires: openmpi-devel @@ -152,7 +148,42 @@ see the boost-doc package. %package -n %{package_name}-devel Summary: Development package for Boost C++ Group: Development/Libraries/C and C++ -Requires: %{all_libs} +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 +Requires: libboost_python-py2_7-%{lib_appendix}-devel +%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) @@ -162,6 +193,17 @@ This package contains all that is needed to develop/compile applications that use the Boost C++ libraries. For documentation see the documentation packages (html, man or pdf). +%package -n libboost_headers%{lib_appendix}-devel +Summary: Development headers for Boost +Group: Development/Libraries/C and C++ +Requires: libstdc++-devel +Provides: libboost_headers-devel = %{version} +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 %{package_name}-jam Summary: A Boost Make Replacement Group: Development/Tools/Building @@ -196,16 +238,16 @@ 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. +%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} @@ -222,7 +264,7 @@ in PDF format. %endif %package -n libboost_atomic%{lib_appendix} -Summary: Run-Time component of boost atomic library +Summary: Boost.Atomic runtime library Group: System/Libraries Requires: boost-license%{lib_appendix} @@ -231,194 +273,612 @@ 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 libraries +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 libraries. +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: Run-Time component of boost context switching library +Summary: Boost.Context runtime library Group: System/Libraries Requires: boost-license%{lib_appendix} %description -n libboost_context%{lib_appendix} -Run-Time support for Boost.Context, a foundational library that -provides a sort of cooperative multitasking on a single thread. +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 libraries +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 libraries. +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::Date.Time Runtime libraries +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.Time runtime libraries. +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 Libraries +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. +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 +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 libraries. +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 Libraries +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 libraries. +This package contains the Boost.Graph runtime library. -%package -n libboost_graph_parallel%{lib_appendix} -Summary: Boost graph::distributed runtime libraries -Group: System/Libraries -Requires: boost-license%{lib_appendix} +%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. -%description -n libboost_graph_parallel%{lib_appendix} -This package contains the boost::graph::distributed runtime libraries. %package -n libboost_iostreams%{lib_appendix} -Summary: Boost::IOStreams Runtime Libraries +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. +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: Run-Time component of boost logging library +Summary: Boost.Log runtime Run-Time library Group: System/Libraries Requires: boost-license%{lib_appendix} %description -n libboost_log%{lib_appendix} -Boost.Log library aims to make logging significantly easier for the -application developer. It provides a wide range of out-of-the-box -tools along with public interfaces for extending the library. +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 +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. +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 libraries +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 libraries. +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} +Requires: libboost_python-py2_7-%{lib_appendix}-devel +%if %{with python3} +Requires: libboost_python-py3-%{lib_appendix}-devel %endif +Requires: libboost_mpi%{lib_appendix} = %{version} +Requires: libboost_serialization%{lib_appendix}-devel +Requires: openmpi-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. + +%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 python-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} +Conflicts: otherproviders(python-boost_parallel_mpi) + +%description -n python-boost_parallel_mpi%{lib_appendix} +This package contains the Boost.Parallel.MPI bindings for Python 2.7 + +%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 Libraries +Summary: Boost.Test runtime library Group: System/Libraries Requires: boost-license%{lib_appendix} %description -n libboost_test%{lib_appendix} -This package contains the Boost::Test runtime libraries. +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 libraries +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 libraries. +This package contains the Boost.ProgramOptions runtime library. -%package -n libboost_python%{lib_appendix} -Summary: Boost::Python Runtime Libraries +%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. + +%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%{lib_appendix} -This package contains the Boost::Python Runtime libraries. +%description -n libboost_python-py2_7-%{lib_appendix} +This package contains the Boost::Python runtime library for default +version of python. -%package -n libboost_python3-%{lib_appendix} -Summary: Boost::Python Runtime Libraries +%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 python3} +%package -n libboost_python-py3-%{lib_appendix} +Summary: Boost.Python runtime library Group: System/Libraries Requires: boost-license%{lib_appendix} -%description -n libboost_python3-%{lib_appendix} -This package contains the Boost::Python3 Runtime libraries. +%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. + +%endif # with python3 %package -n libboost_serialization%{lib_appendix} -Summary: Boost::Serialization Runtime Libraries +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 libraries. +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 Libraries +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 libraries. +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_system%{lib_appendix} -Summary: Boost::System Runtime Libraries +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 libraries. +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 +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 libraries. +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 Libraries +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 libraries. +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: The Boost::Regex runtime library +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. +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: The Boost::Random runtime library +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. +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 @@ -428,29 +888,78 @@ 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: The Boost::Locale runtime library +Summary: Boost::Locale runtime library Group: System/Libraries Requires: boost-license%{lib_appendix} %description -n libboost_locale%{lib_appendix} -This package contains the Boost::Locale runtime library. +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: The Boost::Timer runtime library +Summary: Boost.Timer runtime library Group: System/Libraries Requires: boost-license%{lib_appendix} %description -n libboost_timer%{lib_appendix} -This package contains the Boost::Timer runtime library. +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: The Boost::TypeErasure runtime library +Summary: Boost.TypeErasure runtime library Group: System/Libraries Requires: boost-license%{lib_appendix} %description -n libboost_type_erasure%{lib_appendix} -This package contains the Boost::TypeErasure runtime library. +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 @@ -484,80 +993,113 @@ find -type f ! \( -name \*.sh -o -name \*.py -o -name \*.pl \) -exec chmod -x {} %patch15 -p1 %patch16 -p1 %patch17 -p1 +%patch18 -p1 +%patch19 -p1 %patch100 -p1 #stupid build machinery copies .orig files -find . -name \*.orig -exec rm {} + +# find . -name \*.orig -exec rm {} + %build find . -type f -exec chmod u+w {} + -# Create shared build instructions +# 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 -%if ! %{with long_double} -export LONG_DOUBLE_FLAGS="--disable-long-double" +export PY_LIBRARIES_FLAGS="--with-python" +%if %{with build_mpi} +PY_LIBRARIES_FLAGS+=" --with-mpi" %endif -BJAM_CONFIG="-d2 -sICU_PATH=%{_prefix}" -PYTHON_VERSION=$(python -c 'import sys; print sys.version[:3]') -PYTHON3_VERSION=$(python3 -c 'import sys; print (sys.version[:3])') -PYTHON3_ABIFLAGS=$(python3 -c 'import sys; print (sys.abiflags);') -export REGEX_FLAGS="--with-icu" -export EXPAT_INCLUDE=%{_includedir} EXPAT_LIBPATH=%{_libdir} -LIBRARIES_FLAGS=--with-libraries=all + +export LIBRARIES_FLAGS="--without-python" %if ! %{with build_context} # coroutine/coroutine2 depend on context -LIBRARIES_FLAGS+=" --without-libraries=context,coroutine,coroutine2" +LIBRARIES_FLAGS+=" --without-context --without-coroutine --without-coroutine2" %endif %if ! %{with boost_fiber} -LIBRARIES_FLAGS+=" --without-libraries=fiber" +LIBRARIES_FLAGS+=" --without-fiber" %endif EOF # Read shared build instructions . ./.build +%if %{with build_mpi} # Set PATH, MANPATH and LD_LIBRARY_PATH for mpi -. %{_localstatedir}/mpi-selector/data/$(rpm --qf "%{NAME}-%{VERSION}" -q openmpi).sh +#. %{_localstatedir}/mpi-selector/data/$(rpm --qf "%{NAME}-%{VERSION}" -q openmpi).sh +# fixme: use mpi-selector ???? +%endif -# use supplied bootstrap.sh instead of mucking with old bjam -# see also: https://svn.boost.org/trac/boost/ticket/9304 -./bootstrap.sh $LIBRARIES_FLAGS \ +# 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 +import os ; +local RPM_OPT_FLAGS = [ os.environ RPM_OPT_FLAGS ] ; +using gcc : : : \$(RPM_OPT_FLAGS) ; +EOF + +# Build boost base PYTHON and MPI, installed in python staging +./bootstrap.sh \ --prefix=%{_prefix} --exec-prefix=%{_bindir} \ --libdir=%{_libdir} --includedir=%{_includedir} \ --with-toolset=gcc -# add specific wishes in user-config.jam -cat << EOF >user-config.jam -import os ; -local RPM_OPT_FLAGS = [ os.environ RPM_OPT_FLAGS ] ; - -using gcc : : : \$(RPM_OPT_FLAGS) ; - +cp user-config.jam user-config-py.jam +cat << EOF >> user-config-py.jam using python - : $PYTHON_VERSION - : /usr/bin/python2 - : /usr/include/python$PYTHON_VERSION - : - : - : + : %{py_ver} + : %{__python2} + : %{py_incdir} + : %{py_libdir} + : : ; - -using python - : $PYTHON3_VERSION - : /usr/bin/python$PYTHON3_VERSION - : /usr/include/python$PYTHON3_VERSION$PYTHON3_ABIFLAGS - : /usr/lib/python$PYTHON3_VERSION - : - : - : - $PYTHON3_ABIFLAGS - ; - +%if %{with build_mpi} +using mpi ; +%endif EOF +./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 + +# Build boost python3 and MPI, installed in python3 staging +%if %{with python3} +cp user-config.jam user-config-py3.jam +cat << EOF >> user-config-py3.jam +using python + : %{py3_ver} + : /usr/bin/python%{py3_ver}%{py3_abiflags} + : %{py3_incdir} + : + : + : .%{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 ; @@ -571,24 +1113,38 @@ using doxygen ; EOF %endif +# needed to get graph_parallel built %if %{with build_mpi} -cat << EOF >>user-config.jam -using mpi ; -EOF +echo 'using mpi ;' >> ./user-config.jam %endif -# perform the compilation -./b2 -d+2 -q --prefix=%{_prefix} --libdir=%{_libdir} --user-config=./user-config.jam %{?_smp_mflags} +./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 +# 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 python-stage/lib/libboost_mpi.so +./symbol_diff.sh python3-stage/lib/libboost_serialization.so python-stage/lib/libboost_serialization.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 +../../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 +./b2 --user-config=../user-config.jam --v2 man %{?_smp_mflags} %endif %install @@ -596,49 +1152,87 @@ cd doc # Read shared build instructions . ./.build -# Set PATH, MANPATH and LD_LIBRARY_PATH for mpi -. %{_localstatedir}/mpi-selector/data/$(rpm --qf "%{NAME}-%{VERSION}" -q openmpi).sh - -./b2 install \ +%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} \ - --user-config=./user-config.jam + --stagedir=./python3-stage %{?_smp_mflags} \ + $PY_LIBRARIES_FLAGS \ + threading=multi link=shared runtime-link=shared install +%endif + +./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 + +./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 mkdir -p %{buildroot}%{_bindir} install -m 755 bjam %{buildroot}%{_bindir} ln -s bjam %{buildroot}%{_bindir}/jam -# do not install the python module - as long as noone needs it, it requires more fixes -# see https://bugzilla.redhat.com/show_bug.cgi?id=801534 for details -rm -f %{buildroot}%{_libdir}/mpi.so +# Make sure nothing depends on non-id'ed python binaries! +rm %{buildroot}%{_libdir}/libboost_mpi_python.so +rm %{buildroot}%{_libdir}/libboost_mpi_python.so.%{version} +rm %{buildroot}%{_libdir}/libboost_python.so +rm %{buildroot}%{_libdir}/libboost_python.so.1.63.0 -mkdir -p %{buildroot}%{my_docdir} +! $(ldd %{buildroot}%{_libdir}/*.so* | grep python\\.) -pushd %{buildroot}%{_libdir} -blibs=$(find . -name \*.so.%{version}) -echo $blibs | xargs chrpath -d +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 -for lib in ${blibs}; do - BASE=$(basename ${lib} .so.%{version}) - SONAME_MT="$BASE-mt.so" - ln -sf ${lib} $SONAME_MT -done -popd +%if %{with python3} +rm %{buildroot}%{_libdir}/libboost_python3-py3.so +rm %{buildroot}%{_libdir}/libboost_python3-py3.so.%{version} -# install the man pages -# rm -rf doc/man/man3/boost::units::operator -# mv doc/man/man3/path.3 doc/man/man3/boost::property_tree::path.3 -# mv doc/man/man3/string.3 doc/man/man3/boost::container::string.3 -# -# for sec in 3 7 9; do -# install -d %%buildroot/%%{_mandir}/man${sec} -# done -# pushd doc/man -# rm -f *.manifest -# tar -cf - .| tar -C %%{buildroot}/%%{_mandir} -xvf - -# popd +! $(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 +mkdir -p %{buildroot}%{py_sitedir}/boost/parallel/mpi/ +mv %{buildroot}/%{_libdir}/mpi.so %{buildroot}%{py_sitedir}/boost/parallel/mpi/ +install -m 0644 libs/mpi/build/__init__.py %{buildroot}%{py_sitedir}/boost/parallel/mpi/ +install -m 0644 %{SOURCE11} %{buildroot}%{py_sitedir}/boost/parallel +install -m 0644 %{SOURCE11} %{buildroot}%{py_sitedir}/boost + +%if %{with python3} +mkdir -p %{buildroot}%{python3_sitearch}/boost/parallel/mpi/ +mv %{buildroot}/%{_libdir}/mpi.%{py3_soflags}.so %{buildroot}%{python3_sitearch}/boost/parallel/mpi/ +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 + +# 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} #install doc files +mkdir -p %{buildroot}%{my_docdir} +install -m 0644 %{SOURCE102} %{buildroot}%{my_docdir} 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 - @@ -647,7 +1241,6 @@ 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 -rm -f %{buildroot}%{_libdir}/*.a #symlink dupes %fdupes %{buildroot} @@ -656,6 +1249,28 @@ mkdir -p %{buildroot}%{_bindir} install -m 0755 dist/bin/quickbook %{buildroot}%{_bindir}/quickbook %endif +# Remove cruft +# FIXME: these shouldn't be built in the first place +rm %{buildroot}%{_libdir}/libboost_chrono.a +rm %{buildroot}%{_libdir}/libboost_system.a +rm %{buildroot}%{_libdir}/libboost_timer.a +rm %{buildroot}%{_libdir}/libboost_unit_test_framework.a + +%if ! %{with boost_fiber} +rm -r %{buildroot}%{_includedir}/boost/fiber +%endif + +%if ! %{with build_mpi} +rm -r %{buildroot}%{_includedir}/boost/mpi +rm %{buildroot}%{_includedir}/boost/mpi.hpp +%endif + +%if ! %{with build_context} +rm -r %{buildroot}%{_includedir}/boost/coroutine +rm -r %{buildroot}%{_includedir}/boost/coroutine2 +rm -r %{buildroot}%{_includedir}/boost/context +%endif + %post -n libboost_atomic%{lib_appendix} -p /sbin/ldconfig %post -n libboost_container%{lib_appendix} -p /sbin/ldconfig @@ -678,9 +1293,11 @@ install -m 0755 dist/bin/quickbook %{buildroot}%{_bindir}/quickbook %post -n libboost_program_options%{lib_appendix} -p /sbin/ldconfig -%post -n libboost_python%{lib_appendix} -p /sbin/ldconfig +%post -n libboost_python-py2_7-%{lib_appendix} -p /sbin/ldconfig -%post -n libboost_python3-%{lib_appendix} -p /sbin/ldconfig +%if %{with python3} +%post -n libboost_python-py3-%{lib_appendix} -p /sbin/ldconfig +%endif %post -n libboost_regex%{lib_appendix} -p /sbin/ldconfig @@ -695,6 +1312,14 @@ install -m 0755 dist/bin/quickbook %{buildroot}%{_bindir}/quickbook %post -n libboost_math%{lib_appendix} -p /sbin/ldconfig %if %{with build_mpi} %post -n libboost_mpi%{lib_appendix} -p /sbin/ldconfig + +%post -n libboost_graph_parallel%{lib_appendix} -p /sbin/ldconfig + +%post -n libboost_mpi_python-py2_7-%{lib_appendix} -p /sbin/ldconfig + +%if %{with python3} +%post -n libboost_mpi_python-py3-%{lib_appendix} -p /sbin/ldconfig +%endif %endif %post -n libboost_graph%{lib_appendix} -p /sbin/ldconfig @@ -711,8 +1336,6 @@ install -m 0755 dist/bin/quickbook %{buildroot}%{_bindir}/quickbook %post -n libboost_timer%{lib_appendix} -p /sbin/ldconfig -%post -n libboost_graph_parallel%{lib_appendix} -p /sbin/ldconfig - %postun -n libboost_atomic%{lib_appendix} -p /sbin/ldconfig %postun -n libboost_container%{lib_appendix} -p /sbin/ldconfig @@ -735,9 +1358,11 @@ install -m 0755 dist/bin/quickbook %{buildroot}%{_bindir}/quickbook %postun -n libboost_program_options%{lib_appendix} -p /sbin/ldconfig -%postun -n libboost_python%{lib_appendix} -p /sbin/ldconfig +%postun -n libboost_python-py2_7-%{lib_appendix} -p /sbin/ldconfig -%postun -n libboost_python3-%{lib_appendix} -p /sbin/ldconfig +%if %{with python3} +%postun -n libboost_python-py3-%{lib_appendix} -p /sbin/ldconfig +%endif %postun -n libboost_regex%{lib_appendix} -p /sbin/ldconfig @@ -752,6 +1377,14 @@ install -m 0755 dist/bin/quickbook %{buildroot}%{_bindir}/quickbook %postun -n libboost_math%{lib_appendix} -p /sbin/ldconfig %if %{with build_mpi} %postun -n libboost_mpi%{lib_appendix} -p /sbin/ldconfig + +%postun -n libboost_graph_parallel%{lib_appendix} -p /sbin/ldconfig + +%postun -n libboost_mpi_python-py2_7-%{lib_appendix} -p /sbin/ldconfig + +%if %{with python3} +%postun -n libboost_mpi_python-py3-%{lib_appendix} -p /sbin/ldconfig +%endif %endif %postun -n libboost_graph%{lib_appendix} -p /sbin/ldconfig @@ -768,8 +1401,6 @@ install -m 0755 dist/bin/quickbook %{buildroot}%{_bindir}/quickbook %postun -n libboost_timer%{lib_appendix} -p /sbin/ldconfig -%postun -n libboost_graph_parallel%{lib_appendix} -p /sbin/ldconfig - %files -n %{package_name}-jam %defattr(-, root, root, -) %{_bindir}/bjam @@ -782,152 +1413,337 @@ install -m 0755 dist/bin/quickbook %{buildroot}%{_bindir}/quickbook %files -n libboost_atomic%{lib_appendix} %defattr(-, root, root, -) -%{_libdir}/libboost_atomic*.so.* +%{_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.* +%{_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.* +%{_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.* -%endif +%{_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.* +%{_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.* -%endif +%{_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.* +%{_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.* +%{_libdir}/libboost_graph.so.%{version} -%files -n libboost_graph_parallel%{lib_appendix} -%defattr(-,root,root) -%{_libdir}/libboost_graph_parallel.so.* +%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.* +%{_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.* +%{_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_*.so.* +%{_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 %if %{with build_mpi} %files -n libboost_mpi%{lib_appendix} %defattr(-, root, root, -) -%{_libdir}/libboost_mpi*.so.* -%endif +%{_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 + +%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 python-boost_parallel_mpi%{lib_appendix} +%defattr(-, root, root, -) +%dir %{py_sitedir}/boost +%dir %{py_sitedir}/boost/parallel +%dir %{py_sitedir}/boost/parallel/mpi +%{py_sitedir}/boost/__init__.py +%{py_sitedir}/boost/parallel/__init__.py +%{py_sitedir}/boost/parallel/mpi/__init__.py +%{py_sitedir}/boost/parallel/mpi/mpi.so + +%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 %files -n libboost_test%{lib_appendix} %defattr(-, root, root, -) -%{_libdir}/libboost_prg_exec_monitor*.so.* -%{_libdir}/libboost_unit_test_framework*.so.* +%{_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.* +%{_libdir}/libboost_program_options.so.%{version} -%files -n libboost_python%{lib_appendix} +%files -n libboost_program_options%{lib_appendix}-devel %defattr(-, root, root, -) -%{_libdir}/libboost_python.so.* +%{_libdir}/libboost_program_options.so -%files -n libboost_python3-%{lib_appendix} +%files -n libboost_python-py2_7-%{lib_appendix} %defattr(-, root, root, -) -%{_libdir}/libboost_python3.so.* +%{_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 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 + +%endif # with python3 %files -n libboost_serialization%{lib_appendix} %defattr(-, root, root, -) -%{_libdir}/libboost_*serialization*.so.* +%{_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.* +%{_libdir}/libboost_signals.so.%{version} + +%files -n libboost_signals%{lib_appendix}-devel +%defattr(-, root, root, -) +%{_libdir}/libboost_signals.so %files -n libboost_system%{lib_appendix} %defattr(-, root, root, -) -%{_libdir}/libboost_system*.so.* +%{_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.* +%{_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.* +%{_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.* +%{_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.* +%{_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.* +%{_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.* +%{_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.* +%{_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.* +%{_libdir}/libboost_type_erasure.so.%{version} + +%files -n libboost_type_erasure%{lib_appendix}-devel +%defattr(-, root, root, -) +%{_libdir}/libboost_type_erasure.so + +%files -n libboost_headers%{lib_appendix}-devel +%defattr(-, root, root, -) +%dir %{_includedir}/boost +%{_includedir}/boost/* %files -n %{package_name}-devel %defattr(-, root, root, -) -%{_includedir}/boost -%{_libdir}/*.so -#%%{_datadir}/aclocal/*.m4 +%{my_docdir}/README.boost-devel %files -n %{package_name}-doc-html %defattr(-, root, root, -) %doc %{my_docdir}/* %exclude %{my_docdir}/LICENSE_1_0.txt +%exclude %{my_docdir}/README.boost-devel %if %{with build_docs} -# %%files doc-man -# %%defattr(644, root, root, -) -# %%doc %%{_mandir}/man3/*.3.gz -# %%doc %%{_mandir}/man7/*.7.gz -# %%doc %%{_mandir}/man9/*.9.gz +%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 %changelog diff --git a/boost_1_62_0.tar.bz2 b/boost_1_62_0.tar.bz2 deleted file mode 100644 index 2be892b..0000000 --- a/boost_1_62_0.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:36c96b0f6155c98404091d8ceb48319a28279ca0333fba1ad8611eb90afb2ca0 -size 84513338 diff --git a/boost_1_63_0.tar.bz2 b/boost_1_63_0.tar.bz2 new file mode 100644 index 0000000..b0b65a7 --- /dev/null +++ b/boost_1_63_0.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:beae2529f759f6b3bf3f4969a19c2e9d6f0c503edcb2de4a61d1428519fcb3b0 +size 81984414 diff --git a/dynamic_linking.patch b/dynamic_linking.patch new file mode 100644 index 0000000..1436728 --- /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 +- static ++ # static + : # default build + : # usage-requirements + shared: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 static ++ : # requirements 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 + + BOOST_SYSTEM_NO_DEPRECATED + shared:BOOST_CHRONO_DYN_LINK=1 +- static:BOOST_CHRONO_STATIC_LINK=1 ++ # static:BOOST_CHRONO_STATIC_LINK=1 + gcc-3.4.4:--enable-auto-import + gcc-4.3.4:--enable-auto-import + gcc-4.4.0,windows:--enable-auto-import +@@ -113,6 +113,6 @@ lib boost_chrono + : $(SOURCES).cpp + : + shared:BOOST_ALL_DYN_LINK=1 # tell source we're building dll's +- static:BOOST_All_STATIC_LINK=1 # tell source we're building static lib's ++ # static: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) + shared:BOOST_SYSTEM_DYN_LINK=1 +- static:BOOST_SYSTEM_STATIC_LINK=1 ++# static:BOOST_SYSTEM_STATIC_LINK=1 + ; + + SOURCES = error_code ; +@@ -19,7 +19,7 @@ SOURCES = error_code ; + lib boost_system + : $(SOURCES).cpp + : shared:BOOST_SYSTEM_DYN_LINK=1 +- static:BOOST_SYSTEM_STATIC_LINK=1 ++# static: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 + /boost/system//boost_system + : usage-requirements # pass these requirement to dependants (i.e. users) + shared:BOOST_TIMER_DYN_LINK=1 +- static:BOOST_TIMER_STATIC_LINK=1 ++# static: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 + : shared:BOOST_TIMER_DYN_LINK=1 +- static:BOOST_TIMER_STATIC_LINK=1 ++# static: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) + shared:BOOST_FILESYSTEM_DYN_LINK=1 +- static:BOOST_FILESYSTEM_STATIC_LINK=1 ++# static:BOOST_FILESYSTEM_STATIC_LINK=1 + ; + + SOURCES = +@@ -28,7 +28,7 @@ SOURCES = + lib boost_filesystem + : $(SOURCES).cpp ../../system/build//boost_system + : shared:BOOST_FILESYSTEM_DYN_LINK=1 +- static:BOOST_FILESYSTEM_STATIC_LINK=1 ++# static: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..b460740 --- /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/python-2059618.patch b/python-2059618.patch deleted file mode 100644 index a98670d..0000000 --- a/python-2059618.patch +++ /dev/null @@ -1,28 +0,0 @@ -Reverse: 2059618861eb25ae2ed3f1b6ebee8609365cbed9 -Bug: bnc#1006584 - https://svn.boost.org/trac/boost/ticket/12515 - -Index: boost_1_62_0/tools/build/src/tools/python.jam -=================================================================== ---- boost_1_62_0.orig/tools/build/src/tools/python.jam -+++ boost_1_62_0/tools/build/src/tools/python.jam -@@ -903,19 +903,6 @@ local rule configure ( version ? : cmd-o - toolset.add-requirements - $(target-requirements:J=,):$(interpreter-cmd) ; - -- # We also set a default requirement that assigns the first python configured -- # for a particular target OS as the default. This makes it so that we can -- # select a python interpreter with only knowledge of the target OS. And hence -- # can configure different Pythons based on the target OS only. -- local toolset-requirements = [ toolset.requirements ] ; -- local toolset-target-os-requirements -- = [ property.evaluate-conditionals-in-context -- [ $(toolset-requirements).raw ] : $(target-os) ] ; -- if ! in $(toolset-target-os-requirements:G) -- { -- toolset.add-requirements $(target-os):$(version:E=default) ; -- } -- - # Register the right suffix for extensions. - register-extension-suffix $(extension-suffix) : $(target-requirements) ; - diff --git a/python_mpi.patch b/python_mpi.patch new file mode 100644 index 0000000..9caa853 --- /dev/null +++ b/python_mpi.patch @@ -0,0 +1,27 @@ +Author: Adam Majer +Summary: Fix MPI module loading + +MPI requires dl.RTLD_NOW|dl.RTLD_GLOBAL flags to load +properly. + + +Index: boost_1_63_0/libs/mpi/build/__init__.py +=================================================================== +--- boost_1_63_0.orig/libs/mpi/build/__init__.py ++++ boost_1_63_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/symbol_diff.sh b/symbol_diff.sh new file mode 100644 index 0000000..820d3cd --- /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/test_lowcase.patch b/test_lowcase.patch new file mode 100644 index 0000000..0036d1f --- /dev/null +++ b/test_lowcase.patch @@ -0,0 +1,1058 @@ +Author: Adam Majer +PR: https://github.com/boostorg/test/pull/108 +Summary: Change capital variable names to lowercase + +Capitals clash by convention with #define, and in this case +VERSION clashes with GNU Autotools. + + +Index: boost_1_63_0/boost/test/impl/unit_test_parameters.ipp +=================================================================== +--- boost_1_63_0.orig/boost/test/impl/unit_test_parameters.ipp ++++ boost_1_63_0/boost/test/impl/unit_test_parameters.ipp +@@ -71,35 +71,35 @@ namespace rt = boost::runtime; + namespace runtime_config { + + // UTF parameters +-std::string AUTO_START_DBG = "auto_start_dbg"; +-std::string BREAK_EXEC_PATH = "break_exec_path"; +-std::string BUILD_INFO = "build_info"; +-std::string CATCH_SYS_ERRORS = "catch_system_errors"; +-std::string COLOR_OUTPUT = "color_output"; +-std::string DETECT_FP_EXCEPT = "detect_fp_exceptions"; +-std::string DETECT_MEM_LEAKS = "detect_memory_leaks"; +-std::string LIST_CONTENT = "list_content"; +-std::string LIST_LABELS = "list_labels"; +-std::string LOG_FORMAT = "log_format"; +-std::string LOG_LEVEL = "log_level"; +-std::string LOG_SINK = "log_sink"; +-std::string COMBINED_LOGGER = "logger"; +-std::string OUTPUT_FORMAT = "output_format"; +-std::string RANDOM_SEED = "random"; +-std::string REPORT_FORMAT = "report_format"; +-std::string REPORT_LEVEL = "report_level"; +-std::string REPORT_MEM_LEAKS = "report_memory_leaks_to"; +-std::string REPORT_SINK = "report_sink"; +-std::string RESULT_CODE = "result_code"; +-std::string RUN_FILTERS = "run_test"; +-std::string SAVE_TEST_PATTERN = "save_pattern"; +-std::string SHOW_PROGRESS = "show_progress"; +-std::string USE_ALT_STACK = "use_alt_stack"; +-std::string WAIT_FOR_DEBUGGER = "wait_for_debugger"; +- +-std::string HELP = "help"; +-std::string USAGE = "usage"; +-std::string VERSION = "version"; ++std::string auto_start_dbg_str = "auto_start_dbg"; ++std::string break_exec_path_str = "break_exec_path"; ++std::string build_info_str = "build_info"; ++std::string catch_sys_errors_str = "catch_system_errors"; ++std::string color_output_str = "color_output"; ++std::string detect_fp_except_str = "detect_fp_exceptions"; ++std::string detect_mem_leaks_str = "detect_memory_leaks"; ++std::string list_content_str = "list_content"; ++std::string list_labels_str = "list_labels"; ++std::string log_format_str = "log_format"; ++std::string log_level_str = "log_level"; ++std::string log_sink_str = "log_sink"; ++std::string combined_logger_str = "logger"; ++std::string output_format_str = "output_format"; ++std::string random_seed_str = "random"; ++std::string report_format_str = "report_format"; ++std::string report_level_str = "report_level"; ++std::string report_mem_leaks_str = "report_memory_leaks_to"; ++std::string report_sink_str = "report_sink"; ++std::string result_code_str = "result_code"; ++std::string run_filters_str = "run_test"; ++std::string save_test_pattern_str = "save_pattern"; ++std::string show_progress_str = "show_progress"; ++std::string use_alt_stack_str = "use_alt_stack"; ++std::string wait_for_debugger_str = "wait_for_debugger"; ++ ++std::string help_str = "help"; ++std::string usage_str = "usage"; ++std::string version_str = "version"; + + //____________________________________________________________________________// + +@@ -108,11 +108,11 @@ namespace { + void + register_parameters( rt::parameters_store& store ) + { +- rt::option auto_start_dbg( AUTO_START_DBG, ( ++ rt::option auto_start_dbg( auto_start_dbg_str, ( + rt::description = "Automatically attaches debugger in case of system level failure (signal).", + rt::env_var = "BOOST_TEST_AUTO_START_DBG", + +- rt::help = "Option " + AUTO_START_DBG + " specifies whether Boost.Test should attempt " ++ rt::help = "Option " + auto_start_dbg_str + " specifies whether Boost.Test should attempt " + "to attach a debugger when fatal system error occurs. At the moment this feature " + "is only available on a few selected platforms: Win32 and *nix. There is a " + "default debugger configured for these platforms. You can manually configure " +@@ -120,13 +120,13 @@ register_parameters( rt::parameters_stor + "Boost.Test debug API, specifically the function boost::debug::set_debugger." + )); + +- auto_start_dbg.add_cla_id( "--", AUTO_START_DBG, "=" ); ++ auto_start_dbg.add_cla_id( "--", auto_start_dbg_str, "=" ); + auto_start_dbg.add_cla_id( "-", "d", " " ); + store.add( auto_start_dbg ); + + /////////////////////////////////////////////// + +- rt::parameter break_exec_path( BREAK_EXEC_PATH, ( ++ rt::parameter break_exec_path( break_exec_path_str, ( + rt::description = "For the exception safety testing allows to break at specific execution path.", + rt::env_var = "BOOST_TEST_BREAK_EXEC_PATH" + #ifndef BOOST_NO_CXX11_LAMBDAS +@@ -137,25 +137,25 @@ register_parameters( rt::parameters_stor + #endif + )); + +- break_exec_path.add_cla_id( "--", BREAK_EXEC_PATH, "=" ); ++ break_exec_path.add_cla_id( "--", break_exec_path_str, "=" ); + store.add( break_exec_path ); + + /////////////////////////////////////////////// + +- rt::option build_info( BUILD_INFO, ( ++ rt::option build_info( build_info_str, ( + rt::description = "Displays library build information.", + rt::env_var = "BOOST_TEST_BUILD_INFO", +- rt::help = "Option " + BUILD_INFO + " displays library build information, including: platform, " ++ rt::help = "Option " + build_info_str + " displays library build information, including: platform, " + "compiler, STL version and Boost version." + )); + +- build_info.add_cla_id( "--", BUILD_INFO, "=" ); ++ build_info.add_cla_id( "--", build_info_str, "=" ); + build_info.add_cla_id( "-", "i", " " ); + store.add( build_info ); + + /////////////////////////////////////////////// + +- rt::option catch_sys_errors( CATCH_SYS_ERRORS, ( ++ rt::option catch_sys_errors( catch_sys_errors_str, ( + rt::description = "Allows to switch between catching and ignoring system errors (signals).", + rt::env_var = "BOOST_TEST_CATCH_SYSTEM_ERRORS", + rt::default_value = +@@ -164,7 +164,7 @@ register_parameters( rt::parameters_stor + #else + true, + #endif +- rt::help = "If option " + CATCH_SYS_ERRORS + " has value no the frameworks does not attempt to catch " ++ rt::help = "If option " + catch_sys_errors_str + " has value no the frameworks does not attempt to catch " + "asynchronous system failure events (signals on *NIX platforms or structured exceptions on Windows). " + " Default value is " + #ifdef BOOST_TEST_DEFAULTS_TO_CORE_DUMP +@@ -174,13 +174,13 @@ register_parameters( rt::parameters_stor + #endif + )); + +- catch_sys_errors.add_cla_id( "--", CATCH_SYS_ERRORS, "=", true ); ++ catch_sys_errors.add_cla_id( "--", catch_sys_errors_str, "=", true ); + catch_sys_errors.add_cla_id( "-", "s", " " ); + store.add( catch_sys_errors ); + + /////////////////////////////////////////////// + +- rt::option color_output( COLOR_OUTPUT, ( ++ rt::option color_output( color_output_str, ( + rt::description = "Enables color output of the framework log and report messages.", + rt::env_var = "BOOST_TEST_COLOR_OUTPUT", + rt::help = "The framework is able to produce color output on systems which supports it. " +@@ -188,31 +188,31 @@ register_parameters( rt::parameters_stor + "does not produces color output." + )); + +- color_output.add_cla_id( "--", COLOR_OUTPUT, "=", true ); ++ color_output.add_cla_id( "--", color_output_str, "=", true ); + color_output.add_cla_id( "-", "x", " " ); + store.add( color_output ); + + /////////////////////////////////////////////// + +- rt::option detect_fp_except( DETECT_FP_EXCEPT, ( ++ rt::option detect_fp_except( detect_fp_except_str, ( + rt::description = "Enables/disables floating point exceptions traps.", + rt::env_var = "BOOST_TEST_DETECT_FP_EXCEPTIONS", +- rt::help = "Option " + DETECT_FP_EXCEPT + " enables/disables hardware traps for the floating " ++ rt::help = "Option " + detect_fp_except_str + " enables/disables hardware traps for the floating " + "point exceptions (if supported on your platfrom)." + )); + +- detect_fp_except.add_cla_id( "--", DETECT_FP_EXCEPT, "=", true ); ++ detect_fp_except.add_cla_id( "--", detect_fp_except_str, "=", true ); + store.add( detect_fp_except ); + + /////////////////////////////////////////////// + +- rt::parameter detect_mem_leaks( DETECT_MEM_LEAKS, ( ++ rt::parameter detect_mem_leaks( detect_mem_leaks_str, ( + rt::description = "Turns on/off memory leaks detection (optionally breaking on specified alloc order number).", + rt::env_var = "BOOST_TEST_DETECT_MEMORY_LEAK", + rt::default_value = 1L, + rt::optional_value = 1L, + rt::value_hint = "", +- rt::help = "Parameter " + DETECT_MEM_LEAKS + " enables/disables memory leaks detection. " ++ rt::help = "Parameter " + detect_mem_leaks_str + " enables/disables memory leaks detection. " + "This parameter has optional long integer value. The default value is 1, which " + "enables the memory leak detection. The value 0 disables memory leak detection. " + "Any value N greater than 1 is treated as leak allocation number and tells the " +@@ -220,12 +220,12 @@ register_parameters( rt::parameters_stor + "omitted the default value is assumed." + )); + +- detect_mem_leaks.add_cla_id( "--", DETECT_MEM_LEAKS, "=" ); ++ detect_mem_leaks.add_cla_id( "--", detect_mem_leaks_str, "=" ); + store.add( detect_mem_leaks ); + + /////////////////////////////////////////////// + +- rt::enum_parameter list_content( LIST_CONTENT, ( ++ rt::enum_parameter list_content( list_content_str, ( + rt::description = "Lists the content of test tree - names of all test suites and test cases.", + rt::env_var = "BOOST_TEST_LIST_CONTENT", + rt::default_value = OF_INVALID, +@@ -242,30 +242,30 @@ register_parameters( rt::parameters_stor + ( "DOT", OF_DOT ) + , + #endif +- rt::help = "Parameter " + LIST_CONTENT + " instructs the framework to list the content " ++ rt::help = "Parameter " + list_content_str + " instructs the framework to list the content " + "of the test module instead of executing the test cases. Parameter accepts " + "optional string value indicating the format of the output. Currently the " + "framework supports two formats: human readable format (HRF) and dot graph " + "format (DOT). If value is omitted HRF value is assumed." + )); +- list_content.add_cla_id( "--", LIST_CONTENT, "=" ); ++ list_content.add_cla_id( "--", list_content_str, "=" ); + store.add( list_content ); + + /////////////////////////////////////////////// + +- rt::option list_labels( LIST_LABELS, ( ++ rt::option list_labels( list_labels_str, ( + rt::description = "Lists all available labels.", + rt::env_var = "BOOST_TEST_LIST_LABELS", +- rt::help = "Option " + LIST_LABELS + " instructs the framework to list all the the labels " ++ rt::help = "Option " + list_labels_str + " instructs the framework to list all the the labels " + "defined in the test module instead of executing the test cases." + )); + +- list_labels.add_cla_id( "--", LIST_LABELS, "=" ); ++ list_labels.add_cla_id( "--", list_labels_str, "=" ); + store.add( list_labels ); + + /////////////////////////////////////////////// + +- rt::enum_parameter log_format( LOG_FORMAT, ( ++ rt::enum_parameter log_format( log_format_str, ( + rt::description = "Specifies log format.", + rt::env_var = "BOOST_TEST_LOG_FORMAT", + rt::default_value = OF_CLF, +@@ -285,7 +285,7 @@ register_parameters( rt::parameters_stor + ( "JUNIT", OF_JUNIT ) + , + #endif +- rt::help = "Parameter " + LOG_FORMAT + " allows to set the frameowrk's log format to one " ++ rt::help = "Parameter " + log_format_str + " allows to set the frameowrk's log format to one " + "of the formats supplied by the framework. The only acceptable values for this " + "parameter are the names of the output formats supplied by the framework. By " + "default the framework uses human readable format (HRF) for testing log. This " +@@ -293,13 +293,13 @@ register_parameters( rt::parameters_stor + "or JUNIT as log format, which are easier to process by testing automation tools." + )); + +- log_format.add_cla_id( "--", LOG_FORMAT, "=" ); ++ log_format.add_cla_id( "--", log_format_str, "=" ); + log_format.add_cla_id( "-", "f", " " ); + store.add( log_format ); + + /////////////////////////////////////////////// + +- rt::enum_parameter log_level( LOG_LEVEL, ( ++ rt::enum_parameter log_level( log_level_str, ( + rt::description = "Specifies log level.", + rt::env_var = "BOOST_TEST_LOG_LEVEL", + rt::default_value = log_all_errors, +@@ -333,7 +333,7 @@ register_parameters( rt::parameters_stor + ( "nothing" , log_nothing ) + , + #endif +- rt::help = "Parameter " + LOG_LEVEL + " allows to set the framework's log level. " ++ rt::help = "Parameter " + log_level_str + " allows to set the framework's log level. " + "Log level defines the verbosity of testing log produced by a testing " + "module. The verbosity ranges from a complete log, when all assertions " + "(both successful and failing) are reported, all notifications about " +@@ -341,29 +341,29 @@ register_parameters( rt::parameters_stor + "is reported to a testing log stream." + )); + +- log_level.add_cla_id( "--", LOG_LEVEL, "=" ); ++ log_level.add_cla_id( "--", log_level_str, "=" ); + log_level.add_cla_id( "-", "l", " " ); + store.add( log_level ); + + /////////////////////////////////////////////// + +- rt::parameter log_sink( LOG_SINK, ( ++ rt::parameter log_sink( log_sink_str, ( + rt::description = "Specifies log sink: stdout(default), stderr or file name.", + rt::env_var = "BOOST_TEST_LOG_SINK", + rt::value_hint = "", +- rt::help = "Parameter " + LOG_SINK + " allows to set the log sink - location " ++ rt::help = "Parameter " + log_sink_str + " allows to set the log sink - location " + "where we report the log to, thus it allows to easily redirect the " + "test logs to file or standard streams. By default testing log is " + "directed to standard output." + )); + +- log_sink.add_cla_id( "--", LOG_SINK, "=" ); ++ log_sink.add_cla_id( "--", log_sink_str, "=" ); + log_sink.add_cla_id( "-", "k", " " ); + store.add( log_sink ); + + /////////////////////////////////////////////// + +- rt::enum_parameter output_format( OUTPUT_FORMAT, ( ++ rt::enum_parameter output_format( output_format_str, ( + rt::description = "Specifies output format (both log and report).", + rt::env_var = "BOOST_TEST_OUTPUT_FORMAT", + rt::enum_values::value = +@@ -380,8 +380,8 @@ register_parameters( rt::parameters_stor + ( "XML", OF_XML ) + , + #endif +- rt::help = "Parameter " + OUTPUT_FORMAT + " combines an effect of " + REPORT_FORMAT + +- " and " + LOG_FORMAT + " parameters. This parameter has higher priority " ++ rt::help = "Parameter " + output_format_str + " combines an effect of " + report_format_str + ++ " and " + log_format_str + " parameters. This parameter has higher priority " + "than either one of them. In other words if this parameter is specified " + "it overrides the value of other two parameters. This parameter does not " + "have a default value. The only acceptable values are string names of " +@@ -389,33 +389,33 @@ register_parameters( rt::parameters_stor + "automation tools processing." + )); + +- output_format.add_cla_id( "--", OUTPUT_FORMAT, "=" ); ++ output_format.add_cla_id( "--", output_format_str, "=" ); + output_format.add_cla_id( "-", "o", " " ); + store.add( output_format ); + + /////////////////////////////////////////////// combined logger option + +- rt::parameter combined_logger( COMBINED_LOGGER, ( ++ rt::parameter combined_logger( combined_logger_str, ( + rt::description = "Specifies log level and sink for one or several log format", + rt::env_var = "BOOST_TEST_LOGGER", + rt::value_hint = "log_format:log_level:log_sink", +- rt::help = "Parameter " + COMBINED_LOGGER + " allows to specify the logger type, level and sink\n" ++ rt::help = "Parameter " + combined_logger_str + " allows to specify the logger type, level and sink\n" + "in one command." + )); + +- combined_logger.add_cla_id( "--", COMBINED_LOGGER, "=" ); ++ combined_logger.add_cla_id( "--", combined_logger_str, "=" ); + store.add( combined_logger ); + + /////////////////////////////////////////////// + +- rt::parameter random_seed( RANDOM_SEED, ( ++ rt::parameter random_seed( random_seed_str, ( + rt::description = "Allows to switch between sequential and random order of test units execution." + " Optionally allows to specify concrete seed for random number generator.", + rt::env_var = "BOOST_TEST_RANDOM", + rt::default_value = 0U, + rt::optional_value = 1U, + rt::value_hint = "", +- rt::help = "Parameter " + RANDOM_SEED + " instructs the framework to execute the " ++ rt::help = "Parameter " + random_seed_str + " instructs the framework to execute the " + "test cases in random order. This parameter accepts optional unsigned " + "integer argument. By default test cases are executed in some specific " + "order defined by order of test units in test files and dependency between " +@@ -425,12 +425,12 @@ register_parameters( rt::parameters_stor + "the run." + )); + +- random_seed.add_cla_id( "--", RANDOM_SEED, "=" ); ++ random_seed.add_cla_id( "--", random_seed_str, "=" ); + store.add( random_seed ); + + /////////////////////////////////////////////// + +- rt::enum_parameter report_format( REPORT_FORMAT, ( ++ rt::enum_parameter report_format( report_format_str, ( + rt::description = "Specifies report format.", + rt::env_var = "BOOST_TEST_REPORT_FORMAT", + rt::default_value = OF_CLF, +@@ -448,7 +448,7 @@ register_parameters( rt::parameters_stor + ( "XML", OF_XML ) + , + #endif +- rt::help = "Parameter " + REPORT_FORMAT + " allows to set the framework's report format " ++ rt::help = "Parameter " + report_format_str + " allows to set the framework's report format " + "to one of the formats supplied by the framework. The only acceptable values " + "for this parameter are the names of the output formats. By default the framework " + "uses human readable format (HRF) for results reporting. Alternatively you can " +@@ -456,13 +456,13 @@ register_parameters( rt::parameters_stor + "automation tools." + )); + +- report_format.add_cla_id( "--", REPORT_FORMAT, "=" ); ++ report_format.add_cla_id( "--", report_format_str, "=" ); + report_format.add_cla_id( "-", "m", " " ); + store.add( report_format ); + + /////////////////////////////////////////////// + +- rt::enum_parameter report_level( REPORT_LEVEL, ( ++ rt::enum_parameter report_level( report_level_str, ( + rt::description = "Specifies report level.", + rt::env_var = "BOOST_TEST_REPORT_LEVEL", + rt::default_value = CONFIRMATION_REPORT, +@@ -482,155 +482,155 @@ register_parameters( rt::parameters_stor + ( "no", NO_REPORT ) + , + #endif +- rt::help = "Parameter " + REPORT_LEVEL + " allows to set the verbosity level of the " ++ rt::help = "Parameter " + report_level_str + " allows to set the verbosity level of the " + "testing result report generated by the framework. Use value 'no' to " + "eliminate the results report completely." + )); + +- report_level.add_cla_id( "--", REPORT_LEVEL, "=" ); ++ report_level.add_cla_id( "--", report_level_str, "=" ); + report_level.add_cla_id( "-", "r", " " ); + store.add( report_level ); + + /////////////////////////////////////////////// + +- rt::parameter report_mem_leaks( REPORT_MEM_LEAKS, ( ++ rt::parameter report_mem_leaks( report_mem_leaks_str, ( + rt::description = "File where to report memory leaks to.", + rt::env_var = "BOOST_TEST_REPORT_MEMORY_LEAKS_TO", + rt::default_value = std::string(), + rt::value_hint = "", +- rt::help = "Parameter " + REPORT_MEM_LEAKS + " allows to specify a file where to report " ++ rt::help = "Parameter " + report_mem_leaks_str + " allows to specify a file where to report " + "memory leaks to. The parameter does not have default value. If it is not specified, " + "memory leaks (if any) are reported to the standard error stream." + )); + +- report_mem_leaks.add_cla_id( "--", REPORT_MEM_LEAKS, "=" ); ++ report_mem_leaks.add_cla_id( "--", report_mem_leaks_str, "=" ); + store.add( report_mem_leaks ); + + /////////////////////////////////////////////// + +- rt::parameter report_sink( REPORT_SINK, ( ++ rt::parameter report_sink( report_sink_str, ( + rt::description = "Specifies report sink: stderr(default), stdout or file name.", + rt::env_var = "BOOST_TEST_REPORT_SINK", + rt::value_hint = "", +- rt::help = "Parameter " + REPORT_SINK + " allows to set the result report sink - " ++ rt::help = "Parameter " + report_sink_str + " allows to set the result report sink - " + "the location where the framework writes the result report to, thus it " + "allows to easily redirect the result report to a file or a standard " + "stream. By default the testing result report is directed to the " + "standard error stream." + )); + +- report_sink.add_cla_id( "--", REPORT_SINK, "=" ); ++ report_sink.add_cla_id( "--", report_sink_str, "=" ); + report_sink.add_cla_id( "-", "e", " " ); + store.add( report_sink ); + + /////////////////////////////////////////////// + +- rt::option result_code( RESULT_CODE, ( ++ rt::option result_code( result_code_str, ( + rt::description = "Disables test modules's result code generation.", + rt::env_var = "BOOST_TEST_RESULT_CODE", + rt::default_value = true, +- rt::help = "The 'no' argument value for the parameter " + RESULT_CODE + " instructs the " ++ rt::help = "The 'no' argument value for the parameter " + result_code_str + " instructs the " + "framework to always return zero result code. This can be used for test programs " + "executed within IDE. By default this parameter has value 'yes'." + )); + +- result_code.add_cla_id( "--", RESULT_CODE, "=", true ); ++ result_code.add_cla_id( "--", result_code_str, "=", true ); + result_code.add_cla_id( "-", "c", " " ); + store.add( result_code ); + + /////////////////////////////////////////////// + +- rt::parameter tests_to_run( RUN_FILTERS, ( ++ rt::parameter tests_to_run( run_filters_str, ( + rt::description = "Filters, which test units to include or exclude from test module execution.", + rt::env_var = "BOOST_TEST_RUN_FILTERS", + rt::value_hint = "", +- rt::help = "Parameter " + RUN_FILTERS + " allows to filter which test units to execute during " ++ rt::help = "Parameter " + run_filters_str + " allows to filter which test units to execute during " + "testing. The framework supports both 'selection filters', which allow to select " + "which test units to enable from the set of available test units, and 'disabler " + "filters', which allow to disable some test units. The __UTF__ also supports " + "enabling/disabling test units at compile time. These settings identify the default " +- "set of test units to run. Parameter " + RUN_FILTERS + " is used to change this default. " ++ "set of test units to run. Parameter " + run_filters_str + " is used to change this default. " + "This parameter is repeatable, so you can specify more than one filter if necessary." + )); + +- tests_to_run.add_cla_id( "--", RUN_FILTERS, "=" ); ++ tests_to_run.add_cla_id( "--", run_filters_str, "=" ); + tests_to_run.add_cla_id( "-", "t", " " ); + store.add( tests_to_run ); + + /////////////////////////////////////////////// + +- rt::option save_test_pattern( SAVE_TEST_PATTERN, ( ++ rt::option save_test_pattern( save_test_pattern_str, ( + rt::description = "Allows to switch between saving or matching test pattern file.", + rt::env_var = "BOOST_TEST_SAVE_PATTERN", +- rt::help = "Parameter " + SAVE_TEST_PATTERN + " facilitates switching mode of operation for " ++ rt::help = "Parameter " + save_test_pattern_str + " facilitates switching mode of operation for " + "testing output streams.\n\nThis parameter serves no particular purpose within the " + "framework itself. It can be used by test modules relying on output_test_stream to " + "implement testing logic. Default mode is 'match' (false)." + )); + +- save_test_pattern.add_cla_id( "--", SAVE_TEST_PATTERN, "=" ); ++ save_test_pattern.add_cla_id( "--", save_test_pattern_str, "=" ); + store.add( save_test_pattern ); + + /////////////////////////////////////////////// + +- rt::option show_progress( SHOW_PROGRESS, ( ++ rt::option show_progress( show_progress_str, ( + rt::description = "Turns on progress display.", + rt::env_var = "BOOST_TEST_SHOW_PROGRESS", +- rt::help = "Parameter " + SHOW_PROGRESS + " instructs the framework to display test progress " ++ rt::help = "Parameter " + show_progress_str + " instructs the framework to display test progress " + "information. By default the test progress is not shown." + )); + +- show_progress.add_cla_id( "--", SHOW_PROGRESS, "=" ); ++ show_progress.add_cla_id( "--", show_progress_str, "=" ); + show_progress.add_cla_id( "-", "p", " " ); + store.add( show_progress ); + + /////////////////////////////////////////////// + +- rt::option use_alt_stack( USE_ALT_STACK, ( ++ rt::option use_alt_stack( use_alt_stack_str, ( + rt::description = "Turns on/off usage of an alternative stack for signal handling.", + rt::env_var = "BOOST_TEST_USE_ALT_STACK", + rt::default_value = true, +- rt::help = "Parameter " + USE_ALT_STACK + " instructs the framework to use alternative " ++ rt::help = "Parameter " + use_alt_stack_str + " instructs the framework to use alternative " + "stack for signals processing, on platforms where they are supported. The feature " + "is enabled by default, but can be disabled using this parameter." + )); + +- use_alt_stack.add_cla_id( "--", USE_ALT_STACK, "=", true ); ++ use_alt_stack.add_cla_id( "--", use_alt_stack_str, "=", true ); + store.add( use_alt_stack ); + + /////////////////////////////////////////////// + +- rt::option wait_for_debugger( WAIT_FOR_DEBUGGER, ( ++ rt::option wait_for_debugger( wait_for_debugger_str, ( + rt::description = "Forces test module to wait for button to be pressed before starting test run.", + rt::env_var = "BOOST_TEST_WAIT_FOR_DEBUGGER", +- rt::help = "Parameter " + WAIT_FOR_DEBUGGER + " instructs the framework to pause before starting " ++ rt::help = "Parameter " + wait_for_debugger_str + " instructs the framework to pause before starting " + "test units execution, so that you can attach a debugger to running test module. By " + "default this parameters turned off." + )); + +- wait_for_debugger.add_cla_id( "--", WAIT_FOR_DEBUGGER, "=" ); ++ wait_for_debugger.add_cla_id( "--", wait_for_debugger_str, "=" ); + wait_for_debugger.add_cla_id( "-", "w", " " ); + store.add( wait_for_debugger ); + + /////////////////////////////////////////////// + +- rt::parameter help( HELP, ( ++ rt::parameter help( help_str, ( + rt::description = "Help for framework parameters.", + rt::optional_value = std::string(), + rt::value_hint = "", +- rt::help = "Parameter " + HELP + " displays help on the framework's parameters. " ++ rt::help = "Parameter " + help_str + " displays help on the framework's parameters. " + "The parameter accepts an optional argument value. If present, an argument value is " + "interpreted as a parameter name (name guessing works as well, so for example " + "--help=rand displays help on the parameter random). If the parameter name is unknown " + "or ambiguous error is reported. If argument value is absent, a summary of all " + "framework's parameter is displayed." + )); +- help.add_cla_id( "--", HELP, "=" ); ++ help.add_cla_id( "--", help_str, "=" ); + store.add( help ); + + /////////////////////////////////////////////// + +- rt::option usage( USAGE, ( ++ rt::option usage( usage_str, ( + rt::description = "Short message explaining usage of Boost.Test parameters." + )); + usage.add_cla_id( "-", "?", " " ); +@@ -638,10 +638,10 @@ register_parameters( rt::parameters_stor + + /////////////////////////////////////////////// + +- rt::option version( VERSION, ( ++ rt::option version( version_str, ( + rt::description = "Prints Boost.Test version and exits." + )); +- version.add_cla_id( "--", VERSION, " " ); ++ version.add_cla_id( "--", version_str, " " ); + store.add( version ); + } + +@@ -676,24 +676,24 @@ init( int& argc, char** argv ) + rt::finalize_arguments( s_parameters_store, s_arguments_store ); + + // Report help if requested +- if( runtime_config::get( VERSION ) ) { ++ if( runtime_config::get( version_str ) ) { + parser->version( std::cerr ); + BOOST_TEST_I_THROW( framework::nothing_to_test( boost::exit_success ) ); + } +- else if( runtime_config::get( USAGE ) ) { ++ else if( runtime_config::get( usage_str ) ) { + parser->usage( std::cerr ); + BOOST_TEST_I_THROW( framework::nothing_to_test( boost::exit_success ) ); + } +- else if( s_arguments_store.has( HELP ) ) { +- parser->help( std::cerr, s_parameters_store, runtime_config::get( HELP ) ); ++ else if( s_arguments_store.has( help_str ) ) { ++ parser->help( std::cerr, s_parameters_store, runtime_config::get( help_str ) ); + BOOST_TEST_I_THROW( framework::nothing_to_test( boost::exit_success ) ); + } + + // A bit of business logic: output_format takes precedence over log/report formats +- if( s_arguments_store.has( OUTPUT_FORMAT ) ) { +- unit_test::output_format of = s_arguments_store.get( OUTPUT_FORMAT ); +- s_arguments_store.set( REPORT_FORMAT, of ); +- s_arguments_store.set( LOG_FORMAT, of ); ++ if( s_arguments_store.has( output_format_str ) ) { ++ unit_test::output_format of = s_arguments_store.get( output_format_str ); ++ s_arguments_store.set( report_format_str, of ); ++ s_arguments_store.set( log_format_str, of ); + } + + } +@@ -747,7 +747,7 @@ argument_store() + bool + save_pattern() + { +- return runtime_config::get( SAVE_TEST_PATTERN ); ++ return runtime_config::get( save_test_pattern_str ); + } + + //____________________________________________________________________________// +Index: boost_1_63_0/boost/test/impl/framework.ipp +=================================================================== +--- boost_1_63_0.orig/boost/test/impl/framework.ipp ++++ boost_1_63_0/boost/test/impl/framework.ipp +@@ -396,7 +396,7 @@ parse_filters( test_unit_id master_tu_id + // 10. collect tu to enable and disable based on filters + bool had_selector_filter = false; + +- std::vector const& filters = runtime_config::get >( runtime_config::RUN_FILTERS ); ++ std::vector const& filters = runtime_config::get >( runtime_config::run_filters_str ); + + BOOST_TEST_FOREACH( const_string, filter, filters ) { + BOOST_TEST_SETUP_ASSERT( !filter.is_empty(), "Invalid filter specification" ); +@@ -552,7 +552,7 @@ public: + test_unit_id_list tu_to_disable; + + // 10. If there are any filters supplied, figure out lists of test units to enable/disable +- bool had_selector_filter = !runtime_config::get >( runtime_config::RUN_FILTERS ).empty() && ++ bool had_selector_filter = !runtime_config::get >( runtime_config::run_filters_str ).empty() && + parse_filters( master_tu_id, tu_to_enable, tu_to_disable ); + + // 20. Set the stage: either use default run status or disable all test units +@@ -657,7 +657,7 @@ public: + if( tu.p_type == TUT_SUITE ) { + test_suite const& ts = static_cast( tu ); + +- if( runtime_config::get( runtime_config::RANDOM_SEED ) == 0 ) { ++ if( runtime_config::get( runtime_config::random_seed_str ) == 0 ) { + typedef std::pair value_type; + + BOOST_TEST_FOREACH( value_type, chld, ts.m_ranked_children ) { +@@ -845,26 +845,26 @@ setup_loggers() + BOOST_TEST_I_TRY { + + #ifdef BOOST_TEST_SUPPORT_TOKEN_ITERATOR +- bool has_combined_logger = runtime_config::has( runtime_config::COMBINED_LOGGER ) +- && !runtime_config::get< std::vector >( runtime_config::COMBINED_LOGGER ).empty(); ++ bool has_combined_logger = runtime_config::has( runtime_config::combined_logger_str ) ++ && !runtime_config::get< std::vector >( runtime_config::combined_logger_str ).empty(); + #else + bool has_combined_logger = false; + #endif + + if( !has_combined_logger ) { +- unit_test_log.set_threshold_level( runtime_config::get( runtime_config::LOG_LEVEL ) ); +- const output_format format = runtime_config::get( runtime_config::LOG_FORMAT ); ++ unit_test_log.set_threshold_level( runtime_config::get( runtime_config::log_level_str ) ); ++ const output_format format = runtime_config::get( runtime_config::log_format_str ); + unit_test_log.set_format( format ); + + runtime_config::stream_holder& stream_logger = s_frk_state().m_log_sinks[format]; +- if( runtime_config::has( runtime_config::LOG_SINK ) ) +- stream_logger.setup( runtime_config::get( runtime_config::LOG_SINK ) ); ++ if( runtime_config::has( runtime_config::log_sink_str ) ) ++ stream_logger.setup( runtime_config::get( runtime_config::log_sink_str ) ); + unit_test_log.set_stream( stream_logger.ref() ); + } + else + { + +- const std::vector& v_output_format = runtime_config::get< std::vector >( runtime_config::COMBINED_LOGGER ) ; ++ const std::vector& v_output_format = runtime_config::get< std::vector >( runtime_config::combined_logger_str ) ; + + static const std::pair all_log_levels[] = { + std::make_pair( "all" , log_successful_tests ), +@@ -1033,26 +1033,26 @@ init( init_unit_test_func init_func, int + impl::setup_loggers(); + + // 30. Set the desired report level, format and sink +- results_reporter::set_level( runtime_config::get( runtime_config::REPORT_LEVEL ) ); +- results_reporter::set_format( runtime_config::get( runtime_config::REPORT_FORMAT ) ); ++ results_reporter::set_level( runtime_config::get( runtime_config::report_level_str ) ); ++ results_reporter::set_format( runtime_config::get( runtime_config::report_format_str ) ); + +- if( runtime_config::has( runtime_config::REPORT_SINK ) ) +- s_frk_state().m_report_sink.setup( runtime_config::get( runtime_config::REPORT_SINK ) ); ++ if( runtime_config::has( runtime_config::report_sink_str ) ) ++ s_frk_state().m_report_sink.setup( runtime_config::get( runtime_config::report_sink_str ) ); + results_reporter::set_stream( s_frk_state().m_report_sink.ref() ); + + // 40. Register default test observers + register_observer( results_collector ); + register_observer( unit_test_log ); + +- if( runtime_config::get( runtime_config::SHOW_PROGRESS ) ) { ++ if( runtime_config::get( runtime_config::show_progress_str ) ) { + progress_monitor.set_stream( std::cout ); // defaults to stdout + register_observer( progress_monitor ); + } + + // 50. Set up memory leak detection +- unsigned long detect_mem_leak = runtime_config::get( runtime_config::DETECT_MEM_LEAKS ); ++ unsigned long detect_mem_leak = runtime_config::get( runtime_config::detect_mem_leaks_str ); + if( detect_mem_leak > 0 ) { +- debug::detect_memory_leaks( true, runtime_config::get( runtime_config::REPORT_MEM_LEAKS ) ); ++ debug::detect_memory_leaks( true, runtime_config::get( runtime_config::report_mem_leaks_str ) ); + debug::break_memory_alloc( (long)detect_mem_leak ); + } + +@@ -1408,7 +1408,7 @@ run( test_unit_id id, bool continue_test + test_case_counter tcc; + traverse_test_tree( id, tcc ); + +- BOOST_TEST_SETUP_ASSERT( tcc.p_count != 0 , runtime_config::get >( runtime_config::RUN_FILTERS ).empty() ++ BOOST_TEST_SETUP_ASSERT( tcc.p_count != 0 , runtime_config::get >( runtime_config::run_filters_str ).empty() + ? BOOST_TEST_L( "test tree is empty" ) + : BOOST_TEST_L( "no test cases matching filter or all test cases were disabled" ) ); + +@@ -1428,7 +1428,7 @@ run( test_unit_id id, bool continue_test + } + } + +- unsigned seed = runtime_config::get( runtime_config::RANDOM_SEED ); ++ unsigned seed = runtime_config::get( runtime_config::random_seed_str ); + switch( seed ) { + case 0: + break; +Index: boost_1_63_0/boost/test/impl/compiler_log_formatter.ipp +=================================================================== +--- boost_1_63_0.orig/boost/test/impl/compiler_log_formatter.ipp ++++ boost_1_63_0/boost/test/impl/compiler_log_formatter.ipp +@@ -62,7 +62,7 @@ test_phase_identifier() + void + compiler_log_formatter::log_start( std::ostream& output, counter_t test_cases_amount ) + { +- m_color_output = runtime_config::get( runtime_config::COLOR_OUTPUT ); ++ m_color_output = runtime_config::get( runtime_config::color_output_str ); + + if( test_cases_amount > 0 ) + output << "Running " << test_cases_amount << " test " +Index: boost_1_63_0/boost/test/impl/plain_report_formatter.ipp +=================================================================== +--- boost_1_63_0.orig/boost/test/impl/plain_report_formatter.ipp ++++ boost_1_63_0/boost/test/impl/plain_report_formatter.ipp +@@ -83,7 +83,7 @@ void + plain_report_formatter::results_report_start( std::ostream& ostr ) + { + m_indent = 0; +- m_color_output = runtime_config::get( runtime_config::COLOR_OUTPUT ); ++ m_color_output = runtime_config::get( runtime_config::color_output_str ); + ostr << '\n'; + } + +Index: boost_1_63_0/boost/test/impl/progress_monitor.ipp +=================================================================== +--- boost_1_63_0.orig/boost/test/impl/progress_monitor.ipp ++++ boost_1_63_0/boost/test/impl/progress_monitor.ipp +@@ -124,7 +124,7 @@ progress_monitor_impl& s_pm_impl() { sta + void + progress_monitor_t::test_start( counter_t test_cases_amount ) + { +- s_pm_impl().m_color_output = runtime_config::get( runtime_config::COLOR_OUTPUT ); ++ s_pm_impl().m_color_output = runtime_config::get( runtime_config::color_output_str ); + + PM_SCOPED_COLOR(); + +Index: boost_1_63_0/boost/test/impl/unit_test_log.ipp +=================================================================== +--- boost_1_63_0.orig/boost/test/impl/unit_test_log.ipp ++++ boost_1_63_0/boost/test/impl/unit_test_log.ipp +@@ -168,7 +168,7 @@ unit_test_log_t::test_start( counter_t t + + current_logger_data.m_log_formatter->log_start( current_logger_data.stream(), test_cases_amount ); + +- if( runtime_config::get( runtime_config::BUILD_INFO ) ) ++ if( runtime_config::get( runtime_config::build_info_str ) ) + current_logger_data.m_log_formatter->log_build_info( current_logger_data.stream() ); + + current_logger_data.m_entry_in_progress = false; +Index: boost_1_63_0/boost/test/impl/unit_test_main.ipp +=================================================================== +--- boost_1_63_0.orig/boost/test/impl/unit_test_main.ipp ++++ boost_1_63_0/boost/test/impl/unit_test_main.ipp +@@ -188,7 +188,7 @@ unit_test_main( init_unit_test_func init + BOOST_TEST_I_TRY { + framework::init( init_func, argc, argv ); + +- if( runtime_config::get( runtime_config::WAIT_FOR_DEBUGGER ) ) { ++ if( runtime_config::get( runtime_config::wait_for_debugger_str ) ) { + results_reporter::get_stream() << "Press any key to continue..." << std::endl; + + // getchar is defined as a macro in uClibc. Use parenthesis to fix +@@ -199,7 +199,7 @@ unit_test_main( init_unit_test_func init + + framework::finalize_setup_phase(); + +- output_format list_cont = runtime_config::get( runtime_config::LIST_CONTENT ); ++ output_format list_cont = runtime_config::get( runtime_config::list_content_str ); + if( list_cont != unit_test::OF_INVALID ) { + if( list_cont == unit_test::OF_DOT ) { + ut_detail::dot_content_reporter reporter( results_reporter::get_stream() ); +@@ -215,7 +215,7 @@ unit_test_main( init_unit_test_func init + return boost::exit_success; + } + +- if( runtime_config::get( runtime_config::LIST_LABELS ) ) { ++ if( runtime_config::get( runtime_config::list_labels_str ) ) { + ut_detail::labels_collector collector; + + traverse_test_tree( framework::master_test_suite().p_id, collector, true ); +@@ -232,7 +232,7 @@ unit_test_main( init_unit_test_func init + + results_reporter::make_report(); + +- result_code = !runtime_config::get( runtime_config::RESULT_CODE ) ++ result_code = !runtime_config::get( runtime_config::result_code_str ) + ? boost::exit_success + : results_collector.results( framework::master_test_suite().p_id ).result_code(); + } +Index: boost_1_63_0/boost/test/impl/unit_test_monitor.ipp +=================================================================== +--- boost_1_63_0.orig/boost/test/impl/unit_test_monitor.ipp ++++ boost_1_63_0/boost/test/impl/unit_test_monitor.ipp +@@ -37,11 +37,11 @@ unit_test_monitor_t::error_level + unit_test_monitor_t::execute_and_translate( boost::function const& func, unsigned timeout ) + { + BOOST_TEST_I_TRY { +- p_catch_system_errors.value = runtime_config::get( runtime_config::CATCH_SYS_ERRORS ); ++ p_catch_system_errors.value = runtime_config::get( runtime_config::catch_sys_errors_str ); + p_timeout.value = timeout; +- p_auto_start_dbg.value = runtime_config::get( runtime_config::AUTO_START_DBG ); +- p_use_alt_stack.value = runtime_config::get( runtime_config::USE_ALT_STACK ); +- p_detect_fp_exceptions.value = runtime_config::get( runtime_config::DETECT_FP_EXCEPT ); ++ p_auto_start_dbg.value = runtime_config::get( runtime_config::auto_start_dbg_str ); ++ p_use_alt_stack.value = runtime_config::get( runtime_config::use_alt_stack_str ); ++ p_detect_fp_exceptions.value = runtime_config::get( runtime_config::detect_fp_except_str ); + + vexecute( func ); + } +Index: boost_1_63_0/libs/test/test/execution_monitor-ts/errors-handling-test.cpp +=================================================================== +--- boost_1_63_0.orig/libs/test/test/execution_monitor-ts/errors-handling-test.cpp ++++ boost_1_63_0/libs/test/test/execution_monitor-ts/errors-handling-test.cpp +@@ -185,9 +185,9 @@ BOOST_AUTO_TEST_CASE( test_errors_handli + framework::run( test ); + + unit_test_log.set_stream( std::cout ); +- unit_test_log.set_format( runtime_config::get( runtime_config::LOG_FORMAT ) ); ++ unit_test_log.set_format( runtime_config::get( runtime_config::log_format_str ) ); + +- log_level ll = runtime_config::get( runtime_config::LOG_LEVEL ); ++ log_level ll = runtime_config::get( runtime_config::log_level_str ); + unit_test_log.set_threshold_level( ll != invalid_log_level? ll : log_all_errors ); + + BOOST_CHECK( test_output.match_pattern() ); +Index: boost_1_63_0/libs/test/test/framework-ts/log-formatter-test.cpp +=================================================================== +--- boost_1_63_0.orig/libs/test/test/framework-ts/log-formatter-test.cpp ++++ boost_1_63_0/libs/test/test/framework-ts/log-formatter-test.cpp +@@ -117,7 +117,7 @@ void check( output_test_stream& output, + struct guard { + ~guard() + { +- boost::unit_test::unit_test_log.set_format( runtime_config::get( runtime_config::LOG_FORMAT ) ); ++ boost::unit_test::unit_test_log.set_format( runtime_config::get( runtime_config::log_format_str ) ); + boost::unit_test::unit_test_log.set_stream( std::cout ); + } + }; +Index: boost_1_63_0/libs/test/test/framework-ts/result-report-test.cpp +=================================================================== +--- boost_1_63_0.orig/libs/test/test/framework-ts/result-report-test.cpp ++++ boost_1_63_0/libs/test/test/framework-ts/result-report-test.cpp +@@ -101,7 +101,7 @@ struct guard { + { + results_reporter::set_stream( std::cerr ); + results_reporter::set_format( runtime_config::get( +- runtime_config::REPORT_FORMAT ) ); ++ runtime_config::report_format_str ) ); + } + }; + +Index: boost_1_63_0/libs/test/test/test-organization-ts/test_unit-order-shuffled-test.cpp +=================================================================== +--- boost_1_63_0.orig/libs/test/test/test-organization-ts/test_unit-order-shuffled-test.cpp ++++ boost_1_63_0/libs/test/test/test-organization-ts/test_unit-order-shuffled-test.cpp +@@ -109,7 +109,7 @@ struct test_tree { + BOOST_FIXTURE_TEST_CASE( test_no_seed, test_tree ) + { + // no seed set +- ut::runtime_config::s_arguments_store.set(ut::runtime_config::RANDOM_SEED, 0); ++ ut::runtime_config::s_arguments_store.set(ut::runtime_config::random_seed_str, 0); + + tu_order_collector res1 = run_tree( master ); + tu_order_collector res2 = run_tree( master ); +@@ -120,7 +120,7 @@ BOOST_FIXTURE_TEST_CASE( test_no_seed, t + BOOST_FIXTURE_TEST_CASE( test_seed_to_time, test_tree ) + { + // seed = 1 means current time is used. +- ut::runtime_config::s_arguments_store.set(ut::runtime_config::RANDOM_SEED, 1); ++ ut::runtime_config::s_arguments_store.set(ut::runtime_config::random_seed_str, 1); + + tu_order_collector res1 = run_tree( master ); + tu_order_collector res2 = run_tree( master ); +@@ -132,16 +132,16 @@ BOOST_FIXTURE_TEST_CASE( test_seed_ident + { + // seed = 1 means current time is used. + unsigned int seed = static_cast( std::time( 0 ) ); +- ut::runtime_config::s_arguments_store.set(ut::runtime_config::RANDOM_SEED, seed); ++ ut::runtime_config::s_arguments_store.set(ut::runtime_config::random_seed_str, seed); + tu_order_collector res1 = run_tree( master ); + +- ut::runtime_config::s_arguments_store.set(ut::runtime_config::RANDOM_SEED, seed); ++ ut::runtime_config::s_arguments_store.set(ut::runtime_config::random_seed_str, seed); + tu_order_collector res2 = run_tree( master ); + + BOOST_TEST( res1.m_order == res2.m_order, tt::per_element() ); + + // using time seed now +- ut::runtime_config::s_arguments_store.set(ut::runtime_config::RANDOM_SEED, 1); ++ ut::runtime_config::s_arguments_store.set(ut::runtime_config::random_seed_str, 1); + tu_order_collector res3 = run_tree( master ); + BOOST_TEST( res1.m_order != res3.m_order ); // some elements might be the same, but not the full sequences + +Index: boost_1_63_0/libs/test/test/writing-test-ts/test_tools-test.cpp +=================================================================== +--- boost_1_63_0.orig/libs/test/test/writing-test-ts/test_tools-test.cpp ++++ boost_1_63_0/libs/test/test/writing-test-ts/test_tools-test.cpp +@@ -129,9 +129,9 @@ BOOST_AUTO_TEST_CASE( name ) + ut::framework::run( impl ); \ + \ + ut::log_level ll = ut::runtime_config::get( \ +- ut::runtime_config::LOG_LEVEL ); \ ++ ut::runtime_config::log_level_str ); \ + ut::output_format lf = ut::runtime_config::get( \ +- ut::runtime_config::LOG_FORMAT ); \ ++ ut::runtime_config::log_format_str ); \ + \ + ut::unit_test_log.set_threshold_level( \ + ll != ut::invalid_log_level ? ll : ut::log_all_errors ); \ +Index: boost_1_63_0/libs/test/doc/examples/example51.run.cpp +=================================================================== +--- boost_1_63_0.orig/libs/test/doc/examples/example51.run.cpp ++++ boost_1_63_0/libs/test/doc/examples/example51.run.cpp +@@ -13,7 +13,7 @@ using namespace boost::unit_test; + + BOOST_AUTO_TEST_CASE( test_case0 ) + { +- if( runtime_config::get( runtime_config::LOG_LEVEL ) < log_warnings ) ++ if( runtime_config::get( runtime_config::log_level_str ) < log_warnings ) + unit_test_log.set_threshold_level( log_warnings ); + + BOOST_WARN( sizeof(int) > 4 ); +Index: boost_1_63_0/boost/test/unit_test_parameters.hpp +=================================================================== +--- boost_1_63_0.orig/boost/test/unit_test_parameters.hpp ++++ boost_1_63_0/boost/test/unit_test_parameters.hpp +@@ -36,31 +36,31 @@ namespace runtime_config { + // ************************************************************************** // + + // UTF parameters +-BOOST_TEST_DECL extern std::string AUTO_START_DBG; +-BOOST_TEST_DECL extern std::string BREAK_EXEC_PATH; +-BOOST_TEST_DECL extern std::string BUILD_INFO; +-BOOST_TEST_DECL extern std::string CATCH_SYS_ERRORS; +-BOOST_TEST_DECL extern std::string COLOR_OUTPUT; +-BOOST_TEST_DECL extern std::string DETECT_FP_EXCEPT; +-BOOST_TEST_DECL extern std::string DETECT_MEM_LEAKS; +-BOOST_TEST_DECL extern std::string LIST_CONTENT; +-BOOST_TEST_DECL extern std::string LIST_LABELS; +-BOOST_TEST_DECL extern std::string COMBINED_LOGGER; +-BOOST_TEST_DECL extern std::string LOG_FORMAT; +-BOOST_TEST_DECL extern std::string LOG_LEVEL; +-BOOST_TEST_DECL extern std::string LOG_SINK; +-BOOST_TEST_DECL extern std::string OUTPUT_FORMAT; +-BOOST_TEST_DECL extern std::string RANDOM_SEED; +-BOOST_TEST_DECL extern std::string REPORT_FORMAT; +-BOOST_TEST_DECL extern std::string REPORT_LEVEL; +-BOOST_TEST_DECL extern std::string REPORT_MEM_LEAKS; +-BOOST_TEST_DECL extern std::string REPORT_SINK; +-BOOST_TEST_DECL extern std::string RESULT_CODE; +-BOOST_TEST_DECL extern std::string RUN_FILTERS; +-BOOST_TEST_DECL extern std::string SAVE_TEST_PATTERN; +-BOOST_TEST_DECL extern std::string SHOW_PROGRESS; +-BOOST_TEST_DECL extern std::string USE_ALT_STACK; +-BOOST_TEST_DECL extern std::string WAIT_FOR_DEBUGGER; ++BOOST_TEST_DECL extern std::string auto_start_dbg_str; ++BOOST_TEST_DECL extern std::string break_exec_path_str; ++BOOST_TEST_DECL extern std::string build_info_str; ++BOOST_TEST_DECL extern std::string catch_sys_errors_str; ++BOOST_TEST_DECL extern std::string color_output_str; ++BOOST_TEST_DECL extern std::string detect_fp_except_str; ++BOOST_TEST_DECL extern std::string detect_mem_leaks_str; ++BOOST_TEST_DECL extern std::string list_content_str; ++BOOST_TEST_DECL extern std::string list_labels_str; ++BOOST_TEST_DECL extern std::string combined_logger_str; ++BOOST_TEST_DECL extern std::string log_format_str; ++BOOST_TEST_DECL extern std::string log_level_str; ++BOOST_TEST_DECL extern std::string log_sink_str; ++BOOST_TEST_DECL extern std::string output_format_str; ++BOOST_TEST_DECL extern std::string random_seed_str; ++BOOST_TEST_DECL extern std::string report_format_str; ++BOOST_TEST_DECL extern std::string report_level_str; ++BOOST_TEST_DECL extern std::string report_mem_leaks_str; ++BOOST_TEST_DECL extern std::string report_sink_str; ++BOOST_TEST_DECL extern std::string result_code_str; ++BOOST_TEST_DECL extern std::string run_filters_str; ++BOOST_TEST_DECL extern std::string save_test_pattern_str; ++BOOST_TEST_DECL extern std::string show_progress_str; ++BOOST_TEST_DECL extern std::string use_alt_stack_str; ++BOOST_TEST_DECL extern std::string wait_for_debugger_str; + + BOOST_TEST_DECL void init( int& argc, char** argv ); +