diff --git a/SOURCES/boost-1.50.0-fix-non-utf8-files.patch b/SOURCES/boost-1.50.0-fix-non-utf8-files.patch index b60a3ac4..469b35d7 100644 --- a/SOURCES/boost-1.50.0-fix-non-utf8-files.patch +++ b/SOURCES/boost-1.50.0-fix-non-utf8-files.patch @@ -5,9 +5,9 @@ index 8b2bc43..d04f2fe 100644 @@ -67,7 +67,7 @@ struct thing_base_unit : boost::units::base_unit { - static const char* name() { return("EUR"); } -- static const char* symbol() { return("€"); } -+ static const char* symbol() { return("€"); } + static constexpr const char* name() { return("EUR"); } +- static constexpr const char* symbol() { return("€"); } ++ static constexpr const char* symbol() { return("€"); } }; int main() diff --git a/SOURCES/boost-1.57.0-mpl-print.patch b/SOURCES/boost-1.57.0-mpl-print.patch new file mode 100644 index 00000000..c27e03e2 --- /dev/null +++ b/SOURCES/boost-1.57.0-mpl-print.patch @@ -0,0 +1,31 @@ +diff -up boost_1_57_0/boost/mpl/print.hpp\~ boost_1_57_0/boost/mpl/print.hpp +--- boost_1_57_0/boost/mpl/print.hpp~ 2014-07-09 23:12:31.000000000 +0200 ++++ boost_1_57_0/boost/mpl/print.hpp 2015-01-20 12:44:59.621400948 +0100 +@@ -52,16 +52,15 @@ struct print + enum { n = sizeof(T) + -1 }; + #elif defined(__MWERKS__) + void f(int); +-#else +- enum { +- n = +-# if defined(__EDG_VERSION__) +- aux::dependent_unsigned::value > -1 +-# else +- sizeof(T) > -1 +-# endif +- }; +-#endif ++#elif defined(__EDG_VERSION__) ++ enum { n = aux::dependent_unsigned::value > -1 }; ++#elif defined(BOOST_GCC) ++ enum { n1 }; ++ enum { n2 }; ++ enum { n = n1 != n2 }; ++#else ++ enum { n = sizeof(T) > -1 }; ++#endif + }; + + #if defined(BOOST_MSVC) + +Diff finished. Tue Jan 20 12:45:03 2015 diff --git a/SOURCES/boost-1.57.0-python-libpython_dep.patch b/SOURCES/boost-1.57.0-python-libpython_dep.patch new file mode 100644 index 00000000..57bfc267 --- /dev/null +++ b/SOURCES/boost-1.57.0-python-libpython_dep.patch @@ -0,0 +1,13 @@ +Index: boost_1_57_0/tools/build/src/tools/python.jam +=================================================================== +--- boost_1_57_0/tools/build/src/tools/python.jam (revision 50406) ++++ boost_1_57_0/tools/build/src/tools/python.jam (working copy) +@@ -994,7 +994,7 @@ + else + { + alias python_for_extensions +- : ++ : python + : $(target-requirements) + : + : $(usage-requirements) diff --git a/SOURCES/boost-1.58.0-pool-test_linking.patch b/SOURCES/boost-1.58.0-pool-test_linking.patch new file mode 100644 index 00000000..f2fb01b7 --- /dev/null +++ b/SOURCES/boost-1.58.0-pool-test_linking.patch @@ -0,0 +1,30 @@ +--- boost_1_68_0/libs/pool/test/Jamfile.v2.orig 2018-08-01 20:50:52.000000000 +0000 ++++ boost_1_68_0/libs/pool/test/Jamfile.v2 2018-12-01 17:29:33.322195409 +0000 +@@ -22,18 +22,18 @@ + import testing ; + + test-suite pool : +- [ run test_simple_seg_storage.cpp : : : msvc:-wd4267 ] +- [ run test_pool_alloc.cpp ] +- [ run pool_msvc_compiler_bug_test.cpp : : : msvc:-wd4512 ] +- [ run test_msvc_mem_leak_detect.cpp ] +- [ run test_bug_3349.cpp ] +- [ run test_bug_4960.cpp ] ++ [ run test_simple_seg_storage.cpp : : : msvc:-wd4267 /boost/system//boost_system ] ++ [ run test_pool_alloc.cpp : : : /boost/system//boost_system ] ++ [ run pool_msvc_compiler_bug_test.cpp : : : msvc:-wd4512 /boost/system//boost_system ] ++ [ run test_msvc_mem_leak_detect.cpp : : : /boost/system//boost_system ] ++ [ run test_bug_3349.cpp : : : /boost/system//boost_system ] ++ [ run test_bug_4960.cpp : : : /boost/system//boost_system ] + [ run test_bug_1252.cpp : : : + clang:-Wno-c++11-long-long + gcc:-Wno-long-long +- pathscale:-Wno-long-long ] +- [ run test_bug_2696.cpp ] +- [ run test_bug_5526.cpp ] ++ pathscale:-Wno-long-long /boost/system//boost_system ] ++ [ run test_bug_2696.cpp : : : /boost/system//boost_system ] ++ [ run test_bug_5526.cpp : : : /boost/system//boost_system ] + [ run test_threading.cpp : : : multi /boost/thread//boost_thread ] + [ compile test_poisoned_macros.cpp ] + ; diff --git a/SOURCES/boost-1.58.0-pool.patch b/SOURCES/boost-1.58.0-pool.patch new file mode 100644 index 00000000..0cb441d9 --- /dev/null +++ b/SOURCES/boost-1.58.0-pool.patch @@ -0,0 +1,120 @@ +Index: boost/pool/pool.hpp +=================================================================== +--- boost/pool/pool.hpp (revision 78317) ++++ boost/pool/pool.hpp (revision 78326) +@@ -27,4 +27,6 @@ + #include + ++// std::numeric_limits ++#include + // boost::integer::static_lcm + #include +@@ -358,4 +360,11 @@ + } + ++ size_type max_chunks() const ++ { //! Calculated maximum number of memory chunks that can be allocated in a single call by this Pool. ++ size_type partition_size = alloc_size(); ++ size_type POD_size = integer::static_lcm::value + sizeof(size_type); ++ return (std::numeric_limits::max() - POD_size) / alloc_size(); ++ } ++ + static void * & nextof(void * const ptr) + { //! \returns Pointer dereferenced. +@@ -377,5 +388,7 @@ + //! the first time that object needs to allocate system memory. + //! The default is 32. This parameter may not be 0. +- //! \param nmax_size is the maximum number of chunks to allocate in one block. ++ //! \param nmax_size is the maximum number of chunks to allocate in one block. ++ set_next_size(nnext_size); ++ set_max_size(nmax_size); + } + +@@ -400,7 +413,7 @@ + } + void set_next_size(const size_type nnext_size) +- { //! Set number of chunks to request from the system the next time that object needs to allocate system memory. This value should never be set to 0. +- //! \returns nnext_size. +- next_size = start_size = nnext_size; ++ { //! Set number of chunks to request from the system the next time that object needs to allocate system memory. This value should never be set to 0. ++ BOOST_USING_STD_MIN(); ++ next_size = start_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(nnext_size, max_chunks()); + } + size_type get_max_size() const +@@ -410,5 +423,6 @@ + void set_max_size(const size_type nmax_size) + { //! Set max_size. +- max_size = nmax_size; ++ BOOST_USING_STD_MIN(); ++ max_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(nmax_size, max_chunks()); + } + size_type get_requested_size() const +@@ -713,7 +727,7 @@ + BOOST_USING_STD_MIN(); + if(!max_size) +- next_size <<= 1; ++ set_next_size(next_size << 1); + else if( next_size*partition_size/requested_size < max_size) +- next_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size*requested_size/ partition_size); ++ set_next_size(min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size * requested_size / partition_size)); + + // initialize it, +@@ -753,7 +767,7 @@ + BOOST_USING_STD_MIN(); + if(!max_size) +- next_size <<= 1; ++ set_next_size(next_size << 1); + else if( next_size*partition_size/requested_size < max_size) +- next_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size*requested_size/ partition_size); ++ set_next_size(min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size * requested_size / partition_size)); + + // initialize it, +@@ -797,4 +811,6 @@ + //! \returns Address of chunk n if allocated ok. + //! \returns 0 if not enough memory for n chunks. ++ if (n > max_chunks()) ++ return 0; + + const size_type partition_size = alloc_size(); +@@ -845,7 +861,7 @@ + BOOST_USING_STD_MIN(); + if(!max_size) +- next_size <<= 1; ++ set_next_size(next_size << 1); + else if( next_size*partition_size/requested_size < max_size) +- next_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size*requested_size/ partition_size); ++ set_next_size(min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size * requested_size / partition_size)); + + // insert it into the list, +Index: libs/pool/test/test_bug_6701.cpp +=================================================================== +--- libs/pool/test/test_bug_6701.cpp (revision 78326) ++++ libs/pool/test/test_bug_6701.cpp (revision 78326) +@@ -0,0 +1,27 @@ ++/* Copyright (C) 2012 Étienne Dupuis ++* ++* Use, modification and distribution is subject to the ++* Boost Software License, Version 1.0. (See accompanying ++* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) ++*/ ++ ++// Test of bug #6701 (https://svn.boost.org/trac/boost/ticket/6701) ++ ++#include ++#include ++ ++int main() ++{ ++ boost::pool<> p(1024, std::numeric_limits::max() / 768); ++ ++ void *x = p.malloc(); ++ BOOST_ASSERT(!x); ++ ++ BOOST_ASSERT(std::numeric_limits::max() / 1024 >= p.get_next_size()); ++ BOOST_ASSERT(std::numeric_limits::max() / 1024 >= p.get_max_size()); ++ ++ void *y = p.ordered_malloc(std::numeric_limits::max() / 768); ++ BOOST_ASSERT(!y); ++ ++ return 0; ++} diff --git a/SOURCES/boost-1.66.0-bjam-build-flags.patch b/SOURCES/boost-1.66.0-bjam-build-flags.patch new file mode 100644 index 00000000..1cb1f1d4 --- /dev/null +++ b/SOURCES/boost-1.66.0-bjam-build-flags.patch @@ -0,0 +1,26 @@ +--- boost_1_66_0/tools/build/src/engine/build.jam~ 2018-02-07 21:36:14.552201421 +0000 ++++ boost_1_66_0/tools/build/src/engine/build.jam 2018-02-07 21:36:29.014173266 +0000 +@@ -4,7 +4,7 @@ + #~ http://www.boost.org/LICENSE_1_0.txt) + + # Clean env vars of any "extra" empty values. +-for local v in ARGV CC CFLAGS LIBS ++for local v in ARGV CC CFLAGS LIBS RPM_OPT_FLAGS RPM_LD_FLAGS + { + local values ; + for local x in $($(v)) +@@ -215,12 +215,12 @@ + : -L$(--python-lib[1]) -l$(--python-lib[2]) ; + ## GCC 2.x, 3.x, 4.x + toolset gcc gcc : "-o " : -D +- : -pedantic -fno-strict-aliasing ++ : -pedantic -fno-strict-aliasing $(RPM_OPT_FLAGS) + [ opt --release : [ opt --symbols : -g : -s ] -O3 ] + [ opt --debug : -g -O0 -fno-inline ] + [ opt --profile : -O3 -g -pg ] + -I$(--python-include) -I$(--extra-include) -Wno-long-long +- : -L$(--python-lib[1]) -l$(--python-lib[2]) ; ++ : -L$(--python-lib[1]) -l$(--python-lib[2]) $(RPM_LD_FLAGS) ; + ## GCC 2.x, 3.x on CYGWIN but without cygwin1.dll + toolset gcc-nocygwin gcc : "-o " : -D + : -s -O3 -mno-cygwin diff --git a/SOURCES/boost-1.66.0-build-optflags.patch b/SOURCES/boost-1.66.0-build-optflags.patch new file mode 100644 index 00000000..21c1c96e --- /dev/null +++ b/SOURCES/boost-1.66.0-build-optflags.patch @@ -0,0 +1,49 @@ +--- boost_1_66_0/tools/build/src/tools/gcc.jam~ 2017-12-13 23:56:50.000000000 +0000 ++++ boost_1_66_0/tools/build/src/tools/gcc.jam 2018-01-19 12:48:26.264755316 +0000 +@@ -603,7 +603,7 @@ rule compile.fortran ( targets * : sourc + + actions compile.c++ bind PCH_FILE + { +- "$(CONFIG_COMMAND)" $(LANG) -ftemplate-depth-$(TEMPLATE_DEPTH) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" -c -o "$(<:W)" "$(>:W)" ++ "$(CONFIG_COMMAND)" $(LANG) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" -c -o "$(<:W)" "$(>:W)" + } + + actions compile.c bind PCH_FILE +@@ -613,7 +613,7 @@ actions compile.c bind PCH_FILE + + actions compile.c++.preprocess bind PCH_FILE + { +- "$(CONFIG_COMMAND)" $(LANG) -ftemplate-depth-$(TEMPLATE_DEPTH) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" "$(>:W)" -E >"$(<:W)" ++ "$(CONFIG_COMMAND)" $(LANG) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" "$(>:W)" -E >"$(<:W)" + } + + actions compile.c.preprocess bind PCH_FILE +@@ -755,17 +755,17 @@ actions compile.c.pch + ### + + # Declare flags and action for compilation. +-toolset.flags gcc.compile OPTIONS off : -O0 ; +-toolset.flags gcc.compile OPTIONS speed : -O3 ; +-toolset.flags gcc.compile OPTIONS space : -Os ; +- +-toolset.flags gcc.compile OPTIONS off : -fno-inline ; +-toolset.flags gcc.compile OPTIONS on : -Wno-inline ; +-toolset.flags gcc.compile OPTIONS full : -finline-functions -Wno-inline ; +- +-toolset.flags gcc.compile OPTIONS off : -w ; +-toolset.flags gcc.compile OPTIONS on : -Wall ; +-toolset.flags gcc.compile OPTIONS all : -Wall -pedantic ; ++toolset.flags gcc.compile OPTIONS off : ; ++toolset.flags gcc.compile OPTIONS speed : ; ++toolset.flags gcc.compile OPTIONS space : ; ++ ++toolset.flags gcc.compile OPTIONS off : ; ++toolset.flags gcc.compile OPTIONS on : ; ++toolset.flags gcc.compile OPTIONS full : ; ++ ++toolset.flags gcc.compile OPTIONS off : ; ++toolset.flags gcc.compile OPTIONS on : ; ++toolset.flags gcc.compile OPTIONS all : ; + toolset.flags gcc.compile OPTIONS on : -Werror ; + + toolset.flags gcc.compile OPTIONS on : -g ; diff --git a/SOURCES/boost-1.66.0-no-rpath.patch b/SOURCES/boost-1.66.0-no-rpath.patch new file mode 100644 index 00000000..05d83ef4 --- /dev/null +++ b/SOURCES/boost-1.66.0-no-rpath.patch @@ -0,0 +1,20 @@ +--- boost_1_66_0/tools/build/src/tools/gcc.jam~ 2018-01-19 13:23:45.361330881 +0000 ++++ boost_1_66_0/tools/build/src/tools/gcc.jam 2018-01-19 13:23:45.362330880 +0000 +@@ -1191,7 +1191,7 @@ rule link ( targets * : sources * : prop + + actions link bind LIBRARIES + { +- "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,$(RPATH) -Wl,-rpath-link$(SPACE)-Wl,"$(RPATH_LINK)" -o "$(<)" $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) ++ "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -o "$(<)" $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) + } + + rule link.dll ( targets * : sources * : properties * ) +@@ -1204,7 +1204,7 @@ rule link.dll ( targets * : sources * : + # Differs from 'link' above only by -shared. + actions link.dll bind LIBRARIES + { +- "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,$(RPATH) "$(.IMPLIB-COMMAND)$(<[1])" -o "$(<[-1])" $(HAVE_SONAME)-Wl,$(SONAME_OPTION)$(SPACE)-Wl,$(<[-1]:D=) -shared $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) ++ "$(CONFIG_COMMAND)" -L"$(LINKPATH)" "$(.IMPLIB-COMMAND)$(<[1])" -o "$(<[-1])" $(HAVE_SONAME)-Wl,$(SONAME_OPTION)$(SPACE)-Wl,$(<[-1]:D=) -shared $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) + } + + ### diff --git a/SOURCES/boost-1.66.0-python-abi_letters.patch b/SOURCES/boost-1.66.0-python-abi_letters.patch new file mode 100644 index 00000000..782c69e0 --- /dev/null +++ b/SOURCES/boost-1.66.0-python-abi_letters.patch @@ -0,0 +1,62 @@ +--- boost_1_57_0/tools/build/src/tools/python.jam 2013-05-21 06:14:18.000000000 +0200 ++++ boost_1_55_0/tools/build/src/tools/python.jam 2014-05-29 19:09:12.115413877 +0200 +@@ -94,7 +94,7 @@ feature.feature pythonpath : : free opti + # using python : 2.3 : /usr/local/bin/python ; + # + rule init ( version ? : cmd-or-prefix ? : includes * : libraries ? +- : condition * : extension-suffix ? ) ++ : condition * : extension-suffix ? : abi-letters ? ) + { + project.push-current $(.project) ; + +@@ -107,7 +107,7 @@ rule init ( version ? : cmd-or-prefix ? + } + } + +- configure $(version) : $(cmd-or-prefix) : $(includes) : $(libraries) : $(condition) : $(extension-suffix) ; ++ configure $(version) : $(cmd-or-prefix) : $(includes) : $(libraries) : $(condition) : $(extension-suffix) : $(abi-letters) ; + + project.pop-current ; + } +@@ -653,7 +653,7 @@ local rule system-library-dependencies ( + + # Declare a target to represent Python's library. + # +-local rule declare-libpython-target ( version ? : requirements * ) ++local rule declare-libpython-target ( version ? : requirements * : abi-letters ? ) + { + # Compute the representation of Python version in the name of Python's + # library file. +@@ -677,13 +677,13 @@ local rule declare-libpython-target ( ve + } + + # Declare it. +- lib python.lib : : python$(lib-version) $(requirements) ; ++ lib python.lib : : python$(lib-version)$(abi-letters) $(requirements) ; + } + + + # Implementation of init. + local rule configure ( version ? : cmd-or-prefix ? : includes * : libraries ? : +- condition * : extension-suffix ? ) ++ condition * : extension-suffix ? : abi-letters ? ) + { + local prefix ; + local exec-prefix ; +@@ -699,6 +699,7 @@ local rule configure ( version ? : cmd-o + extension-suffix ?= _d ; + } + extension-suffix ?= "" ; ++ abi-letters ?= "" ; + + local cmds-to-try ; + +@@ -922,7 +923,7 @@ local rule configure ( version ? : cmd-o + } + else + { +- declare-libpython-target $(version) : $(target-requirements) ; ++ declare-libpython-target $(version) : $(target-requirements) : $(abi-letters) ; + + # This is an evil hack. On, Windows, when Python is embedded, nothing + # seems to set up sys.path to include Python's standard library diff --git a/SOURCES/libboost_thread.so b/SOURCES/libboost_thread.so new file mode 100644 index 00000000..db50610d --- /dev/null +++ b/SOURCES/libboost_thread.so @@ -0,0 +1,21 @@ +changequote(`[', `]')dnl +/* GNU ld script + + Boost.Thread header files pull in enough of Boost.System that + symbols from the latter library are referenced by a compiled object + that includes Boost.Thread headers. libboost_system-mt.so is among + libboost_thread-mt.so's DT_NEEDED, but program linker requires that + missing symbols are satisfied by direct dependency, not by a + transitive one. Hence this linker script, which brings in the + Boost.System DSO. */ + +INPUT(libboost_thread.so.VERSION) +INPUT(libboost_system.so.VERSION) +ifdef([HAS_ATOMIC_FLAG_LOCKFREE],[], +[ +/* If the given architecture doesn't have lock-free implementation of + boost::atomic_flag, the dependency on Boost.Atomic may leak from + the header files to client binaries. */ + +INPUT(libboost_atomic.so.VERSION) +])dnl diff --git a/SPECS/boost169.spec b/SPECS/boost169.spec new file mode 100644 index 00000000..0481e85d --- /dev/null +++ b/SPECS/boost169.spec @@ -0,0 +1,1689 @@ +# Support for documentation installation As the %%doc macro erases the +# target directory ($RPM_BUILD_ROOT%%{_docdir}/%%{name}), manually +# installed documentation must be saved into a temporary dedicated +# directory. +# XXX note that as of rpm 4.9.1, this shouldn't be necessary anymore. +# We should be able to install directly. +%global boost_docdir __tmp_docdir +%global boost_examplesdir __tmp_examplesdir + +%if 0%{?rhel} && 0%{?rhel} <= 6 +%{!?__python2: %global __python2 /usr/bin/python} +%{!?python2_sitelib: %global python2_sitelib %(%{__python2} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} +%{!?python2_sitearch: %global python2_sitearch %(%{__python2} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} +%endif + +%if 0%{?rhel} >= 7 +%ifarch ppc64le + %bcond_with mpich +%else + %bcond_without mpich +%endif +%endif +%if 0%{?rhel} == 6 +%ifarch %{arm} ppc64 + %bcond_with mpich +%else + %bcond_without mpich +%endif +%endif +%if 0%{?rhel} >= 5 + %bcond_without mpich2 +%endif + +%if 0%{?rhel} >= 7 +%ifarch s390 s390x ppc64le + # No OpenMPI support on these arches + %bcond_with openmpi +%else + %bcond_without openmpi +%endif +%endif + +%ifnarch %{ix86} x86_64 %{arm} ppc64 ppc64le + %bcond_with context +%else + %bcond_without context +%endif + +%bcond_without python2 +%bcond_without python3 + +%ifnarch %{ix86} x86_64 + %bcond_with quadmath +%else + %bcond_without quadmath +%endif + +%global version_suffix 169 +%global version_enc 1_69_0 +Name: boost%{version_suffix} +%global real_name boost +Summary: The free peer-reviewed portable C++ source libraries +Version: 1.69.0 +Release: 1%{?dist} +License: Boost and MIT and Python + +%global toplev_dirname %{real_name}_%{version_enc} +URL: http://www.boost.org +Group: System Environment/Libraries + +Source0: https://sourceforge.net/projects/boost/files/%{real_name}/%{version}/%{toplev_dirname}.tar.bz2 +Source1: libboost_thread.so +Source2: ver.py + +# Since Fedora 13, the Boost libraries are delivered with sonames +# equal to the Boost version (e.g., 1.41.0). +%global sonamever %{version} + +# boost is an "umbrella" package that pulls in all boost shared library +# components, except for MPI and Python sub-packages. Those are special +# in that there are alternative implementations to choose from +# (Open MPI and MPICH, and Python 2 and 3), and it's not a big burden +# to have interested parties install them explicitly. +# The subpackages that don't install shared libraries are also not pulled in +# (doc, doctools, examples, jam, static). +Requires: %{name}-atomic%{?_isa} = %{version}-%{release} +Requires: %{name}-chrono%{?_isa} = %{version}-%{release} +Requires: %{name}-container%{?_isa} = %{version}-%{release} +Requires: %{name}-contract%{?_isa} = %{version}-%{release} +%if %{with context} +Requires: %{name}-context%{?_isa} = %{version}-%{release} +Requires: %{name}-coroutine%{?_isa} = %{version}-%{release} +%endif +Requires: %{name}-date-time%{?_isa} = %{version}-%{release} +%if %{with context} +Requires: %{name}-fiber%{?_isa} = %{version}-%{release} +%endif +Requires: %{name}-filesystem%{?_isa} = %{version}-%{release} +Requires: %{name}-graph%{?_isa} = %{version}-%{release} +Requires: %{name}-iostreams%{?_isa} = %{version}-%{release} +Requires: %{name}-locale%{?_isa} = %{version}-%{release} +Requires: %{name}-log%{?_isa} = %{version}-%{release} +Requires: %{name}-math%{?_isa} = %{version}-%{release} +Requires: %{name}-program-options%{?_isa} = %{version}-%{release} +Requires: %{name}-random%{?_isa} = %{version}-%{release} +Requires: %{name}-regex%{?_isa} = %{version}-%{release} +Requires: %{name}-serialization%{?_isa} = %{version}-%{release} +Requires: %{name}-stacktrace%{?_isa} = %{version}-%{release} +Requires: %{name}-system%{?_isa} = %{version}-%{release} +Requires: %{name}-test%{?_isa} = %{version}-%{release} +Requires: %{name}-thread%{?_isa} = %{version}-%{release} +Requires: %{name}-timer%{?_isa} = %{version}-%{release} +Requires: %{name}-type_erasure%{?_isa} = %{version}-%{release} +Requires: %{name}-wave%{?_isa} = %{version}-%{release} + +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildRequires: gcc-c++ +BuildRequires: m4 +BuildRequires: libstdc++-devel +BuildRequires: bzip2-devel +BuildRequires: zlib-devel +%if %{with python2} +BuildRequires: python-devel +BuildRequires: python2-numpy +%endif +%if %{with python3} +BuildRequires: python3-devel +BuildRequires: python3-numpy +%endif +BuildRequires: libicu-devel +%if %{with quadmath} +BuildRequires: libquadmath-devel +%endif + +# https://svn.boost.org/trac/boost/ticket/6150 +Patch4: boost-1.50.0-fix-non-utf8-files.patch + +# Add a manual page for bjam, based on the on-line documentation: +# http://www.boost.org/boost-build2/doc/html/bbv2/overview.html +Patch5: boost-1.48.0-add-bjam-man-page.patch + +# https://bugzilla.redhat.com/show_bug.cgi?id=828856 +# https://bugzilla.redhat.com/show_bug.cgi?id=828857 +# https://svn.boost.org/trac/boost/ticket/6701 +Patch15: boost-1.58.0-pool.patch + +# https://svn.boost.org/trac/boost/ticket/5637 +Patch25: boost-1.57.0-mpl-print.patch + +# https://svn.boost.org/trac/boost/ticket/9038 +Patch51: boost-1.58.0-pool-test_linking.patch + +# https://bugzilla.redhat.com/show_bug.cgi?id=1102667 +Patch61: boost-1.57.0-python-libpython_dep.patch +Patch62: boost-1.66.0-python-abi_letters.patch + +# https://bugzilla.redhat.com/show_bug.cgi?id=1190039 +Patch65: boost-1.66.0-build-optflags.patch + +# https://bugzilla.redhat.com/show_bug.cgi?id=1318383 +Patch82: boost-1.66.0-no-rpath.patch + +# https://bugzilla.redhat.com/show_bug.cgi?id=1541035 +Patch83: boost-1.66.0-bjam-build-flags.patch + +%bcond_with tests +%bcond_with docs_generated + +%description +Boost provides free peer-reviewed portable C++ source libraries. The +emphasis is on libraries which work well with the C++ Standard +Library, in the hopes of establishing "existing practice" for +extensions and providing reference implementations so that the Boost +libraries are suitable for eventual standardization. (Some of the +libraries have already been included in the C++ 2011 standard and +others have been proposed to the C++ Standards Committee for inclusion +in future standards.) + +%package atomic +Summary: Run-time component of boost atomic library +Group: System Environment/Libraries + +%description atomic + +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 chrono +Summary: Run-time component of boost chrono library +Group: System Environment/Libraries +Requires: %{name}-system%{?_isa} = %{version}-%{release} + +%description chrono + +Run-time support for Boost.Chrono, a set of useful time utilities. + +%package container +Summary: Run-time component of boost container library +Group: System Environment/Libraries + +%description container + +Boost.Container library implements several well-known containers, +including STL containers. The aim of the library is to offer advanced +features not present in standard containers or to offer the latest +standard draft features for compilers that comply with C++03. + +%package contract +Summary: Run-time component of boost contract library +Group: System Environment/Libraries + +%description contract + +Run-time support for boost contract library. +Contract programming for C++. All contract programming features are supported: +Subcontracting, class invariants, postconditions (with old and return values), +preconditions, customizable actions on assertion failure (e.g., terminate +or throw), optional compilation and checking of assertions, etc, +from Lorenzo Caminiti. + +%if %{with context} +%package context +Summary: Run-time component of boost context switching library +Group: System Environment/Libraries + +%description context + +Run-time support for Boost.Context, a foundational library that +provides a sort of cooperative multitasking on a single thread. + +%package coroutine +Summary: Run-time component of boost coroutine library +Group: System Environment/Libraries + +%description coroutine +Run-time support for Boost.Coroutine, a library that provides +generalized subroutines which allow multiple entry points for +suspending and resuming execution. + +%endif + +%package date-time +Summary: Run-time component of boost date-time library +Group: System Environment/Libraries + +%description date-time + +Run-time support for Boost Date Time, a set of date-time libraries based +on generic programming concepts. + +%if %{with context} +%package fiber +Summary: Run-time component of boost fiber library +Group: System Environment/Libraries + +%description fiber + +Run-time support for the Boost Fiber library, a framework for +micro-/userland-threads (fibers) scheduled cooperatively. +%endif + +%package filesystem +Summary: Run-time component of boost filesystem library +Group: System Environment/Libraries +Requires: %{name}-system%{?_isa} = %{version}-%{release} + +%description filesystem + +Run-time support for the Boost Filesystem Library, which provides +portable facilities to query and manipulate paths, files, and +directories. + +%package graph +Summary: Run-time component of boost graph library +Group: System Environment/Libraries +Requires: %{name}-regex%{?_isa} = %{version}-%{release} + +%description graph + +Run-time support for the BGL graph library. BGL interface and graph +components are generic, in the same sense as the Standard Template +Library (STL). + +%package iostreams +Summary: Run-time component of boost iostreams library +Group: System Environment/Libraries + +%description iostreams + +Run-time support for Boost.Iostreams, a framework for defining streams, +stream buffers and i/o filters. + +%package locale +Summary: Run-time component of boost locale library +Group: System Environment/Libraries +Requires: %{name}-chrono%{?_isa} = %{version}-%{release} +Requires: %{name}-system%{?_isa} = %{version}-%{release} +Requires: %{name}-thread%{?_isa} = %{version}-%{release} + +%description locale + +Run-time support for Boost.Locale, a set of localization and Unicode +handling tools. + +%package log +Summary: Run-time component of boost logging library +Group: System Environment/Libraries + +%description log + +Boost.Log library aims to make logging significantly easier for the +application developer. It provides a wide range of out-of-the-box +tools along with public interfaces for extending the library. + +%package math +Summary: Math functions for boost TR1 library +Group: System Environment/Libraries + +%description math + +Run-time support for C99 and C++ TR1 C-style Functions from the math +portion of Boost.TR1. + +%if %{with python2} + +%package numpy2 +Summary: Run-time component of boost numpy library for Python 2 +Group: System Environment/Libraries +Requires: %{name}-python2%{?_isa} = %{version}-%{release} +Requires: python2-numpy + +%description numpy2 + +The Boost Python Library is a framework for interfacing Python and +C++. It allows you to quickly and seamlessly expose C++ classes, +functions and objects to Python, and vice versa, using no special +tools -- just your C++ compiler. This package contains run-time +support for the NumPy extension of the Boost Python Library for Python 2. + +%endif + +%if %{with python3} + +%package numpy3 +Summary: Run-time component of boost numpy library for Python 3 +Requires: %{name}-python3%{?_isa} = %{version}-%{release} +Requires: python3-numpy + +%description numpy3 + +The Boost Python Library is a framework for interfacing Python and +C++. It allows you to quickly and seamlessly expose C++ classes, +functions and objects to Python, and vice versa, using no special +tools -- just your C++ compiler. This package contains run-time +support for the NumPy extension of the Boost Python Library for Python 3. + +%endif + +%package program-options +Summary: Run-time component of boost program_options library +Group: System Environment/Libraries + +%description program-options + +Run-time support of boost program options library, which allows program +developers to obtain (name, value) pairs from the user, via +conventional methods such as command-line and configuration file. + +%if %{with python2} + +%package python2 +Summary: Run-time component of boost python library for Python 2 +Group: System Environment/Libraries + +%description python2 + +The Boost Python Library is a framework for interfacing Python and +C++. It allows you to quickly and seamlessly expose C++ classes, +functions and objects to Python, and vice versa, using no special +tools -- just your C++ compiler. This package contains run-time +support for the Boost Python Library compiled for Python 2. + +%package python2-devel +Summary: Shared object symbolic links for Boost.Python 2 +Requires: %{name}-numpy2%{?_isa} = %{version}-%{release} +Requires: %{name}-python2%{?_isa} = %{version}-%{release} +Requires: %{name}-devel%{?_isa} = %{version}-%{release} + +%description python2-devel + +Shared object symbolic links for Python 2 variant of Boost.Python. + +%endif + +%if %{with python3} + +%package python3 +Summary: Run-time component of boost python library for Python 3 +Group: System Environment/Libraries + +%description python3 + +The Boost Python Library is a framework for interfacing Python and +C++. It allows you to quickly and seamlessly expose C++ classes, +functions and objects to Python, and vice versa, using no special +tools -- just your C++ compiler. This package contains run-time +support for the Boost Python Library compiled for Python 3. + +%package python3-devel +Summary: Shared object symbolic links for Boost.Python 3 +Group: System Environment/Libraries +Requires: %{name}-numpy3%{?_isa} = %{version}-%{release} +Requires: %{name}-python3%{?_isa} = %{version}-%{release} +Requires: %{name}-devel%{?_isa} = %{version}-%{release} + +%description python3-devel + +Shared object symbolic links for Python 3 variant of Boost.Python. + +%endif + +%package random +Summary: Run-time component of boost random library +Group: System Environment/Libraries + +%description random + +Run-time support for boost random library. + +%package regex +Summary: Run-time component of boost regular expression library +Group: System Environment/Libraries + +%description regex + +Run-time support for boost regular expression library. + +%package serialization +Summary: Run-time component of boost serialization library +Group: System Environment/Libraries + +%description serialization + +Run-time support for serialization for persistence and marshaling. + +%package stacktrace +Summary: Run-time component of boost stacktrace library + +%description stacktrace + +Run-time component of the Boost stacktrace library. + +%package system +Summary: Run-time component of boost system support library +Group: System Environment/Libraries + +%description system + +Run-time component of Boost operating system support library, including +the diagnostics support that is part of the C++11 standard library. + +%package test +Summary: Run-time component of boost test library +Group: System Environment/Libraries + +%description test + +Run-time support for simple program testing, full unit testing, and for +program execution monitoring. + +%package thread +Summary: Run-time component of boost thread library +Group: System Environment/Libraries +Requires: %{name}-system%{?_isa} = %{version}-%{release} + +%description thread + +Run-time component Boost.Thread library, which provides classes and +functions for managing multiple threads of execution, and for +synchronizing data between the threads or providing separate copies of +data specific to individual threads. + +%package timer +Summary: Run-time component of boost timer library +Group: System Environment/Libraries +Requires: %{name}-chrono%{?_isa} = %{version}-%{release} +Requires: %{name}-system%{?_isa} = %{version}-%{release} + +%description timer + +"How long does my C++ code take to run?" +The Boost Timer library answers that question and does so portably, +with as little as one #include and one additional line of code. + +%package type_erasure +Summary: Run-time component of boost type erasure library +Requires: %{name}-chrono%{?_isa} = %{version}-%{release} +Requires: %{name}-system%{?_isa} = %{version}-%{release} + +%description type_erasure + +The Boost.TypeErasure library provides runtime polymorphism in C++ +that is more flexible than that provided by the core language. + +%package wave +Summary: Run-time component of boost C99/C++ preprocessing library +Group: System Environment/Libraries +Requires: %{name}-chrono%{?_isa} = %{version}-%{release} +Requires: %{name}-date-time%{?_isa} = %{version}-%{release} +Requires: %{name}-filesystem%{?_isa} = %{version}-%{release} +Requires: %{name}-system%{?_isa} = %{version}-%{release} +Requires: %{name}-thread%{?_isa} = %{version}-%{release} + +%description wave + +Run-time support for the Boost.Wave library, a Standards conforming, +and highly configurable implementation of the mandated C99/C++ +preprocessor functionality. + +%package devel +Summary: The Boost C++ headers and shared development libraries +Group: Development/Libraries +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: libicu-devel%{?_isa} +%if %{with quadmath} +Requires: libquadmath-devel%{?_isa} +%endif + +%description devel +Headers and shared object symbolic links for the Boost C++ libraries. + +%package static +Summary: The Boost C++ static development libraries +Group: Development/Libraries +Requires: %{name}-devel%{?_isa} = %{version}-%{release} + +%description static +Static Boost C++ libraries. + +%package doc +Summary: HTML documentation for the Boost C++ libraries +Group: Documentation +%if 0%{?rhel} >= 6 +BuildArch: noarch +%endif + +%description doc +This package contains the documentation in the HTML format of the Boost C++ +libraries. The documentation provides the same content as that on the Boost +web page (http://www.boost.org/doc/libs/%{version_enc}). + +%package examples +Summary: Source examples for the Boost C++ libraries +Group: Documentation +%if 0%{?rhel} >= 6 +BuildArch: noarch +%endif +Requires: %{name}-devel = %{version}-%{release} + +%description examples +This package contains example source files distributed with boost. + + +%if %{with openmpi} + +%package openmpi +Summary: Run-time component of Boost.MPI library +Group: System Environment/Libraries +BuildRequires: openmpi-devel +Requires: %{name}-serialization%{?_isa} = %{version}-%{release} + +%description openmpi + +Run-time support for Boost.MPI-OpenMPI, a library providing a clean C++ +API over the OpenMPI implementation of MPI. + +%package openmpi-devel +Summary: Shared library symbolic links for Boost.MPI +Group: System Environment/Libraries +Requires: %{name}-devel%{?_isa} = %{version}-%{release} +Requires: %{name}-openmpi%{?_isa} = %{version}-%{release} +Requires: %{name}-graph-openmpi%{?_isa} = %{version}-%{release} + +%description openmpi-devel + +Devel package for Boost.MPI-OpenMPI, a library providing a clean C++ +API over the OpenMPI implementation of MPI. + +%if %{with python2} + +%package openmpi-python2 +Summary: Python 2 run-time component of Boost.MPI library +Group: System Environment/Libraries +Requires: %{name}-openmpi%{?_isa} = %{version}-%{release} +Requires: %{name}-python2%{?_isa} = %{version}-%{release} +Requires: %{name}-serialization%{?_isa} = %{version}-%{release} + +%description openmpi-python2 + +Python 2 support for Boost.MPI-OpenMPI, a library providing a clean C++ +API over the OpenMPI implementation of MPI. + +%package openmpi-python2-devel +Summary: Shared library symbolic links for Boost.MPI Python 2 component +Group: System Environment/Libraries +Requires: %{name}-devel%{?_isa} = %{version}-%{release} +Requires: %{name}-openmpi-devel%{?_isa} = %{version}-%{release} +Requires: %{name}-openmpi-python2%{?_isa} = %{version}-%{release} + +%description openmpi-python2-devel + +Devel package for the Python 2 interface of Boost.MPI-OpenMPI, a library +providing a clean C++ API over the OpenMPI implementation of MPI. + +%endif + +%if %{with python3} + +%package openmpi-python3 +Summary: Python 3 run-time component of Boost.MPI library +Group: System Environment/Libraries +Requires: %{name}-openmpi%{?_isa} = %{version}-%{release} +Requires: %{name}-python3%{?_isa} = %{version}-%{release} +Requires: %{name}-serialization%{?_isa} = %{version}-%{release} + +%description openmpi-python3 + +Python 3 support for Boost.MPI-OpenMPI, a library providing a clean C++ +API over the OpenMPI implementation of MPI. + +%package openmpi-python3-devel +Summary: Shared library symbolic links for Boost.MPI Python 3 component +Group: System Environment/Libraries +Requires: %{name}-devel%{?_isa} = %{version}-%{release} +Requires: %{name}-python3-devel%{?_isa} = %{version}-%{release} +Requires: %{name}-openmpi-devel%{?_isa} = %{version}-%{release} +Requires: %{name}-openmpi-python3%{?_isa} = %{version}-%{release} + +%description openmpi-python3-devel + +Devel package for the Python 3 interface of Boost.MPI-OpenMPI, a library +providing a clean C++ API over the OpenMPI implementation of MPI. + +%endif + +%package graph-openmpi +Summary: Run-time component of parallel boost graph library +Group: System Environment/Libraries +Requires: %{name}-openmpi%{?_isa} = %{version}-%{release} +Requires: %{name}-serialization%{?_isa} = %{version}-%{release} + +%description graph-openmpi + +Run-time support for the Parallel BGL graph library. The interface and +graph components are generic, in the same sense as the Standard +Template Library (STL). This libraries in this package use OpenMPI +back-end to do the parallel work. + +%endif + + +%if %{with mpich} + +%package mpich +Summary: Run-time component of Boost.MPI library +Group: System Environment/Libraries +BuildRequires: mpich-devel +Requires: %{name}-serialization%{?_isa} = %{version}-%{release} + +%description mpich + +Run-time support for Boost.MPI-MPICH, a library providing a clean C++ +API over the MPICH implementation of MPI. + +%package mpich-devel +Summary: Shared library symbolic links for Boost.MPI +Group: System Environment/Libraries +Requires: %{name}-devel%{?_isa} = %{version}-%{release} +Requires: %{name}-mpich%{?_isa} = %{version}-%{release} +Requires: %{name}-graph-mpich%{?_isa} = %{version}-%{release} + +%description mpich-devel + +Devel package for Boost.MPI-MPICH, a library providing a clean C++ +API over the MPICH implementation of MPI. + +%if %{with python2} + +%package mpich-python2 +Summary: Python run-time component of Boost.MPI library +Group: System Environment/Libraries +Requires: %{name}-mpich%{?_isa} = %{version}-%{release} +Requires: %{name}-python2%{?_isa} = %{version}-%{release} +Requires: %{name}-serialization%{?_isa} = %{version}-%{release} + +%description mpich-python2 + +Python 2 support for Boost.MPI-MPICH, a library providing a clean C++ +API over the MPICH implementation of MPI. + +%package mpich-python2-devel +Summary: Shared library symbolic links for Boost.MPI Python 2 component +Group: System Environment/Libraries +Requires: %{name}-devel%{?_isa} = %{version}-%{release} +Requires: %{name}-mpich-devel%{?_isa} = %{version}-%{release} +Requires: %{name}-mpich-python2%{?_isa} = %{version}-%{release} + +%description mpich-python2-devel + +Devel package for the Python 2 interface of Boost.MPI-MPICH, a library +providing a clean C++ API over the MPICH implementation of MPI. + +%endif + +%if %{with python3} + +%package mpich-python3 +Summary: Python 3 run-time component of Boost.MPI library +Group: System Environment/Libraries +Requires: %{name}-mpich%{?_isa} = %{version}-%{release} +Requires: %{name}-python3%{?_isa} = %{version}-%{release} +Requires: %{name}-serialization%{?_isa} = %{version}-%{release} + +%description mpich-python3 + +Python 3 support for Boost.MPI-MPICH, a library providing a clean C++ +API over the MPICH implementation of MPI. + +%package mpich-python3-devel +Summary: Shared library symbolic links for Boost.MPI Python 3 component +Group: System Environment/Libraries +Requires: %{name}-devel%{?_isa} = %{version}-%{release} +Requires: %{name}-python3-devel%{?_isa} = %{version}-%{release} +Requires: %{name}-mpich-devel%{?_isa} = %{version}-%{release} +Requires: %{name}-mpich-python3%{?_isa} = %{version}-%{release} + +%description mpich-python3-devel + +Devel package for the Python 3 interface of Boost.MPI-MPICH, a library +providing a clean C++ API over the MPICH implementation of MPI. + +%endif + +%package graph-mpich +Summary: Run-time component of parallel boost graph library +Group: System Environment/Libraries +Requires: %{name}-mpich%{?_isa} = %{version}-%{release} +Requires: %{name}-serialization%{?_isa} = %{version}-%{release} + +%description graph-mpich + +Run-time support for the Parallel BGL graph library. The interface and +graph components are generic, in the same sense as the Standard +Template Library (STL). This libraries in this package use MPICH +back-end to do the parallel work. + +%endif # with mpich + +%package build +Summary: Cross platform build system for C++ projects +Group: Development/Tools +Requires: %{name}-jam +BuildArch: noarch + +%description build +Boost.Build is an easy way to build C++ projects, everywhere. You name +your pieces of executable and libraries and list their sources. Boost.Build +takes care about compiling your sources with the right options, +creating static and shared libraries, making pieces of executable, and other +chores -- whether you are using GCC, MSVC, or a dozen more supported +C++ compilers -- on Windows, OSX, Linux and commercial UNIX systems. + +%package doctools +Summary: Tools for working with Boost documentation +Group: Applications/Publishing +Requires: docbook-dtds +Requires: docbook-style-xsl + +%description doctools + +Tools for working with Boost documentation in BoostBook or QuickBook format. + +%package jam +Summary: A low-level build tool +Group: Development/Tools + +%description jam +Boost.Jam (BJam) is the low-level build engine tool for Boost.Build. +Historically, Boost.Jam is based on on FTJam and on Perforce Jam but has grown +a number of significant features and is now developed independently. + +%prep +%setup -q -n %{toplev_dirname} +find ./boost -name '*.hpp' -perm /111 | xargs chmod a-x + +%patch4 -p1 +%patch5 -p1 +%patch15 -p0 +%patch25 -p1 +%patch51 -p1 +%patch61 -p1 +%patch62 -p1 +%patch65 -p1 +%patch82 -p1 +%patch83 -p1 + +%build +# Dump the versions being used into the build logs. +%if %{with python2} +%global python2_version %(/usr/bin/python2 %{SOURCE2}) +: PYTHON2_VERSION=%{python2_version} +%endif +%if %{with python3} +%global python3_version %(/usr/bin/python3 %{SOURCE2}) +%global python3_abiflags %(/usr/bin/python3-config --abiflags) +: PYTHON3_VERSION=%{python3_version} +: PYTHON3_ABIFLAGS=%{python3_abiflags} +%endif + +# There are many strict aliasing warnings, and it's not feasible to go +# through them all at this time. +# There are also lots of noisy but harmless unused local typedef warnings. +export RPM_OPT_FLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -Wno-unused-local-typedefs -Wno-deprecated-declarations" +export RPM_LD_FLAGS + +cat > ./tools/build/src/user-config.jam << "EOF" +import os ; +local RPM_OPT_FLAGS = [ os.environ RPM_OPT_FLAGS ] ; +local RPM_LD_FLAGS = [ os.environ RPM_LD_FLAGS ] ; + +using gcc : : : $(RPM_OPT_FLAGS) $(RPM_LD_FLAGS) ; +%if %{with openmpi} || %{with mpich} +using mpi ; +%endif +%if %{with python2} +using python : %{python2_version} : /usr/bin/python2 : /usr/include/python%{python2_version} : : : : ; +%endif +EOF + +./bootstrap.sh --with-toolset=gcc --with-icu + +# N.B. When we build the following with PCH, parts of boost (math +# library in particular) end up being built second time during +# installation. Unsure why that is, but all sub-builds need to be +# built with pch=off to avoid this. + +echo ============================= build serial ================== +./b2 -d+2 -q %{?_smp_mflags} \ + --without-mpi --without-graph_parallel --build-dir=serial \ +%if !%{with context} + --without-context --without-coroutine \ + --without-fiber \ +%endif +%if !%{with python2} + --without-python \ +%endif + variant=release threading=multi debug-symbols=on pch=off \ +%if %{with python2} + python=%{python2_version} \ +%endif + stage + +# See libs/thread/build/Jamfile.v2 for where this file comes from. +if [ $(find serial -type f -name has_atomic_flag_lockfree \ + -print -quit | wc -l) -ne 0 ]; then + DEF=D +else + DEF=U +fi + +m4 -${DEF}HAS_ATOMIC_FLAG_LOCKFREE -DVERSION=%{version} \ + %{SOURCE1} > $(basename %{SOURCE1}) + +%if %{with python3} + +# Previously, we built python 2.x and 3.x interfaces simultaneously. +# However, this does not work once trying to build other Python components +# such as libboost_numpy. Therefore, we build for each separately, while +# minimizing duplicate compilation as much as possible. + +cat > python3-config.jam << "EOF" +import os ; +local RPM_OPT_FLAGS = [ os.environ RPM_OPT_FLAGS ] ; +local RPM_LD_FLAGS = [ os.environ RPM_LD_FLAGS ] ; + +using gcc : : : $(RPM_OPT_FLAGS) $(RPM_LD_FLAGS) ; +%if %{with openmpi} || %{with mpich} +using mpi ; +%endif +EOF + +cat >> python3-config.jam << EOF +using python : %{python3_version} : /usr/bin/python3 : /usr/include/python%{python3_version}%{python3_abiflags} : : : : %{python3_abiflags} ; +EOF + +echo ============================= build serial-py3 ================== +./b2 -d+2 -q %{?_smp_mflags} \ + --user-config=./python3-config.jam \ + --with-python --build-dir=serial-py3 \ + variant=release threading=multi debug-symbols=on pch=off \ + python=%{python3_version} stage + +%endif + +# Build MPI parts of Boost with OpenMPI support + +%if %{with openmpi} || %{with mpich} +# First, purge all modules so that user environment does not conflict +# with the build. +module purge ||: +%endif + +%if %{with openmpi} +%{_openmpi_load} +%if %{with python2} +echo ============================= build $MPI_COMPILER ================== +./b2 -d+2 -q %{?_smp_mflags} \ + --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER \ + variant=release threading=multi debug-symbols=on pch=off \ + python=%{python2_version} stage +%endif + +%if %{with python3} +echo ============================= build $MPI_COMPILER-py3 ================== +./b2 -d+2 -q %{?_smp_mflags} \ + --user-config=./python3-config.jam \ + --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER-py3 \ + variant=release threading=multi debug-symbols=on pch=off \ + python=%{python3_version} stage +%endif + +%{_openmpi_unload} +export PATH=/bin${PATH:+:}$PATH +%endif + +# Build MPI parts of Boost with MPICH support +%if %{with mpich} +%{_mpich_load} +%if %{with python2} +echo ============================= build $MPI_COMPILER ================== +./b2 -d+2 -q %{?_smp_mflags} \ + --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER \ + variant=release threading=multi debug-symbols=on pch=off \ + python=%{python2_version} stage +%endif + +%if %{with python3} +echo ============================= build $MPI_COMPILER-py3 ================== +./b2 -d+2 -q %{?_smp_mflags} \ + --user-config=./python3-config.jam \ + --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER-py3 \ + variant=release threading=multi debug-symbols=on pch=off \ + python=%{python3_version} stage +%endif + +%{_mpich_unload} +export PATH=/bin${PATH:+:}$PATH +%endif # with mpich + +echo ============================= build Boost.Build ================== +(cd tools/build + ./bootstrap.sh --with-toolset=gcc) + +%check +: + + +%install +rm -rf $RPM_BUILD_ROOT +cd %{_builddir}/%{toplev_dirname} + +%if %{with openmpi} || %{with mpich} +# First, purge all modules so that user environment does not conflict +# with the build. +module purge ||: +%endif + +%if %{with openmpi} +%{_openmpi_load} +# XXX We want to extract this from RPM flags +# b2 instruction-set=i686 etc. +%if %{with python2} +echo ============================= install $MPI_COMPILER ================== +./b2 -q %{?_smp_mflags} \ + --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER \ + --stagedir=${RPM_BUILD_ROOT}${MPI_HOME} \ + variant=release threading=multi debug-symbols=on pch=off \ + python=%{python2_version} stage + +# Move Python module to proper location for automatic loading +mkdir -p ${RPM_BUILD_ROOT}%{python2_sitearch}/openmpi/boost +touch ${RPM_BUILD_ROOT}%{python2_sitearch}/openmpi/boost/__init__.py +mv ${RPM_BUILD_ROOT}${MPI_HOME}/lib/mpi.so \ + ${RPM_BUILD_ROOT}%{python2_sitearch}/openmpi/boost/ +%endif + +%if %{with python3} +echo ============================= install $MPI_COMPILER-py3 ================== +./b2 -q %{?_smp_mflags} \ + --user-config=./python3-config.jam \ + --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER-py3 \ + --stagedir=${RPM_BUILD_ROOT}${MPI_HOME} \ + variant=release threading=multi debug-symbols=on pch=off \ + python=%{python3_version} stage + +# Move Python module to proper location for automatic loading +mkdir -p ${RPM_BUILD_ROOT}%{python3_sitearch}/openmpi/boost +touch ${RPM_BUILD_ROOT}%{python3_sitearch}/openmpi/boost/__init__.py +mv ${RPM_BUILD_ROOT}${MPI_HOME}/lib/mpi.so \ + ${RPM_BUILD_ROOT}%{python3_sitearch}/openmpi/boost/ +%endif + +# Remove generic parts of boost that were built for dependencies. +rm -f ${RPM_BUILD_ROOT}${MPI_HOME}/lib/libboost_{python,{w,}serialization}* + +%{_openmpi_unload} +export PATH=/bin${PATH:+:}$PATH +%endif + +%if %{with mpich} +%{_mpich_load} +%if %{with python2} +echo ============================= install $MPI_COMPILER ================== +./b2 -q %{?_smp_mflags} \ + --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER \ + --stagedir=${RPM_BUILD_ROOT}${MPI_HOME} \ + variant=release threading=multi debug-symbols=on pch=off \ + python=%{python2_version} stage + +# Move Python module to proper location for automatic loading +mkdir -p ${RPM_BUILD_ROOT}%{python2_sitearch}/mpich/boost +touch ${RPM_BUILD_ROOT}%{python2_sitearch}/mpich/boost/__init__.py +mv ${RPM_BUILD_ROOT}${MPI_HOME}/lib/mpi.so \ + ${RPM_BUILD_ROOT}%{python2_sitearch}/mpich/boost/ +%endif + +%if %{with python3} +echo ============================= install $MPI_COMPILER-py3 ================== +./b2 -q %{?_smp_mflags} \ + --user-config=./python3-config.jam \ + --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER-py3 \ + --stagedir=${RPM_BUILD_ROOT}${MPI_HOME} \ + variant=release threading=multi debug-symbols=on pch=off \ + python=%{python3_version} stage + +# Move Python module to proper location for automatic loading +mkdir -p ${RPM_BUILD_ROOT}%{python3_sitearch}/mpich/boost +touch ${RPM_BUILD_ROOT}%{python3_sitearch}/mpich/boost/__init__.py +mv ${RPM_BUILD_ROOT}${MPI_HOME}/lib/mpi.so \ + ${RPM_BUILD_ROOT}%{python3_sitearch}/mpich/boost/ +%endif + +# Remove generic parts of boost that were built for dependencies. +rm -f ${RPM_BUILD_ROOT}${MPI_HOME}/lib/libboost_{python,{w,}serialization}* + +%{_mpich_unload} +export PATH=/bin${PATH:+:}$PATH +%endif # with mpich + +echo ============================= install serial ================== +./b2 -d+2 -q %{?_smp_mflags} \ + --without-mpi --without-graph_parallel --build-dir=serial \ +%if !%{with context} + --without-context --without-coroutine \ + --without-fiber \ +%endif +%if !%{with python2} + --without-python \ +%endif + --prefix=$RPM_BUILD_ROOT%{_prefix} \ + --libdir=$RPM_BUILD_ROOT%{_libdir} \ + variant=release threading=multi debug-symbols=on pch=off \ +%if %{with python2} + python=%{python2_version} \ +%endif + install + +# Override DSO symlink with a linker script. See the linker script +# itself for details of why we need to do this. +[ -f $RPM_BUILD_ROOT%{_libdir}/libboost_thread.so ] # Must be present +rm -f $RPM_BUILD_ROOT%{_libdir}/libboost_thread.so +install -p -m 644 $(basename %{SOURCE1}) $RPM_BUILD_ROOT%{_libdir}/ + +%if %{with python3} +echo ============================= install serial-py3 ================== +./b2 -d+2 -q %{?_smp_mflags} \ + --user-config=python3-config.jam \ + --with-python --build-dir=serial-py3 \ + --prefix=$RPM_BUILD_ROOT%{_prefix} \ + --libdir=$RPM_BUILD_ROOT%{_libdir} \ + variant=release threading=multi debug-symbols=on pch=off \ + python=%{python3_version} install + +%endif + +echo ============================= install Boost.Build ================== +(cd tools/build + ./b2 --prefix=$RPM_BUILD_ROOT%{_prefix} install + # Fix some permissions + chmod -x $RPM_BUILD_ROOT%{_datadir}/boost-build/src/build/alias.py + chmod -x $RPM_BUILD_ROOT%{_datadir}/boost-build/src/kernel/boost-build.jam + chmod -x $RPM_BUILD_ROOT%{_datadir}/boost-build/src/options/help.jam + chmod +x $RPM_BUILD_ROOT%{_datadir}/boost-build/src/tools/doxproc.py + # Fix shebang using unversioned python + sed -i '1s@^#!/usr/bin.python$@&3@' $RPM_BUILD_ROOT%{_datadir}/boost-build/src/tools/doxproc.py + # We don't want to distribute this + rm -f $RPM_BUILD_ROOT%{_bindir}/b2 + # Not a real file + rm -f $RPM_BUILD_ROOT%{_datadir}/boost-build/src/build/project.ann.py + # Empty file + rm -f $RPM_BUILD_ROOT%{_datadir}/boost-build/src/tools/doxygen/windows-paths-check.hpp + # Install the manual page + %{__install} -p -m 644 v2/doc/bjam.1 -D $RPM_BUILD_ROOT%{_mandir}/man1/bjam.1 +) + +echo ============================= install Boost.QuickBook ================== +(cd tools/quickbook + ../build/b2 --prefix=$RPM_BUILD_ROOT%{_prefix} + %{__install} -p -m 755 ../../dist/bin/quickbook $RPM_BUILD_ROOT%{_bindir}/ + cd ../boostbook + find dtd -type f -name '*.dtd' | while read tobeinstalledfiles; do + install -p -m 644 $tobeinstalledfiles -D $RPM_BUILD_ROOT%{_datadir}/boostbook/$tobeinstalledfiles + done + find xsl -type f | while read tobeinstalledfiles; do + install -p -m 644 $tobeinstalledfiles -D $RPM_BUILD_ROOT%{_datadir}/boostbook/$tobeinstalledfiles + done +) + +# Install documentation files (HTML pages) within the temporary place +echo ============================= install documentation ================== +# Prepare the place to temporarily store the generated documentation +rm -rf %{boost_docdir} && %{__mkdir_p} %{boost_docdir}/html +DOCPATH=%{boost_docdir} +DOCREGEX='.*\.\(html?\|css\|png\|gif\)' + +find libs doc more -type f -regex $DOCREGEX \ + | sed -n '/\//{s,/[^/]*$,,;p}' \ + | sort -u > tmp-doc-directories + +sed "s:^:$DOCPATH/:" tmp-doc-directories \ + | xargs -P 0 --no-run-if-empty %{__install} -d + +cat tmp-doc-directories | while read tobeinstalleddocdir; do + find $tobeinstalleddocdir -mindepth 1 -maxdepth 1 -regex $DOCREGEX -print0 \ + | xargs -P 0 -0 %{__install} -p -m 644 -t $DOCPATH/$tobeinstalleddocdir +done +rm -f tmp-doc-directories +%{__install} -p -m 644 -t $DOCPATH LICENSE_1_0.txt index.htm index.html boost.png rst.css boost.css + +echo ============================= install examples ================== +# Fix a few non-standard issues (DOS and/or non-UTF8 files) +sed -i -e 's/\r//g' libs/geometry/example/ml02_distance_strategy.cpp +for tmp_doc_file in flyweight/example/Jamfile.v2 \ + format/example/sample_new_features.cpp multi_index/example/Jamfile.v2 \ + multi_index/example/hashed.cpp serialization/example/demo_output.txt +do + mv libs/${tmp_doc_file} libs/${tmp_doc_file}.iso8859 + iconv -f ISO8859-1 -t UTF8 < libs/${tmp_doc_file}.iso8859 > libs/${tmp_doc_file} + touch -r libs/${tmp_doc_file}.iso8859 libs/${tmp_doc_file} + rm -f libs/${tmp_doc_file}.iso8859 +done + +# Prepare the place to temporarily store the examples +rm -rf %{boost_examplesdir} && mkdir -p %{boost_examplesdir}/html +EXAMPLESPATH=%{boost_examplesdir} +find libs -type d -name example -exec find {} -type f \; \ + | sed -n '/\//{s,/[^/]*$,,;p}' \ + | sort -u > tmp-doc-directories +sed "s:^:$EXAMPLESPATH/:" tmp-doc-directories \ + | xargs -P 0 --no-run-if-empty %{__install} -d +rm -f tmp-doc-files-to-be-installed && touch tmp-doc-files-to-be-installed +cat tmp-doc-directories | while read tobeinstalleddocdir +do + find $tobeinstalleddocdir -mindepth 1 -maxdepth 1 -type f \ + >> tmp-doc-files-to-be-installed +done +cat tmp-doc-files-to-be-installed | while read tobeinstalledfiles +do + if test -s $tobeinstalledfiles + then + tobeinstalleddocdir=`dirname $tobeinstalledfiles` + %{__install} -p -m 644 -t $EXAMPLESPATH/$tobeinstalleddocdir $tobeinstalledfiles + fi +done +rm -f tmp-doc-files-to-be-installed +rm -f tmp-doc-directories +%{__install} -p -m 644 -t $EXAMPLESPATH LICENSE_1_0.txt + +## +# Perform the necessary renaming according to package renaming +# Build Tools +mv -f $RPM_BUILD_ROOT%{_datadir}/{%{real_name}-build,%{name}-build} +mv -f $RPM_BUILD_ROOT%{_bindir}/{bjam,bjam%{version_suffix}} +mv -f $RPM_BUILD_ROOT%{_mandir}/man1/{bjam.1,bjam%{version_suffix}.1} + +# MPI +mkdir -p $RPM_BUILD_ROOT{%{_includedir},%{_libdir}/{.,{mpich,mpich2,openmpi}/lib}}/%{name} +mv -f $RPM_BUILD_ROOT%{_includedir}/{%{real_name},%{name}} +mv -f $RPM_BUILD_ROOT%{_libdir}/{*.a,%{name}} +for library in $RPM_BUILD_ROOT%{_libdir}/*.so +do + rm -f $library + ln -s ../$(basename $library).%{sonamever} $RPM_BUILD_ROOT%{_libdir}/%{name}/$(basename $library) +done + +%if %{with mpich} +mv -f $RPM_BUILD_ROOT%{_libdir}/mpich/lib/{*.a,%{name}} +#mv -f $RPM_BUILD_ROOT%%{python2_sitearch}/mpich/boost/{mpi.so,%%{name}} +for library in $RPM_BUILD_ROOT%{_libdir}/mpich/lib/*.so +do + rm -f $library + ln -s ../$(basename $library).%{sonamever} $RPM_BUILD_ROOT%{_libdir}/mpich/lib/%{name}/$(basename $library) +done +%endif # with mpich + +%if %{with openmpi} + %if 0%{?rhel} == 5 + mv -f $RPM_BUILD_ROOT%{_libdir}/openmpi/{1.4-gcc/lib/*,lib} + %endif +mv -f $RPM_BUILD_ROOT%{_libdir}/openmpi/lib/{*.a,%{name}} +#mv -f $RPM_BUILD_ROOT%%{python2_sitearch}/openmpi/boost/{mpi.so,%%{name}} +for library in $RPM_BUILD_ROOT%{_libdir}/openmpi/lib/*.so +do + rm -f $library + ln -s ../$(basename $library).%{sonamever} $RPM_BUILD_ROOT%{_libdir}/openmpi/lib/%{name}/$(basename $library) +done +%endif + +%clean +rm -rf $RPM_BUILD_ROOT + + +# MPI subpackages don't need the ldconfig magic. They are hidden by +# default, in MPI back-end-specific directory, and only show to the +# user after the relevant environment module has been loaded. +# rpmlint will report that as errors, but it is fine. + +%post atomic -p /sbin/ldconfig + +%postun atomic -p /sbin/ldconfig + +%post chrono -p /sbin/ldconfig + +%postun chrono -p /sbin/ldconfig + +%post container -p /sbin/ldconfig + +%postun container -p /sbin/ldconfig + +%post contract -p /sbin/ldconfig + +%postun contract -p /sbin/ldconfig + +%if %{with context} +%post context -p /sbin/ldconfig + +%postun context -p /sbin/ldconfig + +%post coroutine -p /sbin/ldconfig + +%postun coroutine -p /sbin/ldconfig +%endif + +%post date-time -p /sbin/ldconfig + +%postun date-time -p /sbin/ldconfig + +%post filesystem -p /sbin/ldconfig + +%postun filesystem -p /sbin/ldconfig + +%post graph -p /sbin/ldconfig + +%postun graph -p /sbin/ldconfig + +%post iostreams -p /sbin/ldconfig + +%postun iostreams -p /sbin/ldconfig + +%post locale -p /sbin/ldconfig + +%postun locale -p /sbin/ldconfig + +%post log -p /sbin/ldconfig + +%postun log -p /sbin/ldconfig + +%post math -p /sbin/ldconfig + +%postun math -p /sbin/ldconfig + +%post program-options -p /sbin/ldconfig + +%postun program-options -p /sbin/ldconfig + +%if %{with python2} +%post python2 -p /sbin/ldconfig + +%postun python2 -p /sbin/ldconfig +%endif + +%if %{with python3} +%post python3 -p /sbin/ldconfig + +%postun python3 -p /sbin/ldconfig +%endif + +%post random -p /sbin/ldconfig + +%postun random -p /sbin/ldconfig + +%post regex -p /sbin/ldconfig + +%postun regex -p /sbin/ldconfig + +%post serialization -p /sbin/ldconfig + +%postun serialization -p /sbin/ldconfig + +%post system -p /sbin/ldconfig + +%postun system -p /sbin/ldconfig + +%post test -p /sbin/ldconfig + +%postun test -p /sbin/ldconfig + +%post thread -p /sbin/ldconfig + +%postun thread -p /sbin/ldconfig + +%post timer -p /sbin/ldconfig + +%postun timer -p /sbin/ldconfig + +%post type_erasure -p /sbin/ldconfig + +%postun type_erasure -p /sbin/ldconfig + +%post wave -p /sbin/ldconfig + +%postun wave -p /sbin/ldconfig + +%post doctools +CATALOG=%{_sysconfdir}/xml/catalog +%{_bindir}/xmlcatalog --noout --add "rewriteSystem" \ + "http://www.boost.org/tools/boostbook/dtd" \ + "file://%{_datadir}/boostbook/dtd" $CATALOG +%{_bindir}/xmlcatalog --noout --add "rewriteURI" \ + "http://www.boost.org/tools/boostbook/dtd" \ + "file://%{_datadir}/boostbook/dtd" $CATALOG +%{_bindir}/xmlcatalog --noout --add "rewriteSystem" \ + "http://www.boost.org/tools/boostbook/xsl" \ + "file://%{_datadir}/boostbook/xsl" $CATALOG +%{_bindir}/xmlcatalog --noout --add "rewriteURI" \ + "http://www.boost.org/tools/boostbook/xsl" \ + "file://%{_datadir}/boostbook/xsl" $CATALOG + +%postun doctools +# remove entries only on removal of package +if [ "$1" = 0 ]; then + CATALOG=%{_sysconfdir}/xml/catalog + %{_bindir}/xmlcatalog --noout --del \ + "file://%{_datadir}/boostbook/dtd" $CATALOG + %{_bindir}/xmlcatalog --noout --del \ + "file://%{_datadir}/boostbook/xsl" $CATALOG +fi + + +%files +%defattr(-, root, root, -) +%license LICENSE_1_0.txt + +%files atomic +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_atomic*.so.%{sonamever} + +%files chrono +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_chrono*.so.%{sonamever} + +%files container +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_container*.so.%{sonamever} + +%if %{with context} + +%files context +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_context*.so.%{sonamever} + +%files coroutine +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_coroutine*.so.%{sonamever} + +%endif + +%files date-time +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_date_time*.so.%{sonamever} + +%if %{with context} +%files fiber +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +#%%{_libdir}/libboost_fiber*.so.%%{sonamever} +%endif + +%files filesystem +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_filesystem*.so.%{sonamever} + +%files graph +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_graph*.so.%{sonamever} + +%files iostreams +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_iostreams*.so.%{sonamever} + +%files locale +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_locale*.so.%{sonamever} + +%files log +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_log*.so.%{sonamever} + +%files math +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_math_c99.so.%{sonamever} +%{_libdir}/libboost_math_c99f*.so.%{sonamever} +%{_libdir}/libboost_math_c99l*.so.%{sonamever} +%{_libdir}/libboost_math_tr1.so.%{sonamever} +%{_libdir}/libboost_math_tr1f*.so.%{sonamever} +%{_libdir}/libboost_math_tr1l*.so.%{sonamever} + +%if %{with python2} +%files numpy2 +%license LICENSE_1_0.txt +%{_libdir}/libboost_numpy2*.so.%{sonamever} +%endif + +%if %{with python3} +%files numpy3 +%license LICENSE_1_0.txt +%{_libdir}/libboost_numpy3*.so.%{sonamever} +%endif + +%files test +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_prg_exec_monitor*.so.%{sonamever} +%{_libdir}/libboost_unit_test_framework*.so.%{sonamever} + +%files program-options +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_program_options*.so.%{sonamever} + +%if %{with python2} +%files python2 +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_python2*.so.%{sonamever} + +%files python2-devel +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +#%%{_libdir}/libboost_numpy2*.so +#%%{_libdir}/libboost_python2*.so +%endif + +%if %{with python3} +%files python3 +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_python3*.so.%{sonamever} + +%files python3-devel +%license LICENSE_1_0.txt +#%%{_libdir}/libboost_numpy3*.so +#%%{_libdir}/libboost_python3*.so +%endif + +%files random +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_random*.so.%{sonamever} + +%files regex +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_regex*.so.%{sonamever} + +%files serialization +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_serialization*.so.%{sonamever} +%{_libdir}/libboost_wserialization*.so.%{sonamever} + +%files stacktrace +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_stacktrace_addr2line*.so.%{sonamever} +%{_libdir}/libboost_stacktrace_basic*.so.%{sonamever} +%{_libdir}/libboost_stacktrace_noop*.so.%{sonamever} + +%files system +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_system*.so.%{sonamever} + +%files thread +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_thread*.so.%{sonamever} + +%files timer +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_timer*.so.%{sonamever} + +%files type_erasure +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_type_erasure*.so.%{sonamever} + +%files wave +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_wave*.so.%{sonamever} + +%files contract +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/libboost_contract*.so.%{sonamever} + +%files doc +%defattr(-, root, root, -) +%doc %{boost_docdir}/* + +%files examples +%defattr(-, root, root, -) +%doc %{boost_examplesdir}/* + +%files devel +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_includedir}/%{name} +%{_libdir}/%{name}/libboost_*.so + +%files static +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/%{name}/*.a +%if %{with mpich} +%{_libdir}/mpich/lib/%{name}/*.a +%endif # with mpich +%if %{with openmpi} +%{_libdir}/openmpi/lib/%{name}/*.a +%endif + +# OpenMPI packages +%if %{with openmpi} + +%files openmpi +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/openmpi/lib/libboost_mpi*.so.%{sonamever} + +%files openmpi-devel +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/openmpi/lib/%{name}/libboost_*.so + +%if %{with python2} + +%files openmpi-python2 +%license LICENSE_1_0.txt +%{_libdir}/openmpi/lib/libboost_mpi_python2*.so.%{sonamever} +%{python2_sitearch}/openmpi/boost/ + +%files openmpi-python2-devel +%license LICENSE_1_0.txt +%{_libdir}/openmpi/lib/%{name}/libboost_mpi_python2*.so + +%endif + +%if %{with python3} + +%files openmpi-python3 +%license LICENSE_1_0.txt +%{_libdir}/openmpi/lib/libboost_mpi_python3*.so.%{sonamever} +%{python3_sitearch}/openmpi/boost/ + +%files openmpi-python3-devel +%license LICENSE_1_0.txt +%{_libdir}/openmpi/lib/%{name}/libboost_mpi_python3*.so + +%endif + +%files graph-openmpi +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/openmpi/lib/libboost_graph_parallel*.so.%{sonamever} + +%endif + +# MPICH packages +%if %{with mpich} + +%files mpich +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/mpich/lib/libboost_mpi*.so.%{sonamever} + +%files mpich-devel +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/mpich/lib/%{name}/libboost_*.so + +%if %{with python2} + +%files mpich-python2 +%license LICENSE_1_0.txt +%{_libdir}/mpich/lib/libboost_mpi_python2*.so.%{sonamever} +%{python2_sitearch}/mpich/boost/ + +%files mpich-python2-devel +%license LICENSE_1_0.txt +%{_libdir}/mpich/lib/%{name}/libboost_mpi_python2*.so + +%endif + +%if %{with python3} + +%files mpich-python3 +%license LICENSE_1_0.txt +%{_libdir}/mpich/lib/libboost_mpi_python3*.so.%{sonamever} +%{python3_sitearch}/mpich/boost/ + +%files mpich-python3-devel +%license LICENSE_1_0.txt +%{_libdir}/mpich/lib/%{name}/libboost_mpi_python3*.so + +%endif + +%files graph-mpich +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_libdir}/mpich/lib/libboost_graph_parallel*.so.%{sonamever} + +%endif # with mpich + +%files build +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_datadir}/%{name}-build/ + +%files doctools +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_bindir}/quickbook +%{_datadir}/boostbook/ + +%files jam +%defattr(-, root, root, -) +%license LICENSE_1_0.txt +%{_bindir}/bjam%{version_suffix} +%{_mandir}/man1/bjam%{version_suffix}.1* + +%changelog +* Wed Jan 23 2019 Denis Arnaud - 1.69.0-1 +- Transformed boost-1.69.0-1 into boost169-1.69.0-1 (BZ#1667725)