diff --git a/boost-1.58.0-pool-test_linking.patch b/boost-1.58.0-pool-test_linking.patch new file mode 100644 index 0000000..b57e6d0 --- /dev/null +++ b/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/boost-1.58.0-pool.patch b/boost-1.58.0-pool.patch new file mode 100644 index 0000000..3654b66 --- /dev/null +++ b/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/boost-1.73-locale-empty-vector.patch b/boost-1.73-locale-empty-vector.patch new file mode 100644 index 0000000..f5cc981 --- /dev/null +++ b/boost-1.73-locale-empty-vector.patch @@ -0,0 +1,37 @@ +From daf4ef50c88c2b9a6bf2c40b537eebc202caad6e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?S=C3=A9bastien=20Gonzalve?= + +Date: Sat, 14 Nov 2020 10:39:47 +0100 +Subject: [PATCH] Do not try to access element when vector is empty + +Trying to access tmp[0] causes a crash on Fedora when assertion on STL +are enabled. + +/usr/include/c++/10/bits/stl_vector.h:1045: std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) [with _Tp = unsigned char; _Alloc = std::allocator; std::vector<_Tp, _Alloc>::reference = unsigned char&; std::vector<_Tp, _Alloc>::size_type = long unsigned int]: Assertion '__builtin_expect(__n < this->size(), true)' failed. + +This patch just passes nullptr as pointer to getSortKey() when tmp size +is 0, preventing dereferencing elements in empty vector. + +I guess that &tmp[0] should be optimized as 'no real access' when +disabling assertion, but actually leads to crash when assert are +enabled. +--- + src/icu/collator.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libs/locale/src/icu/collator.cpp b/libs/locale/src/icu/collator.cpp +index 7f1ea6a..dc59e8c 100644 +--- a/libs/locale/src/icu/collator.cpp ++++ b/libs/locale/src/icu/collator.cpp +@@ -93,7 +93,7 @@ namespace boost { + std::vector tmp; + tmp.resize(str.length()); + icu::Collator *collate = get_collator(level); +- int len = collate->getSortKey(str,&tmp[0],tmp.size()); ++ int len = collate->getSortKey(str,tmp.empty()?nullptr:&tmp[0],tmp.size()); + if(len > int(tmp.size())) { + tmp.resize(len); + collate->getSortKey(str,&tmp[0],tmp.size()); +-- +2.26.2 + diff --git a/boost-1.75.0-remove-deprecated-boost-iterator.patch b/boost-1.75.0-remove-deprecated-boost-iterator.patch new file mode 100644 index 0000000..6341174 --- /dev/null +++ b/boost-1.75.0-remove-deprecated-boost-iterator.patch @@ -0,0 +1,114 @@ +From f364ee7be2bb1a44a2724d92f67490deaf19dc5e Mon Sep 17 00:00:00 2001 +From: Andrey Semashev +Date: Mon, 11 May 2020 19:59:23 +0300 +Subject: [PATCH] Removed usage of deprecated header boost/detail/iterator.hpp. + +The header was deprecated in favor of . It generates compiler +warnings and will be removed in a future release. +--- + boost/detail/algorithm.hpp | 2 +- + boost/graph/adjacency_iterator.hpp | 6 +++--- + boost/graph/detail/adjacency_list.hpp | 5 +++-- + boost/graph/incremental_components.hpp | 6 +++--- + 4 files changed, 10 insertions(+), 9 deletions(-) + +diff --git a/boost/detail/algorithm.hpp b/boost/detail/algorithm.hpp +index 7793fb357..9b3195cbf 100644 +--- a/boost/detail/algorithm.hpp ++++ b/boost/detail/algorithm.hpp +@@ -30,7 +30,7 @@ + + #ifndef BOOST_ALGORITHM_HPP + #define BOOST_ALGORITHM_HPP +-#include ++ + // Algorithms on sequences + // + // The functions in this file have not yet gone through formal +diff --git a/boost/graph/adjacency_iterator.hpp b/boost/graph/adjacency_iterator.hpp +index 5325e7875..4693e3a3a 100644 +--- a/boost/graph/adjacency_iterator.hpp ++++ b/boost/graph/adjacency_iterator.hpp +@@ -10,7 +10,7 @@ + #ifndef BOOST_ADJACENCY_ITERATOR_HPP + #define BOOST_ADJACENCY_ITERATOR_HPP + +-#include ++#include + #include + #include + +@@ -45,7 +45,7 @@ template < class Graph, + class adjacency_iterator_generator + { + typedef +- typename boost::detail::iterator_traits< OutEdgeIter >::difference_type ++ typename std::iterator_traits< OutEdgeIter >::difference_type + difference_type; + + public: +@@ -81,7 +81,7 @@ template < class Graph, + class inv_adjacency_iterator_generator + { + typedef +- typename boost::detail::iterator_traits< InEdgeIter >::difference_type ++ typename std::iterator_traits< InEdgeIter >::difference_type + difference_type; + + public: +diff --git a/boost/graph/detail/adjacency_list.hpp b/boost/graph/detail/adjacency_list.hpp +index 4b11fa516..c1a2ada23 100644 +--- a/boost/graph/detail/adjacency_list.hpp ++++ b/boost/graph/detail/adjacency_list.hpp +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + #include + #include + +@@ -2370,7 +2371,7 @@ namespace detail + typedef typename OutEdgeList::size_type degree_size_type; + typedef typename OutEdgeList::iterator OutEdgeIter; + +- typedef boost::detail::iterator_traits< OutEdgeIter > ++ typedef std::iterator_traits< OutEdgeIter > + OutEdgeIterTraits; + typedef + typename OutEdgeIterTraits::iterator_category OutEdgeIterCat; +@@ -2398,7 +2399,7 @@ namespace detail + + // Edge Iterator + +- typedef boost::detail::iterator_traits< EdgeIter > EdgeIterTraits; ++ typedef std::iterator_traits< EdgeIter > EdgeIterTraits; + typedef typename EdgeIterTraits::iterator_category EdgeIterCat; + typedef typename EdgeIterTraits::difference_type EdgeIterDiff; + +diff --git a/boost/graph/incremental_components.hpp b/boost/graph/incremental_components.hpp +index 1ad8c9403..f16882e2a 100644 +--- a/boost/graph/incremental_components.hpp ++++ b/boost/graph/incremental_components.hpp +@@ -13,10 +13,10 @@ + #ifndef BOOST_INCREMENTAL_COMPONENTS_HPP + #define BOOST_INCREMENTAL_COMPONENTS_HPP + +-#include ++#include + #include + #include +-#include ++#include + #include + #include + +@@ -69,7 +69,7 @@ void compress_components(ParentIterator first, ParentIterator last) + } + + template < class ParentIterator > +-typename boost::detail::iterator_traits< ParentIterator >::difference_type ++typename std::iterator_traits< ParentIterator >::difference_type + component_count(ParentIterator first, ParentIterator last) + { + std::ptrdiff_t count = 0; diff --git a/boost-1.76.0-enum_type_object-type-python-3.11.patch b/boost-1.76.0-enum_type_object-type-python-3.11.patch new file mode 100644 index 0000000..5b77498 --- /dev/null +++ b/boost-1.76.0-enum_type_object-type-python-3.11.patch @@ -0,0 +1,35 @@ +From ae5da2a7e8f1111757d8a474095486a5b22aa12d Mon Sep 17 00:00:00 2001 +From: Victor Stinner +Date: Mon, 25 Apr 2022 10:51:46 +0200 +Subject: [PATCH] Fix enum_type_object type on Python 3.11 + +The enum_type_object type inherits from PyLong_Type which is not tracked +by the GC. Instances doesn't have to be tracked by the GC: remove the +Py_TPFLAGS_HAVE_GC flag. + +The Python C API documentation says: + + "To create a container type, the tp_flags field of the type object + must include the Py_TPFLAGS_HAVE_GC and provide an implementation of + the tp_traverse handler." + +https://docs.python.org/dev/c-api/gcsupport.html + +The new exception was introduced in Python 3.11 by: +https://github.com/python/cpython/issues/88429 +--- + libs/python/src/object/enum.cpp | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/libs/python/src/object/enum.cpp b/libs/python/src/object/enum.cpp +index 293e705899..5753b32e07 100644 +--- a/libs/python/src/object/enum.cpp ++++ b/libs/python/src/object/enum.cpp +@@ -113,7 +113,6 @@ static PyTypeObject enum_type_object = { + #if PY_VERSION_HEX < 0x03000000 + | Py_TPFLAGS_CHECKTYPES + #endif +- | Py_TPFLAGS_HAVE_GC + | Py_TPFLAGS_BASETYPE, /* tp_flags */ + 0, /* tp_doc */ + 0, /* tp_traverse */ diff --git a/boost-1.76.0-fix_multiprecision_issue_419-ppc64le.patch b/boost-1.76.0-fix_multiprecision_issue_419-ppc64le.patch new file mode 100644 index 0000000..cf091e4 --- /dev/null +++ b/boost-1.76.0-fix_multiprecision_issue_419-ppc64le.patch @@ -0,0 +1,27 @@ +From d1343f28dcbe25b100b082b34775bd92ead4602c Mon Sep 17 00:00:00 2001 +From: jzmaddock +Date: Tue, 25 Jan 2022 09:27:40 +0000 +Subject: [PATCH] Update gcc Intel intrinsic usage config. Fixes + https://github.com/boostorg/multiprecision/issues/419. + +--- + include/boost/multiprecision/cpp_int/intel_intrinsics.hpp | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/include/boost/multiprecision/cpp_int/intel_intrinsics.hpp b/include/boost/multiprecision/cpp_int/intel_intrinsics.hpp +index eb4624bb4..37717cd51 100644 +--- include/boost/multiprecision/cpp_int/intel_intrinsics.hpp ++++ include/boost/multiprecision/cpp_int/intel_intrinsics.hpp +@@ -19,7 +19,11 @@ + // If this is GCC/clang, then check that the actual intrinsic exists: + // + #if defined(__has_builtin) && defined(__GNUC__) +-#if !__has_builtin(__builtin_ia32_addcarryx_u64) && defined(BOOST_MP_HAS_IMMINTRIN_H) && !(defined(BOOST_GCC) && (__GNUC__ >= 9)) ++#if !__has_builtin(__builtin_ia32_addcarryx_u64) && defined(BOOST_MP_HAS_IMMINTRIN_H) \ ++ && !(defined(BOOST_GCC) && (__GNUC__ >= 9) \ ++ && (defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64)\ ++ || defined(i386) || defined(__i386) || defined(__i386__) || defined(_M_AMD64) \ ++ || defined(_M_X64) || defined(__amd64__) || defined(_M_X64))) + #undef BOOST_MP_HAS_IMMINTRIN_H + #endif + #elif defined(BOOST_MP_HAS_IMMINTRIN_H) && defined(__GNUC__) && !(defined(BOOST_GCC) && (__GNUC__ >= 9)) diff --git a/boost-1.76.0-ptr_cont-xml.patch b/boost-1.76.0-ptr_cont-xml.patch new file mode 100644 index 0000000..ed088bf --- /dev/null +++ b/boost-1.76.0-ptr_cont-xml.patch @@ -0,0 +1,1263 @@ +From adc94a80adbb7b720bd149c8b805876baa77b815 Mon Sep 17 00:00:00 2001 +From: Jonathan Wakely +Date: Wed, 5 Aug 2020 11:28:26 +0100 +Subject: [PATCH] Fix invalid XHTML markup in docs + +The reStructuredText files insert
HTML elements, which are not +valid in XHTML. + +The doc/tutorial_example.html file contains unquoted attributes and +unclosed and tags (although since that file is included +into another document, it probably shouldn't have , and + elements at all). +--- + doc/associative_ptr_container.html | 2 +- + doc/associative_ptr_container.rst | 2 +- + doc/examples.html | 2 +- + doc/examples.rst | 4 +- + doc/faq.html | 2 +- + doc/faq.rst | 2 +- + doc/guidelines.html | 4 +- + doc/guidelines.rst | 4 +- + doc/headers.html | 2 +- + doc/headers.rst | 2 +- + doc/indirect_fun.html | 2 +- + doc/indirect_fun.rst | 2 +- + doc/ptr_array.html | 2 +- + doc/ptr_array.rst | 2 +- + doc/ptr_container.html | 2 +- + doc/ptr_container.rst | 2 +- + doc/ptr_deque.html | 2 +- + doc/ptr_deque.rst | 2 +- + doc/ptr_inserter.html | 2 +- + doc/ptr_inserter.rst | 2 +- + doc/ptr_list.html | 2 +- + doc/ptr_list.rst | 2 +- + doc/ptr_map.html | 2 +- + doc/ptr_map.rst | 2 +- + doc/ptr_map_adapter.html | 2 +- + doc/ptr_map_adapter.rst | 2 +- + doc/ptr_multimap_adapter.html | 2 +- + doc/ptr_multimap_adapter.rst | 2 +- + doc/ptr_multiset.html | 2 +- + doc/ptr_multiset.rst | 2 +- + doc/ptr_multiset_adapter.html | 2 +- + doc/ptr_multiset_adapter.rst | 2 +- + doc/ptr_sequence_adapter.html | 2 +- + doc/ptr_sequence_adapter.rst | 2 +- + doc/ptr_set.html | 2 +- + doc/ptr_set.rst | 2 +- + doc/ptr_set_adapter.html | 2 +- + doc/ptr_set_adapter.rst | 2 +- + doc/ptr_vector.html | 2 +- + doc/ptr_vector.rst | 2 +- + doc/reference.html | 4 +- + doc/reference.rst | 4 +- + doc/reversible_ptr_container.html | 2 +- + doc/reversible_ptr_container.rst | 2 +- + doc/tutorial.html | 4 +- + doc/tutorial.rst | 4 +- + doc/tutorial_example.html | 384 ++++++++++++++--------------- + 47 files changed, 245 insertions(+), 245 deletions(-) + +diff --git a/doc/associative_ptr_container.html b/doc/associative_ptr_container.html +index ccc4d9fa..9467864f 100644 +--- a/libs/ptr_container/doc/associative_ptr_container.html ++++ b/libs/ptr_container/doc/associative_ptr_container.html +@@ -529,7 +529,7 @@

++
+ + + +diff --git a/doc/associative_ptr_container.rst b/doc/associative_ptr_container.rst +index b9b8d45a..6dcd0833 100644 +--- a/libs/ptr_container/doc/associative_ptr_container.rst ++++ b/libs/ptr_container/doc/associative_ptr_container.rst +@@ -216,7 +216,7 @@ Semantics: algorithms + + .. raw:: html + +-
++
+ + :Copyright: Thorsten Ottosen 2004-2006. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt__). + +diff --git a/doc/examples.html b/doc/examples.html +index 5568b323..dbc8ce2b 100644 +--- a/libs/ptr_container/doc/examples.html ++++ b/libs/ptr_container/doc/examples.html +@@ -886,7 +886,7 @@

9. A large example

+
  • home
  • +
  • reference
  • + +-
    ++
    + + + +diff --git a/doc/examples.rst b/doc/examples.rst +index 213094bf..d82f4b85 100644 +--- a/libs/ptr_container/doc/examples.rst ++++ b/libs/ptr_container/doc/examples.rst +@@ -180,7 +180,7 @@ The source code can also be found `here <../test/tut1.cpp>`_. + + .. raw:: html + +-
    ++
    + + **Navigate:** + +@@ -189,7 +189,7 @@ The source code can also be found `here <../test/tut1.cpp>`_. + + .. raw:: html + +-
    ++
    + + :Copyright: Thorsten Ottosen 2004-2006. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt__). + +diff --git a/doc/faq.html b/doc/faq.html +index f318483b..1d701131 100644 +--- a/libs/ptr_container/doc/faq.html ++++ b/libs/ptr_container/doc/faq.html +@@ -373,7 +373,7 @@

    [13] for details.

    +-

    ++
    + + + +diff --git a/doc/faq.rst b/doc/faq.rst +index 40c8eb2d..e2ead8d7 100644 +--- a/libs/ptr_container/doc/faq.rst ++++ b/libs/ptr_container/doc/faq.rst +@@ -95,7 +95,7 @@ class with dummy implementations of the virtual functions. See `[13] ++
    + + :Copyright: Thorsten Ottosen 2004-2006. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt__). + +diff --git a/doc/guidelines.html b/doc/guidelines.html +index 759b6259..25d1f148 100644 +--- a/libs/ptr_container/doc/guidelines.html ++++ b/libs/ptr_container/doc/guidelines.html +@@ -414,12 +414,12 @@

    container< nullable<T> >.

    +-

    Navigate:

    ++

    Navigate:

    +
    +-

    ++
    + + + +diff --git a/doc/guidelines.rst b/doc/guidelines.rst +index 1c39c7ba..bf69dac8 100644 +--- a/libs/ptr_container/doc/guidelines.rst ++++ b/libs/ptr_container/doc/guidelines.rst +@@ -144,7 +144,7 @@ you. That is when you truly need ``container< nullable >``. + + .. raw:: html + +-
    ++
    + + **Navigate:** + +@@ -153,7 +153,7 @@ you. That is when you truly need ``container< nullable >``. + + .. raw:: html + +-
    ++
    + + :Copyright: Thorsten Ottosen 2004-2006. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt__). + +diff --git a/doc/headers.html b/doc/headers.html +index 4b040825..aa1609ab 100644 +--- a/libs/ptr_container/doc/headers.html ++++ b/libs/ptr_container/doc/headers.html +@@ -375,7 +375,7 @@

    Library headers

    +
  • home
  • +
  • reference
  • + +-
    ++
    + + + +diff --git a/doc/headers.rst b/doc/headers.rst +index befcbb55..8c8e8ded 100644 +--- a/libs/ptr_container/doc/headers.rst ++++ b/libs/ptr_container/doc/headers.rst +@@ -75,7 +75,7 @@ Library headers + + .. raw:: html + +-
    ++
    + + :Copyright: Thorsten Ottosen 2004-2006. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt__). + +diff --git a/doc/indirect_fun.html b/doc/indirect_fun.html +index a0446472..acc13346 100644 +--- a/libs/ptr_container/doc/indirect_fun.html ++++ b/libs/ptr_container/doc/indirect_fun.html +@@ -401,7 +401,7 @@

    Indirected functions

    + + } // namespace 'boost' + +-
    ++
    + + + +diff --git a/doc/indirect_fun.rst b/doc/indirect_fun.rst +index 5fd13df2..f6583d90 100644 +--- a/libs/ptr_container/doc/indirect_fun.rst ++++ b/libs/ptr_container/doc/indirect_fun.rst +@@ -127,7 +127,7 @@ first operation is expanded inline. + + .. raw:: html + +-
    ++
    + + :Copyright: Thorsten Ottosen 2004-2006. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt__). + +diff --git a/doc/ptr_array.html b/doc/ptr_array.html +index 30da95f7..483fcfa4 100644 +--- a/libs/ptr_container/doc/ptr_array.html ++++ b/libs/ptr_container/doc/ptr_array.html +@@ -660,7 +660,7 @@

    Semantics

    + + + +-
    ++
    + + + +diff --git a/doc/ptr_array.rst b/doc/ptr_array.rst +index 68c2b47b..a7390236 100644 +--- a/libs/ptr_container/doc/ptr_array.rst ++++ b/libs/ptr_container/doc/ptr_array.rst +@@ -281,7 +281,7 @@ Semantics: pointer container requirements + + .. raw:: html + +-
    ++
    + + :Copyright: Thorsten Ottosen 2004-2006. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt__). + +diff --git a/doc/ptr_container.html b/doc/ptr_container.html +index 5672bdfd..77a89a35 100644 +--- a/libs/ptr_container/doc/ptr_container.html ++++ b/libs/ptr_container/doc/ptr_container.html +@@ -735,7 +735,7 @@

    References

    + + +
    [13]Kevlin Henney, Null Object, 2002.
    +-
    ++
    + + + +diff --git a/doc/ptr_container.rst b/doc/ptr_container.rst +index 0436cce7..257a2fda 100644 +--- a/libs/ptr_container/doc/ptr_container.rst ++++ b/libs/ptr_container/doc/ptr_container.rst +@@ -384,7 +384,7 @@ __ http://www.two-sdg.demon.co.uk/curbralan/papers/europlop/NullObject.pdf + + .. raw:: html + +-
    ++
    + + :Copyright: Thorsten Ottosen 2004-2006. + +diff --git a/doc/ptr_deque.html b/doc/ptr_deque.html +index 5216aa0e..bc996969 100644 +--- a/libs/ptr_container/doc/ptr_deque.html ++++ b/libs/ptr_container/doc/ptr_deque.html +@@ -526,7 +526,7 @@

    Semantics

    + + + +-
    ++
    + + + +diff --git a/doc/ptr_deque.rst b/doc/ptr_deque.rst +index 020ba362..a2a2cc99 100644 +--- a/libs/ptr_container/doc/ptr_deque.rst ++++ b/libs/ptr_container/doc/ptr_deque.rst +@@ -170,7 +170,7 @@ Semantics: pointer container requirements + + .. raw:: html + +-
    ++
    + + :Copyright: Thorsten Ottosen 2004-2006. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt__). + +diff --git a/doc/ptr_inserter.html b/doc/ptr_inserter.html +index 9fb05a8a..92e4a527 100644 +--- a/libs/ptr_container/doc/ptr_inserter.html ++++ b/libs/ptr_container/doc/ptr_inserter.html +@@ -348,7 +348,7 @@

    Insert Iterators

    + } // namespace 'ptr_container' + } // namespace 'boost' + +-
    ++
    + + + +diff --git a/doc/ptr_inserter.rst b/doc/ptr_inserter.rst +index 574bbdad..ef1c820b 100644 +--- a/libs/ptr_container/doc/ptr_inserter.rst ++++ b/libs/ptr_container/doc/ptr_inserter.rst +@@ -70,7 +70,7 @@ can be transfered as well. + + .. raw:: html + +-
    ++
    + + :Copyright: Thorsten Ottosen 2008. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt__). + +diff --git a/doc/ptr_list.html b/doc/ptr_list.html +index 1a8e6798..c76aeaf9 100644 +--- a/libs/ptr_container/doc/ptr_list.html ++++ b/libs/ptr_container/doc/ptr_list.html +@@ -500,7 +500,7 @@

    Semantics

    + + + +-
    ++
    + + + +diff --git a/doc/ptr_list.rst b/doc/ptr_list.rst +index 302049d0..2eceb9d7 100644 +--- a/libs/ptr_container/doc/ptr_list.rst ++++ b/libs/ptr_container/doc/ptr_list.rst +@@ -146,7 +146,7 @@ Semantics: list operations + + .. raw:: html + +-
    ++
    + + :Copyright: Thorsten Ottosen 2004-2006. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt__). + +diff --git a/doc/ptr_map.html b/doc/ptr_map.html +index e5fd2c9c..bc75e5cb 100644 +--- a/libs/ptr_container/doc/ptr_map.html ++++ b/libs/ptr_container/doc/ptr_map.html +@@ -342,7 +342,7 @@

    Class +-

    ++
    + + + +diff --git a/doc/ptr_map.rst b/doc/ptr_map.rst +index 6b50a2ba..64113937 100644 +--- a/libs/ptr_container/doc/ptr_map.rst ++++ b/libs/ptr_container/doc/ptr_map.rst +@@ -63,7 +63,7 @@ to store the pointers. + + .. raw:: html + +-
    ++
    + + :Copyright: Thorsten Ottosen 2004-2006. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt__). + +diff --git a/doc/ptr_map_adapter.html b/doc/ptr_map_adapter.html +index 2ed30539..b451914c 100644 +--- a/libs/ptr_container/doc/ptr_map_adapter.html ++++ b/libs/ptr_container/doc/ptr_map_adapter.html +@@ -556,7 +556,7 @@

    Semantics

    + + + +-
    ++
    + + + +diff --git a/doc/ptr_map_adapter.rst b/doc/ptr_map_adapter.rst +index 517ea7fc..aabf5c4e 100644 +--- a/libs/ptr_container/doc/ptr_map_adapter.rst ++++ b/libs/ptr_container/doc/ptr_map_adapter.rst +@@ -194,7 +194,7 @@ Semantics: pointer container requirements + + .. raw:: html + +-
    ++
    + + :Copyright: Thorsten Ottosen 2004-2006. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt__). + +diff --git a/doc/ptr_multimap_adapter.html b/doc/ptr_multimap_adapter.html +index 3780ec8c..49243a16 100644 +--- a/libs/ptr_container/doc/ptr_multimap_adapter.html ++++ b/libs/ptr_container/doc/ptr_multimap_adapter.html +@@ -540,7 +540,7 @@

    Semantics: typedefs

    + + + +-
    ++
    + + + +diff --git a/doc/ptr_multimap_adapter.rst b/doc/ptr_multimap_adapter.rst +index 3b9e9961..56d37f5d 100644 +--- a/libs/ptr_container/doc/ptr_multimap_adapter.rst ++++ b/libs/ptr_container/doc/ptr_multimap_adapter.rst +@@ -189,7 +189,7 @@ Semantics: pointer container requirements + + .. raw:: html + +-
    ++
    + + :Copyright: Thorsten Ottosen 2004-2006. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt__). + +diff --git a/doc/ptr_multiset.html b/doc/ptr_multiset.html +index a82a7995..50fa9681 100644 +--- a/libs/ptr_container/doc/ptr_multiset.html ++++ b/libs/ptr_container/doc/ptr_multiset.html +@@ -349,7 +349,7 @@

    Class +
      +
    • Using nullable<T> as Key is meaningless and is not allowed
    • +
    +-

    ++
    + + + +diff --git a/doc/ptr_multiset.rst b/doc/ptr_multiset.rst +index 120891bd..3af8bef3 100644 +--- a/libs/ptr_container/doc/ptr_multiset.rst ++++ b/libs/ptr_container/doc/ptr_multiset.rst +@@ -70,7 +70,7 @@ to store the pointers. + + .. raw:: html + +-
    ++
    + + :Copyright: Thorsten Ottosen 2004-2006. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt__). + +diff --git a/doc/ptr_multiset_adapter.html b/doc/ptr_multiset_adapter.html +index 6bcfebb1..96e811d1 100644 +--- a/libs/ptr_container/doc/ptr_multiset_adapter.html ++++ b/libs/ptr_container/doc/ptr_multiset_adapter.html +@@ -491,7 +491,7 @@

    Semantics

    + + + +-
    ++
    + + + +diff --git a/doc/ptr_multiset_adapter.rst b/doc/ptr_multiset_adapter.rst +index eb9eafe2..8c437fb1 100644 +--- a/libs/ptr_container/doc/ptr_multiset_adapter.rst ++++ b/libs/ptr_container/doc/ptr_multiset_adapter.rst +@@ -134,7 +134,7 @@ Semantics: pointer container requirements + + .. raw:: html + +-
    ++
    + + :Copyright: Thorsten Ottosen 2004-2006. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt__). + +diff --git a/doc/ptr_sequence_adapter.html b/doc/ptr_sequence_adapter.html +index aa2e7a42..9c4af800 100644 +--- a/libs/ptr_container/doc/ptr_sequence_adapter.html ++++ b/libs/ptr_container/doc/ptr_sequence_adapter.html +@@ -827,7 +827,7 @@

    Semantics

    + + + +-
    ++
    + + + +diff --git a/doc/ptr_sequence_adapter.rst b/doc/ptr_sequence_adapter.rst +index 5640d029..d98684c1 100644 +--- a/libs/ptr_container/doc/ptr_sequence_adapter.rst ++++ b/libs/ptr_container/doc/ptr_sequence_adapter.rst +@@ -443,7 +443,7 @@ contain any nulls*. + + .. raw:: html + +-
    ++
    + + :Copyright: Thorsten Ottosen 2004-2006. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt__). + +diff --git a/doc/ptr_set.html b/doc/ptr_set.html +index 8e66779f..1a5a37b0 100644 +--- a/libs/ptr_container/doc/ptr_set.html ++++ b/libs/ptr_container/doc/ptr_set.html +@@ -350,7 +350,7 @@

    Class +
  • Using nullable<T> as Key is meaningless and is not allowed
  • + +-

    ++
    + + + +diff --git a/doc/ptr_set.rst b/doc/ptr_set.rst +index 6679a8b2..5fb83d1e 100644 +--- a/libs/ptr_container/doc/ptr_set.rst ++++ b/libs/ptr_container/doc/ptr_set.rst +@@ -72,7 +72,7 @@ to store the pointers. + + .. raw:: html + +-
    ++
    + + :Copyright: Thorsten Ottosen 2004-2006. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt__). + +diff --git a/doc/ptr_set_adapter.html b/doc/ptr_set_adapter.html +index 12820d38..e32501da 100644 +--- a/libs/ptr_container/doc/ptr_set_adapter.html ++++ b/libs/ptr_container/doc/ptr_set_adapter.html +@@ -491,7 +491,7 @@

    Semantics

    + + + +-
    ++
    + + + +diff --git a/doc/ptr_set_adapter.rst b/doc/ptr_set_adapter.rst +index bb19e148..7b89c184 100644 +--- a/libs/ptr_container/doc/ptr_set_adapter.rst ++++ b/libs/ptr_container/doc/ptr_set_adapter.rst +@@ -136,7 +136,7 @@ Semantics: pointer container requirements + + .. raw:: html + +-
    ++
    + + :Copyright: Thorsten Ottosen 2004-2006. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt__). + +diff --git a/doc/ptr_vector.html b/doc/ptr_vector.html +index def2a569..150c9a71 100644 +--- a/libs/ptr_container/doc/ptr_vector.html ++++ b/libs/ptr_container/doc/ptr_vector.html +@@ -550,7 +550,7 @@

    Semantics

    + + + +-
    ++
    + + + +diff --git a/doc/ptr_vector.rst b/doc/ptr_vector.rst +index 374166f2..575a5679 100644 +--- a/libs/ptr_container/doc/ptr_vector.rst ++++ b/libs/ptr_container/doc/ptr_vector.rst +@@ -185,7 +185,7 @@ Semantics: C-array support + + .. raw:: html + +-
    ++
    + + :Copyright: Thorsten Ottosen 2004-2007. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt__). + +diff --git a/doc/reference.html b/doc/reference.html +index 1ae18479..653b4324 100644 +--- a/libs/ptr_container/doc/reference.html ++++ b/libs/ptr_container/doc/reference.html +@@ -797,11 +797,11 @@

    BOOST_NO_EXCEPTIONS is defined, then BOOST_PTR_CONTAINER_NO_EXCEPTIONS + is also defined.

    +-

    Navigate:

    ++

    Navigate:

    +
    +-

    ++
    + + + +diff --git a/doc/reference.rst b/doc/reference.rst +index 3dffbc68..0b827e0e 100644 +--- a/libs/ptr_container/doc/reference.rst ++++ b/libs/ptr_container/doc/reference.rst +@@ -486,7 +486,7 @@ is also defined. + + .. raw:: html + +-
    ++
    + + **Navigate:** + +@@ -494,7 +494,7 @@ is also defined. + + .. raw:: html + +-
    ++
    + + :Copyright: Thorsten Ottosen 2004-2007. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt__). + +diff --git a/doc/reversible_ptr_container.html b/doc/reversible_ptr_container.html +index ede30c57..e45fcde8 100644 +--- a/libs/ptr_container/doc/reversible_ptr_container.html ++++ b/libs/ptr_container/doc/reversible_ptr_container.html +@@ -885,7 +885,7 @@

    Semantics

    + Boost.Serialization +
  • Exception safety: Loading gives the basic guarantee
  • + +-
    ++
    + + + +diff --git a/doc/reversible_ptr_container.rst b/doc/reversible_ptr_container.rst +index 360f7d97..4fb24163 100644 +--- a/libs/ptr_container/doc/reversible_ptr_container.rst ++++ b/libs/ptr_container/doc/reversible_ptr_container.rst +@@ -506,7 +506,7 @@ All containers can be serialized by means of + + .. raw:: html + +-
    ++
    + + :Copyright: Thorsten Ottosen 2004-2007. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt__). + +diff --git a/doc/tutorial.html b/doc/tutorial.html +index 7c93b469..05047afd 100644 +--- a/libs/ptr_container/doc/tutorial.html ++++ b/libs/ptr_container/doc/tutorial.html +@@ -773,7 +773,7 @@

    Algorithms

    + BOOST_ASSERT( another_zoo.empty() ); + +

    That is all; now you have learned all the basics!

    +-

    See also

    ++

    See also

    + +-
    ++
    + + + +diff --git a/doc/tutorial.rst b/doc/tutorial.rst +index a7c12e20..8b84364a 100644 +--- a/libs/ptr_container/doc/tutorial.rst ++++ b/libs/ptr_container/doc/tutorial.rst +@@ -440,7 +440,7 @@ That is all; now you have learned all the basics! + + .. raw:: html + +-
    ++
    + + **See also** + +@@ -455,7 +455,7 @@ That is all; now you have learned all the basics! + + .. raw:: html + +-
    ++
    + + :Copyright: Thorsten Ottosen 2004-2006. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt__). + +diff --git a/doc/tutorial_example.html b/doc/tutorial_example.html +index 202a17bb..9ebf4a1c 100644 +--- a/libs/ptr_container/doc/tutorial_example.html ++++ b/libs/ptr_container/doc/tutorial_example.html +@@ -1,12 +1,12 @@ + + +- ++ + +- ++ + + + +-
    //
    ++    
    //
    + // Boost.Pointer Container
    + //
    + //  Copyright Thorsten Ottosen 2003-2005. Use, modification and
    +@@ -30,149 +30,149 @@
    + //
    + // First we select which container to use.
    + //
    +-#include <boost/ptr_container/ptr_deque.hpp>
    ++#include <boost/ptr_container/ptr_deque.hpp>
    + 
    +-//
    ++//
    + // we need these later in the example
    + //
    +-#include <boost/assert.hpp>
    +-#include <string>
    +-#include <exception>
    ++#include <boost/assert.hpp>
    ++#include <string>
    ++#include <exception>
    + 
    + 
    +-//
    ++//
    + // Then we define a small polymorphic class
    + // hierarchy.
    + // 
    + 
    +-class animal : boost::noncopyable
    +-{
    +-    virtual std::string do_speak() const = 0;
    +-    std::string name_;
    ++class animal : boost::noncopyable
    ++{
    ++    virtual std::string do_speak() const = 0;
    ++    std::string name_;
    + 
    +-protected:
    +-    //
    ++protected:
    ++    //
    +     // Animals cannot be copied...
    +     //
    +-    animal( const animal& r ) : name_( r.name_ )           { }
    +-    void operator=( const animal& );
    ++    animal( const animal& r ) : name_( r.name_ )           { }
    ++    void operator=( const animal& );
    + 
    +-private:
    +-    //
    ++private:
    ++    //
    +     // ...but due to advances in genetics, we can clone them!
    +     //
    + 
    +-    virtual animal* do_clone() const = 0;
    ++    virtual animal* do_clone() const = 0;
    +         
    +-public:
    +-    animal( const std::string& name ) : name_(name)        { }
    +-    virtual ~animal() throw()                              { }
    ++public:
    ++    animal( const std::string& name ) : name_(name)        { }
    ++    virtual ~animal() throw()                              { }
    +     
    +-    std::string speak() const
    +-    {
    +-        return do_speak();
    +-    }
    +-
    +-    std::string name() const
    +-    {
    +-        return name_;
    +-    }
    +-
    +-    animal* clone() const
    +-    {
    +-        return do_clone();
    +-    }
    +-};
    +-
    +-//
    ++    std::string speak() const
    ++    {
    ++        return do_speak();
    ++    }
    ++
    ++    std::string name() const
    ++    {
    ++        return name_;
    ++    }
    ++
    ++    animal* clone() const
    ++    {
    ++        return do_clone();
    ++    }
    ++};
    ++
    ++//
    + // An animal is still not Clonable. We need this last hook.
    + //
    + // Notice that we pass the animal by const reference
    + // and return by pointer.
    + //
    + 
    +-animal* new_clone( const animal& a )
    +-{
    +-    return a.clone();
    +-}
    ++animal* new_clone( const animal& a )
    ++{
    ++    return a.clone();
    ++}
    + 
    +-//
    ++//
    + // We do not need to define 'delete_clone()' since
    + // since the default is to call the default 'operator delete()'.
    + //
    + 
    +-const std::string muuuh = "Muuuh!";
    +-const std::string oiink = "Oiiink";
    +-
    +-class cow : public animal
    +-{
    +-    virtual std::string do_speak() const
    +-    {
    +-        return muuuh;
    +-    }
    +-
    +-    virtual animal* do_clone() const
    +-    {
    +-        return new cow( *this );
    +-    }
    +-
    +-public:
    +-    cow( const std::string& name ) : animal(name)          { }
    +-};
    +-
    +-class pig : public animal
    +-{
    +-    virtual std::string do_speak() const
    +-    {
    +-        return oiink;
    +-    }
    +-
    +-    virtual animal* do_clone() const
    +-    {
    +-        return new pig( *this );
    +-    }
    ++const std::string muuuh = "Muuuh!";
    ++const std::string oiink = "Oiiink";
    ++
    ++class cow : public animal
    ++{
    ++    virtual std::string do_speak() const
    ++    {
    ++        return muuuh;
    ++    }
    ++
    ++    virtual animal* do_clone() const
    ++    {
    ++        return new cow( *this );
    ++    }
    ++
    ++public:
    ++    cow( const std::string& name ) : animal(name)          { }
    ++};
    ++
    ++class pig : public animal
    ++{
    ++    virtual std::string do_speak() const
    ++    {
    ++        return oiink;
    ++    }
    ++
    ++    virtual animal* do_clone() const
    ++    {
    ++        return new pig( *this );
    ++    }
    +     
    +-public:
    +-    pig( const std::string& name ) : animal(name)          { }
    +-};
    ++public:
    ++    pig( const std::string& name ) : animal(name)          { }
    ++};
    + 
    +-//
    ++//
    + // Then we, of course, need a place to put all
    + // those animals.
    + //
    + 
    +-class farm
    +-{
    +-    //
    ++class farm
    ++{
    ++    //
    +     // This is where the smart containers are handy
    +     //
    +-    typedef boost::ptr_deque<animal> barn_type;
    +-    barn_type                        barn;
    ++    typedef boost::ptr_deque<animal> barn_type;
    ++    barn_type                        barn;
    + 
    +-    //
    ++    //
    +     // A convenience typedef for the compiler-appropriate
    +     // smart pointer used to manage barns
    +     //    
    +-    typedef compatible-smart-ptr<barn_type> raii_ptr;
    ++    typedef compatible-smart-ptr<barn_type> raii_ptr;
    + 
    +-    //
    ++    //
    +     // An error type
    +     //
    +-    struct farm_trouble : public std::exception           { };
    ++    struct farm_trouble : public std::exception           { };
    + 
    +-public:
    +-    // 
    ++public:
    ++    // 
    +     // We would like to make it possible to
    +     // iterate over the animals in the farm
    +     //
    +-    typedef barn_type::iterator  animal_iterator;
    ++    typedef barn_type::iterator  animal_iterator;
    + 
    +-    //
    ++    //
    +     // We also need to count the farm's size...
    +     //
    +-    typedef barn_type::size_type size_type;
    ++    typedef barn_type::size_type size_type;
    +     
    +-    //
    ++    //
    +     // And we also want to transfer an animal
    +     // safely around. The easiest way to think
    +     // about '::auto_type' is to imagine a simplified
    +@@ -184,100 +184,100 @@
    +     //
    +     // but not more.
    +     //
    +-    typedef barn_type::auto_type  animal_transport;
    ++    typedef barn_type::auto_type  animal_transport;
    + 
    +-    // 
    ++    // 
    +     // Create an empty farm.
    +     //
    +-    farm()                                                 { }
    ++    farm()                                                 { }
    +     
    +-    //
    ++    //
    +     // We need a constructor that can make a new
    +     // farm by cloning a range of animals.
    +     //
    +-    farm( animal_iterator begin, animal_iterator end )
    +-     : 
    +-        //
    ++    farm( animal_iterator begin, animal_iterator end )
    ++     : 
    ++        //
    +         // Objects are always cloned before insertion
    +         // unless we explicitly add a pointer or 
    +         // use 'release()'. Therefore we actually
    +         // clone all animals in the range
    +         //
    +-        barn( begin, end )                               { }
    ++        barn( begin, end )                               { }
    +     
    +-    //
    ++    //
    +     // ... so we need some other function too
    +     //
    + 
    +-    animal_iterator begin()
    +-    {
    +-        return barn.begin();
    +-    }
    ++    animal_iterator begin()
    ++    {
    ++        return barn.begin();
    ++    }
    + 
    +-    animal_iterator end()
    +-    {
    +-        return barn.end();
    +-    }
    ++    animal_iterator end()
    ++    {
    ++        return barn.end();
    ++    }
    +     
    +-    //
    ++    //
    +     // Here it is quite ok to have an 'animal*' argument.
    +     // The smart container will handle all ownership
    +     // issues.
    +     //
    +-    void buy_animal( animal* a )
    +-    {
    +-        barn.push_back( a );
    +-    }
    ++    void buy_animal( animal* a )
    ++    {
    ++        barn.push_back( a );
    ++    }
    + 
    +-    //
    ++    //
    +     // The farm can also be in economical trouble and
    +     // therefore be in the need to sell animals.
    +     //
    +-    animal_transport sell_animal( animal_iterator to_sell )
    +-    {
    +-        if( to_sell == end() )
    +-            throw farm_trouble();
    ++    animal_transport sell_animal( animal_iterator to_sell )
    ++    {
    ++        if( to_sell == end() )
    ++            throw farm_trouble();
    + 
    +-        //
    ++        //
    +         // Here we remove the animal from the barn,
    +         // but the animal is not deleted yet...it's
    +         // up to the buyer to decide what
    +         // to do with it.
    +         //
    +-        return barn.release( to_sell );
    +-    }
    ++        return barn.release( to_sell );
    ++    }
    + 
    +-    //
    ++    //
    +     // How big a farm do we have?
    +     //
    +-    size_type size() const
    +-    {
    +-        return barn.size();
    +-    }
    ++    size_type size() const
    ++    {
    ++        return barn.size();
    ++    }
    + 
    +-    //
    ++    //
    +     // If things are bad, we might choose to sell all animals :-(
    +       //
    + 
    +-    raii_ptr sell_farm()
    +-    {
    +-        return barn.release();
    +-    }
    ++    raii_ptr sell_farm()
    ++    {
    ++        return barn.release();
    ++    }
    + 
    +-    //
    ++    //
    +     // However, if things are good, we might buy somebody
    +     // else's farm :-)
    +     //
    + 
    +-    void buy_farm( raii_ptr other )
    +-    {
    +-        //
    ++    void buy_farm( raii_ptr other )
    ++    {
    ++        //
    +         // This line inserts all the animals from 'other'
    +         // and is guaranteed either to succeed or to have no
    +         // effect
    +         //
    +-        barn.transfer( barn.end(), // insert new animals at the end
    +-                         *other );     // we want to transfer all animals,
    ++        barn.transfer( barn.end(), // insert new animals at the end
    ++                         *other );     // we want to transfer all animals,
    +                                        // so we use the whole container as argument
    +         //
    +         // You might think you would have to do
    +@@ -286,86 +286,86 @@
    +         //
    +         // but '*other' is empty and can go out of scope as it wants
    +         //
    +-        BOOST_ASSERT( other->empty() );
    +-    }
    ++        BOOST_ASSERT( other->empty() );
    ++    }
    +     
    +-}; // class 'farm'.
    ++}; // class 'farm'.
    + 
    +-int main()
    +-{
    +-    //
    ++int main()
    ++{
    ++    //
    +     // First we make a farm
    +     //
    +-    farm animal_farm;
    +-    BOOST_ASSERT( animal_farm.size() == 0u );
    ++    farm animal_farm;
    ++    BOOST_ASSERT( animal_farm.size() == 0u );
    +     
    +-    animal_farm.buy_animal( new pig("Betty") );
    +-    animal_farm.buy_animal( new pig("Benny") );
    +-    animal_farm.buy_animal( new pig("Jeltzin") );
    +-    animal_farm.buy_animal( new cow("Hanz") );
    +-    animal_farm.buy_animal( new cow("Mary") );
    +-    animal_farm.buy_animal( new cow("Frederik") );
    +-    BOOST_ASSERT( animal_farm.size() == 6u );
    +-
    +-    //
    ++    animal_farm.buy_animal( new pig("Betty") );
    ++    animal_farm.buy_animal( new pig("Benny") );
    ++    animal_farm.buy_animal( new pig("Jeltzin") );
    ++    animal_farm.buy_animal( new cow("Hanz") );
    ++    animal_farm.buy_animal( new cow("Mary") );
    ++    animal_farm.buy_animal( new cow("Frederik") );
    ++    BOOST_ASSERT( animal_farm.size() == 6u );
    ++
    ++    //
    +     // Then we make another farm...it will actually contain
    +     // a clone of the other farm.
    +     //
    +-    farm new_farm( animal_farm.begin(), animal_farm.end() );
    +-    BOOST_ASSERT( new_farm.size() == 6u );
    ++    farm new_farm( animal_farm.begin(), animal_farm.end() );
    ++    BOOST_ASSERT( new_farm.size() == 6u );
    + 
    +-    //
    ++    //
    +     // Is it really clones in the new farm?
    +     //
    +-    BOOST_ASSERT( new_farm.begin()->name() == "Betty" );
    ++    BOOST_ASSERT( new_farm.begin()->name() == "Betty" );
    +     
    +-    //
    ++    //
    +     // Then we search for an animal, Mary (the Crown Princess of Denmark),
    +     // because we would like to buy her ...
    +     //
    +-    typedef farm::animal_iterator iterator;
    +-    iterator to_sell;
    +-    for( iterator i   = animal_farm.begin(),
    +-                  end = animal_farm.end();
    +-         i != end; ++i )
    +-    {
    +-        if( i->name() == "Mary" )
    +-        {
    +-            to_sell = i;
    +-            break;
    +-        }
    +-    }
    +-
    +-    farm::animal_transport mary = animal_farm.sell_animal( to_sell );
    +-
    +-
    +-    if( mary->speak() == muuuh )
    +-        //
    ++    typedef farm::animal_iterator iterator;
    ++    iterator to_sell;
    ++    for( iterator i   = animal_farm.begin(),
    ++                  end = animal_farm.end();
    ++         i != end; ++i )
    ++    {
    ++        if( i->name() == "Mary" )
    ++        {
    ++            to_sell = i;
    ++            break;
    ++        }
    ++    }
    ++
    ++    farm::animal_transport mary = animal_farm.sell_animal( to_sell );
    ++
    ++
    ++    if( mary->speak() == muuuh )
    ++        //
    +         // Great, Mary is a cow, and she may live longer
    +         //
    +-        new_farm.buy_animal( mary.release() );
    +-    else
    +-        //
    ++        new_farm.buy_animal( mary.release() );
    ++    else
    ++        //
    +         // Then the animal would be destroyed (!)
    +         // when we go out of scope.
    +         //
    +-        ;
    ++        ;
    + 
    +-    //
    ++    //
    +     // Now we can observe some changes to the two farms...
    +     //
    +-    BOOST_ASSERT( animal_farm.size() == 5u );
    +-    BOOST_ASSERT( new_farm.size()    == 7u );
    ++    BOOST_ASSERT( animal_farm.size() == 5u );
    ++    BOOST_ASSERT( new_farm.size()    == 7u );
    + 
    +-    //
    ++    //
    +     // The new farm has however underestimated how much
    +     // it cost to feed Mary and its owner is forced to sell the farm...
    +     //
    +-    animal_farm.buy_farm( new_farm.sell_farm() );
    ++    animal_farm.buy_farm( new_farm.sell_farm() );
    + 
    +-    BOOST_ASSERT( new_farm.size()    == 0u );
    +-    BOOST_ASSERT( animal_farm.size() == 12u );     
    +-}
    ++    BOOST_ASSERT( new_farm.size()    == 0u );
    ++    BOOST_ASSERT( animal_farm.size() == 12u );     
    ++}
    + 
    + + diff --git a/boost-1.76.0-random-test.patch b/boost-1.76.0-random-test.patch new file mode 100644 index 0000000..5ce7477 --- /dev/null +++ b/boost-1.76.0-random-test.patch @@ -0,0 +1,34 @@ +From c3ada7a1b2b54f4b27585f72308a76984f8489b4 Mon Sep 17 00:00:00 2001 +From: jzmaddock +Date: Tue, 16 Mar 2021 10:47:16 +0000 +Subject: [PATCH] Add missing #includes. + +--- + test/multiprecision_float_test.cpp | 1 + + test/multiprecision_int_test.cpp | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/test/multiprecision_float_test.cpp b/test/multiprecision_float_test.cpp +index 904c59d8f..bc2a9364d 100644 +--- boost_1_76_0/libs/random/test/multiprecision_float_test.cpp ++++ boost_1_76_0/libs/random/test/multiprecision_float_test.cpp +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + #include + + +diff --git a/test/multiprecision_int_test.cpp b/test/multiprecision_int_test.cpp +index 577e52aff..41ec229b5 100644 +--- boost_1_76_0/libs/random/test/multiprecision_int_test.cpp ++++ boost_1_76_0/libs/random/test/multiprecision_int_test.cpp +@@ -32,6 +32,7 @@ + #include + #include + #include ++#include + #include + + typedef boost::mpl::list < diff --git a/boost-1.78.0-build-optflags.patch b/boost-1.78.0-build-optflags.patch new file mode 100644 index 0000000..47578a6 --- /dev/null +++ b/boost-1.78.0-build-optflags.patch @@ -0,0 +1,68 @@ +From 739edb2889cb63c281a3597e712988a40bc82829 Mon Sep 17 00:00:00 2001 +From: Thomas W Rodgers +Date: Mon, 28 Feb 2022 20:55:14 -0800 +Subject: [PATCH 1/3] Adjust options for Fedora package build + +--- + src/tools/gcc.jam | 31 ++++++++++++++++--------------- + 1 file changed, 16 insertions(+), 15 deletions(-) + +diff --git a/tools/build/src/tools/gcc.jam b/tools/build/src/tools/gcc.jam +index 47a11322..543cfd84 100644 +--- a/tools/build/src/tools/gcc.jam ++++ b/tools/build/src/tools/gcc.jam +@@ -510,7 +510,7 @@ rule compile.fortran ( targets * : sources * : properties * ) + + actions compile.c++ bind PCH_FILE + { +- "$(CONFIG_COMMAND)" $(LANG) -ftemplate-depth-$(TEMPLATE_DEPTH) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -include"$(PCH_FILE:S=)" -I"$(INCLUDES)" -include"$(FORCE_INCLUDES)" -c -o "$(<:W)" "$(>:W)" ++ "$(CONFIG_COMMAND)" $(LANG) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -include"$(PCH_FILE:S=)" -I"$(INCLUDES)" -include"$(FORCE_INCLUDES)" -c -o "$(<:W)" "$(>:W)" + } + + actions compile.c bind PCH_FILE +@@ -521,6 +521,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) -include"$(PCH_FILE:S=)" -I"$(INCLUDES)" -include"$(FORCE_INCLUDES)" "$(>:W)" -E >"$(<:W)" +++ "$(CONFIG_COMMAND)" $(LANG) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -include"$(PCH_FILE:S=)" $(PCH_FILE:D)" -I"$(INCLUDES)" -include"$(FORCE_INCLUDES)" "$(>:W)" -E >"$(<:W)" + } + + actions compile.c.preprocess bind PCH_FILE +@@ -623,20 +624,20 @@ 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 ; +-toolset.flags gcc.compile OPTIONS extra : -Wall -Wextra ; +-toolset.flags gcc.compile OPTIONS pedantic : -Wall -Wextra -pedantic ; +-toolset.flags gcc.compile OPTIONS on : -Werror ; ++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 extra : ; ++toolset.flags gcc.compile OPTIONS pedantic : ; ++toolset.flags gcc.compile OPTIONS on : ; + + toolset.flags gcc.compile OPTIONS on : -g ; + toolset.flags gcc.compile OPTIONS on : -pg ; +-- +2.35.1 + diff --git a/boost-1.78.0-fix-b2-staging.patch b/boost-1.78.0-fix-b2-staging.patch new file mode 100644 index 0000000..fa0e212 --- /dev/null +++ b/boost-1.78.0-fix-b2-staging.patch @@ -0,0 +1,72 @@ +From 78fd284a42caabe8815cb0870b46e5567872e75b Mon Sep 17 00:00:00 2001 +From: Dmitry +Date: Sat, 11 Dec 2021 16:58:23 +0300 +Subject: [PATCH] Don't skip install targets if there's no in ureqs + (#113) + +--- + src/tools/stage.jam | 4 ++++ + test/install_build_no.py | 26 ++++++++++++++++++++++++++ + test/test_all.py | 1 + + 3 files changed, 31 insertions(+) + create mode 100755 test/install_build_no.py + +diff --git a/tools/build/src/tools/stage.jam b/tools/build/src/tools/stage.jam +index c5f02e3ba4..325129dc81 100644 +--- a/tools/build/src/tools/stage.jam ++++ b/tools/build/src/tools/stage.jam +@@ -478,6 +478,10 @@ class install-target-class : basic-target + return [ sequence.unique $(result2) ] ; + } + ++ rule skip-from-usage-requirements ( ) ++ { ++ } ++ + # Returns true iff 'type' is subtype of some element of 'types-to-include'. + # + local rule include-type ( type : types-to-include * ) +diff --git a/tools/build/test/install_build_no.py b/tools/build/test/install_build_no.py +new file mode 100755 +index 0000000000..0ccf3c5cc6 +--- /dev/null ++++ b/tools/build/test/install_build_no.py +@@ -0,0 +1,26 @@ ++#!/usr/bin/python ++ ++# Copyright 2021 Dmitry Arkhipov (grisumbras@gmail.com) ++# Distributed under the Boost Software License, Version 1.0. ++# (See accompanying file LICENSE.txt or https://www.bfgroup.xyz/b2/LICENSE.txt) ++ ++# Check that no in usage-requirements of dependencies does not affect ++# install rule, i.e. a skipped installed target does not affect insallation of ++# other targets. ++ ++import BoostBuild ++ ++t = BoostBuild.Tester() ++ ++t.write("a.cpp", "int main() {}\n") ++ ++t.write("jamroot.jam", """ ++make x : : maker : no ; ++exe a : a.cpp ; ++install install : x a ; ++""") ++ ++t.run_build_system() ++t.expect_addition("install/a.exe") ++ ++t.cleanup() +diff --git a/tools/build/test/test_all.py b/tools/build/test/test_all.py +index b7ef5ad701..9ed729d017 100644 +--- a/tools/build/test/test_all.py ++++ b/tools/build/test/test_all.py +@@ -250,6 +250,7 @@ def reorder_tests(tests, first_test): + "inherit_toolset", + "inherited_dependency", + "inline", ++ "install_build_no", + "libjpeg", + "liblzma", + "libpng", diff --git a/boost-1.78.0-no-rpath.patch b/boost-1.78.0-no-rpath.patch new file mode 100644 index 0000000..f5c6c47 --- /dev/null +++ b/boost-1.78.0-no-rpath.patch @@ -0,0 +1,31 @@ +From 25e4220a4564a3f8ec22607fcdbee90c81f040d6 Mon Sep 17 00:00:00 2001 +From: Thomas W Rodgers +Date: Mon, 28 Feb 2022 21:24:07 -0800 +Subject: [PATCH 2/3] Adjust options to remove RPATH for Fedora package builds + +--- + src/tools/gcc.jam | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/tools/build/src/tools/gcc.jam b/tools/build/src/tools/gcc.jam +index 543cfd84..fd213ccb 100644 +--- a/tools/build/src/tools/gcc.jam ++++ b/tools/build/src/tools/gcc.jam +@@ -1045,12 +1045,11 @@ actions link.dll.mingw bind LIBRARIES + + 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)} + + 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) + } + + ### +-- +2.35.1 + diff --git a/boost-1.81.0-always-initialize-member-variable.patch b/boost-1.81.0-always-initialize-member-variable.patch new file mode 100644 index 0000000..14c48ae --- /dev/null +++ b/boost-1.81.0-always-initialize-member-variable.patch @@ -0,0 +1,41 @@ +From ecdc3d41be93d994cf293b6ce08cc33cb9e39e71 Mon Sep 17 00:00:00 2001 +From: Kefu Chai +Date: Thu, 27 Apr 2023 13:09:28 +0800 +Subject: [PATCH] always initialize member variable + +in this change, impl::extended_p_square_quantile_impl::probability is +zero-initialized to silence -Wuninitialized warning from GCC-13. + +despite that this variable is always initialized in +impl::extended_p_square_quantile_impl::result(), it is still referenced +by, for instance the copy constructor, which could be called before +`result()` gets called. and GCC-13 rightly warn us like: + +In copy constructor ‘constexpr boost::accumulators::impl::extended_p_square_quantile_impl::extended_p_square_quantile_impl(const boost::accumulators::impl::extended_p_square_quantile_impl&)’, + inlined from ‘boost::accumulators::detail::accumulator_wrapper::accumulator_wrapper(const boost::accumulators::detail::accumulator_wrapper&) [with Accumulator = boost::accumulators::impl::extended_p_square_quantile_impl; Feature = boost::accumulators::tag::extended_p_square_quantile_quadratic]’ at /usr/include/boost/accumulators/framework/depends_on.hpp:320:69, + inlined from ‘constexpr boost::fusion::cons::cons(typename boost::fusion::detail::call_param::type, typename boost::fusion::detail::call_param::type) [with Car = boost::accumulators::detail::accumulator_wrapper, boost::accumulators::tag::extended_p_square_quantile_quadratic>; Cdr = boost::fusion::cons, boost::accumulators::tag::sum>, boost::fusion::cons, boost::accumulators::tag::mean>, boost::fusion::cons, boost::accumulators::tag::max>, boost::fusion::nil_> > >]’ at /usr/include/boost/fusion/container/list/cons.hpp:66:15, + inlined from ‘static boost::accumulators::detail::build_acc_list::type boost::accumulators::detail::build_acc_list::call(const Args&, const First&, const Last&) [with Args = boost::parameter::aux::flat_like_arg_list, void> >, std::integral_constant >, boost::parameter::aux::flat_like_arg_tuple, boost::parameter::aux::tagged_argument, std::array >, std::integral_constant > >; First = boost::fusion::mpl_iterator, boost::accumulators::tag::max>, boost::mpl::v_item, boost::accumulators::tag::mean>, boost::mpl::v_item, boost::accumulators::tag::sum>, boost::mpl::v_item, boost::accumulators::tag::extended_p_square_quantile_quadratic>, boost::mpl::v_item, boost::accumulators::tag::extended_p_square>, boost::mpl::v_item, boost::mpl::vector0, 0>, 0>, 0>, 0>, 0>, 0>, 2> >; Last = boost::fusion::mpl_iterator, boost::accumulators::tag::max>, boost::mpl::v_item, boost::accumulators::tag::mean>, boost::mpl::v_item, boost::accumulators::tag::sum>, boost::mpl::v_item, boost::accumulators::tag::extended_p_square_quantile_quadratic>, boost::mpl::v_item, boost::accumulators::tag::extended_p_square>, boost::mpl::v_item, boost::mpl::vector0, 0>, 0>, 0>, 0>, 0>, 0>, 6> >]’ at /usr/include/boost/accumulators/framework/depends_on.hpp:252:86, + inlined from ‘static boost::accumulators::detail::build_acc_list::type boost::accumulators::detail::build_acc_list::call(const Args&, const First&, const Last&) [with Args = boost::parameter::aux::flat_like_arg_list, void> >, std::integral_constant >, boost::parameter::aux::flat_like_arg_tuple, boost::parameter::aux::tagged_argument, std::array >, std::integral_constant > >; First = boost::fusion::mpl_iterator, boost::accumulators::tag::max>, boost::mpl::v_item, boost::accumulators::tag::mean>, boost::mpl::v_item, boost::accumulators::tag::sum>, boost::mpl::v_item, boost::accumulators::tag::extended_p_square_quantile_quadratic>, boost::mpl::v_item, boost::accumulators::tag::extended_p_square>, boost::mpl::v_item, boost::mpl::vector0, 0>, 0>, 0>, 0>, 0>, 0>, 1> >; Last = boost::fusion::mpl_iterator, boost::accumulators::tag::max>, boost::mpl::v_item, boost::accumulators::tag::mean>, boost::mpl::v_item, boost::accumulators::tag::sum>, boost::mpl::v_item, boost::accumulators::tag::extended_p_square_quantile_quadratic>, boost::mpl::v_item, boost::accumulators::tag::extended_p_square>, boost::mpl::v_item, boost::mpl::vector0, 0>, 0>, 0>, 0>, 0>, 0>, 6> >]’ at /usr/include/boost/accumulators/framework/depends_on.hpp:252:86: +/usr/include/boost/accumulators/statistics/extended_p_square_quantile.hpp:57:12: error: ‘.boost::accumulators::detail::accumulator_wrapper, boost::accumulators::tag::extended_p_square_quantile_quadratic>::.boost::accumulators::impl::extended_p_square_quantile_impl::probability’ is used uninitialized [-Werror=uninitialized] + 57 | struct extended_p_square_quantile_impl + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Signed-off-by: Kefu Chai +--- + boost/accumulators/statistics/extended_p_square_quantile.hpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/boost/accumulators/statistics/extended_p_square_quantile.hpp b/boost/accumulators/statistics/extended_p_square_quantile.hpp +index f57304c..a4ac3cd 100644 +--- a/boost/accumulators/statistics/extended_p_square_quantile.hpp ++++ b/boost/accumulators/statistics/extended_p_square_quantile.hpp +@@ -76,6 +76,7 @@ namespace impl + boost::begin(args[extended_p_square_probabilities]) + , boost::end(args[extended_p_square_probabilities]) + ) ++ , probability() + { + } + +-- +2.39.2 diff --git a/boost-1.81.0-build-optflags.patch b/boost-1.81.0-build-optflags.patch deleted file mode 100644 index 0f482c8..0000000 --- a/boost-1.81.0-build-optflags.patch +++ /dev/null @@ -1,70 +0,0 @@ -From ebc90bc3e372dc8e5db21f79d2a79e4f5c4d01ee Mon Sep 17 00:00:00 2001 -From: Patrick Palka -Date: Mon, 4 Dec 2023 09:24:20 -0500 -Subject: [PATCH] Adjust options for Fedora package build - ---- - tools/build/src/tools/gcc.jam | 30 +++++++++++++++--------------- - 1 file changed, 15 insertions(+), 15 deletions(-) - -diff --git a/tools/build/src/tools/gcc.jam b/tools/build/src/tools/gcc.jam -index 834f5e1bf..c753afc23 100644 ---- a/tools/build/src/tools/gcc.jam -+++ b/tools/build/src/tools/gcc.jam -@@ -513,7 +513,7 @@ rule compile.fortran ( targets * : sources * : properties * ) - - actions compile.c++ bind PCH_FILE - { -- "$(CONFIG_COMMAND)" $(LANG) -ftemplate-depth-$(TEMPLATE_DEPTH) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) $(INCLUDE-GCH)$(_)"$(PCH_FILE:S=)" $(INCLUDE-PCH)$(_)"$(PCH_FILE)" -I"$(INCLUDES)" -include$(_)"$(FORCE_INCLUDES)" -c -o "$(<)" "$(>:T)" -+ "$(CONFIG_COMMAND)" $(LANG) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) $(INCLUDE-GCH)$(_)"$(PCH_FILE:S=)" $(INCLUDE-PCH)$(_)"$(PCH_FILE)" -I"$(INCLUDES)" -include$(_)"$(FORCE_INCLUDES)" -c -o "$(<)" "$(>:T)" - } - - actions compile.c bind PCH_FILE -@@ -523,7 +523,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) $(INCLUDE-GCH)$(_)"$(PCH_FILE:S=)" $(INCLUDE-PCH)$(_)"$(PCH_FILE)" -I"$(INCLUDES)" -include$(_)"$(FORCE_INCLUDES)" "$(>:T)" -E >"$(<)" -+ "$(CONFIG_COMMAND)" $(LANG) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) $(INCLUDE-GCH)$(_)"$(PCH_FILE:S=)" $(INCLUDE-PCH)$(_)"$(PCH_FILE)" -I"$(INCLUDES)" -include$(_)"$(FORCE_INCLUDES)" "$(>:T)" -E >"$(<)" - } - - actions compile.c.preprocess bind PCH_FILE -@@ -627,22 +627,22 @@ 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 minimal : -O1 ; -+toolset.flags gcc.compile OPTIONS off : ; -+toolset.flags gcc.compile OPTIONS speed : ; -+toolset.flags gcc.compile OPTIONS space : ; -+toolset.flags gcc.compile OPTIONS minimal : ; - toolset.flags gcc.compile OPTIONS debug : -Og ; - --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 : ; -+toolset.flags gcc.compile OPTIONS on : ; -+toolset.flags gcc.compile OPTIONS full : ; - --toolset.flags gcc.compile OPTIONS off : -w ; --toolset.flags gcc.compile OPTIONS on : -Wall ; --toolset.flags gcc.compile OPTIONS all : -Wall ; --toolset.flags gcc.compile OPTIONS extra : -Wall -Wextra ; --toolset.flags gcc.compile OPTIONS pedantic : -Wall -Wextra -pedantic ; --toolset.flags gcc.compile OPTIONS on : -Werror ; -+toolset.flags gcc.compile OPTIONS off : ; -+toolset.flags gcc.compile OPTIONS on : ; -+toolset.flags gcc.compile OPTIONS all : ; -+toolset.flags gcc.compile OPTIONS extra : ; -+toolset.flags gcc.compile OPTIONS pedantic : ; -+toolset.flags gcc.compile OPTIONS on : ; - - toolset.flags gcc.compile OPTIONS on : -g ; - toolset.flags gcc.compile OPTIONS on : -pg ; --- -2.43.0 - diff --git a/boost-1.90-system.patch b/boost-1.90-system.patch deleted file mode 100644 index 0cadaef..0000000 --- a/boost-1.90-system.patch +++ /dev/null @@ -1,42 +0,0 @@ -From d9554db26c3dbb00a6a293ee4fd4966e4e278da8 Mon Sep 17 00:00:00 2001 -From: Peter Dimov -Date: Mon, 15 Dec 2025 21:51:45 +0200 -Subject: [PATCH] Install boost_system as header-only - ---- - boost-install.jam | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/boost-install.jam b/boost-install.jam -index b87e308..5e6bfa6 100644 ---- a/tools/boost_install/boost-install.jam -+++ b/tools/boost_install/boost-install.jam -@@ -1015,7 +1015,7 @@ local rule install-cmake-config- ( install-or-stage : version : name : requireme - - local library-type = UNKNOWN ; - -- if $(name) = boost_headers || $(name) = boost_math || $(name) = boost_exception -+ if $(name) = boost_headers || $(name) = boost_math || $(name) = boost_exception || $(name) = boost_system - { - library-type = INTERFACE ; - } -From 9529e070ea9e9afd1da17edd48993d560fdc0d7a Mon Sep 17 00:00:00 2001 -From: Peter Dimov -Date: Mon, 15 Dec 2025 21:52:49 +0200 -Subject: [PATCH] Still install boost_system, for the CMake configuration. Refs - #132. - ---- - build.jam | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/build.jam b/build.jam -index 65da5aa6..5b6545c8 100644 ---- a/libs/system//build.jam -+++ b/libs/system//build.jam -@@ -21,4 +21,5 @@ explicit - ; - - call-if : boost-library system -+ : install boost_system - ; diff --git a/boost-1.90.0-no-rpath.patch b/boost-1.90.0-no-rpath.patch deleted file mode 100644 index de28890..0000000 --- a/boost-1.90.0-no-rpath.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 6a8ff06728b64a1121a6179d891ab0baf3b9290b Mon Sep 17 00:00:00 2001 -From: Patrick Palka -Date: Mon, 4 Dec 2023 09:27:13 -0500 -Subject: [PATCH] Adjust options to remove RPATH for Fedora package builds - ---- - tools/build/src/tools/gcc.jam | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/tools/build/src/tools/gcc.jam b/tools/build/src/tools/gcc.jam -index c753afc23..e0b627726 100644 ---- a/tools/build/src/tools/gcc.jam -+++ b/tools/build/src/tools/gcc.jam -@@ -1035,12 +1035,12 @@ rule link.dll ( targets * : sources * : properties * ) - - actions link bind LIBRARIES - { -- "$(CONFIG_COMMAND)" @($(<[1]:T).rsp:O=FC:<=@":>=":E=-L"$(LINKPATH)" -Wl,$(RPATH_OPTION)$(SPACE)-Wl,$(RPATH) -Wl,-rpath-link$(SPACE)-Wl,"$(RPATH_LINK)" -o "$(<:T)" $(START-GROUP) "$(>:T)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS)) -+ "$(CONFIG_COMMAND)" @($(<[1]:T).rsp:O=FC:<=@":>=":E=-L"$(LINKPATH)" -o "$(<:T)" $(START-GROUP) "$(>:T)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS)) - } - - actions link.dll bind LIBRARIES - { -- "$(CONFIG_COMMAND)" @($(<[1]:T).rsp:O=FC:<=@":>=":E=-L"$(LINKPATH)" -Wl,$(RPATH_OPTION)$(SPACE)-Wl,$(RPATH) -Wl,$(IMPLIB_OPTION:E=--out-implib),"$(<[2]:T)" -o "$(<[1]:T)" $(HAVE_SONAME)-Wl,$(SONAME_OPTION)$(SPACE)-Wl,"$(SONAME_PREFIX:E=)$(<[1]:D=)" $(SHARED_OPTION:E=-shared) $(START-GROUP) "$(>:T)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS)) -+ "$(CONFIG_COMMAND)" @($(<[1]:T).rsp:O=FC:<=@":>=":E=-L"$(LINKPATH)" -Wl,$(IMPLIB_OPTION:E=--out-implib),"$(<[2]:T)" -o "$(<[1]:T)" $(HAVE_SONAME)-Wl,$(SONAME_OPTION)$(SPACE)-Wl,"$(SONAME_PREFIX:E=)$(<[1]:D=)" $(SHARED_OPTION:E=-shared) $(START-GROUP) "$(>:T)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS)) - } - - ### --- -2.43.0 - diff --git a/boost-1.90.0-range.patch b/boost-1.90.0-range.patch deleted file mode 100644 index e4dfef3..0000000 --- a/boost-1.90.0-range.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 9ac89e9936b826c13e90611cb9a81a7aa0508d20 Mon Sep 17 00:00:00 2001 -From: Michael Cho -Date: Sun, 30 Mar 2025 21:45:49 -0400 -Subject: [PATCH] Add include for add_const - -Signed-off-by: Michael Cho ---- - include/boost/range/detail/any_iterator_interface.hpp | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/include/boost/range/detail/any_iterator_interface.hpp b/include/boost/range/detail/any_iterator_interface.hpp -index 1103be6c..79e71dbd 100644 ---- boost_1_90_0/boost/range/detail/any_iterator_interface.hpp -+++ boost_1_90_0/boost/range/detail/any_iterator_interface.hpp -@@ -13,6 +13,7 @@ - #include - #include - #include -+#include - #include - #include - #include diff --git a/boost.spec b/boost.spec index 0ee6ede..29c3d44 100644 --- a/boost.spec +++ b/boost.spec @@ -16,19 +16,15 @@ # All arches have mpich %bcond_without mpich -%if 0%{?fedora} >= 40 || 0%{?rhel} >= 10 -%ifarch %{ix86} - # No OpenMPI support on these arches - %bcond_with openmpi -%else - %bcond_without openmpi -%endif +%ifarch s390 + # No OpenMPI support on these arches + %bcond_with openmpi %else %bcond_without openmpi %endif %endif -%ifnarch %{ix86} x86_64 %{arm} ppc64 ppc64le aarch64 s390x riscv64 +%ifnarch %{ix86} x86_64 %{arm} ppc64 ppc64le aarch64 s390x %bcond_with context %else %bcond_without context @@ -42,18 +38,12 @@ %bcond_without quadmath %endif -%ifnarch x86_64 - %bcond_with stacktrace_from_exception -%else - %bcond_without stacktrace_from_exception -%endif - Name: boost %global real_name boost Summary: The free peer-reviewed portable C++ source libraries -Version: 1.90.0 -Release: 4%{?dist} -License: BSL-1.0 AND MIT AND Python-2.0.1 +Version: 1.78.0 +Release: 14%{?dist} +License: Boost and MIT and Python # Replace each . with _ in %%{version} %global version_enc %{lua: @@ -64,11 +54,12 @@ License: BSL-1.0 AND MIT AND Python-2.0.1 %global toplev_dirname %{real_name}_%{version_enc} URL: http://www.boost.org -# https://archives.boost.io/release/1.90.0/source/boost_1_90_0.tar.bz2 -Source0: https://archives.boost.io/release/%{version}/source/%{name}_%{version_enc}.tar.bz2 +# https://boostorg.jfrog.io/artifactory/main/release/1.78.0/source/boost_1_78_0.tar.bz2 +Source0: https://boostorg.jfrog.io/artifactory/main/release/%{version}/source/%{name}_%{version_enc}.tar.bz2 +Source1: libboost_thread.so # Add a manual page for b2, based on the online documentation: # http://www.boost.org/boost-build2/doc/html/bbv2/overview.html -Source1: b2.1 +Source2: b2.1 # Since Fedora 13, the Boost libraries are delivered with sonames # equal to the Boost version (e.g., 1.41.0). @@ -81,9 +72,7 @@ Source1: b2.1 # The subpackages that don't install shared libraries are also not pulled in # (b2, build, doc, doctools, examples, static). Requires: %{name}-atomic%{?_isa} = %{version}-%{release} -Requires: %{name}-charconv%{?_isa} = %{version}-%{release} Requires: %{name}-chrono%{?_isa} = %{version}-%{release} -Requires: %{name}-cobalt%{?_isa} = %{version}-%{release} Requires: %{name}-container%{?_isa} = %{version}-%{release} Requires: %{name}-contract%{?_isa} = %{version}-%{release} %if %{with context} @@ -102,7 +91,6 @@ Requires: %{name}-locale%{?_isa} = %{version}-%{release} Requires: %{name}-log%{?_isa} = %{version}-%{release} Requires: %{name}-math%{?_isa} = %{version}-%{release} Requires: %{name}-nowide%{?_isa} = %{version}-%{release} -Requires: %{name}-process%{?_isa} = %{version}-%{release} Requires: %{name}-program-options%{?_isa} = %{version}-%{release} %if %{with python3} Requires: %{name}-python3%{?_isa} = %{version}-%{release} @@ -111,15 +99,12 @@ 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}-url%{?_isa} = %{version}-%{release} Requires: %{name}-wave%{?_isa} = %{version}-%{release} -# F44 dropped the boost-system subpackage -Obsoletes: boost-system < 1.90.0 -Conflicts: boost-system < 1.90.0 %if %{with python3} Recommends: (boost-numpy3 if python3-numpy) @@ -142,29 +127,54 @@ BuildRequires: libquadmath-devel BuildRequires: bison BuildRequires: libzstd-devel +# 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 +Patch0: boost-1.58.0-pool.patch + +# https://svn.boost.org/trac/boost/ticket/9038 +Patch1: boost-1.58.0-pool-test_linking.patch + # https://bugzilla.redhat.com/show_bug.cgi?id=1541035 -Patch0: boost-1.81.0-build-optflags.patch +Patch2: boost-1.78.0-build-optflags.patch # https://bugzilla.redhat.com/show_bug.cgi?id=1318383 -Patch1: boost-1.90.0-no-rpath.patch +Patch3: boost-1.78.0-no-rpath.patch # https://lists.boost.org/Archives/boost/2020/04/248812.php -Patch2: boost-1.73.0-cmakedir.patch +Patch4: boost-1.73.0-cmakedir.patch + +# https://bugzilla.redhat.com/show_bug.cgi?id=1899888 +# https://github.com/boostorg/locale/issues/52 +Patch5: boost-1.73-locale-empty-vector.patch # https://bugzilla.redhat.com/show_bug.cgi?id=1541035 -Patch3: boost-1.78.0-b2-build-flags.patch +Patch6: boost-1.78.0-b2-build-flags.patch + +# https://github.com/boostorg/random/issues/82 +Patch7: boost-1.76.0-random-test.patch + +# PR https://github.com/boostorg/multiprecision/pull/421 +# fixes ppc64le issue https://github.com/boostorg/multiprecision/issues/419 +Patch8: boost-1.76.0-fix_multiprecision_issue_419-ppc64le.patch # PR https://github.com/boostorg/interval/pull/30 # Fixes narrowing conversions for ppc - # https://github.com/boostorg/interval/issues/29 -Patch5: boost-1.76.0-fix-narrowing-conversions-for-ppc.patch +Patch9: boost-1.76.0-fix-narrowing-conversions-for-ppc.patch -# Install boost_system for the CMake configuration -# https://github.com/boostorg/system/issues/132 -Patch6: boost-1.90-system.patch +# https://github.com/boostorg/ptr_container/pull/27 +Patch10: boost-1.76.0-ptr_cont-xml.patch -# https://github.com/boostorg/range/pull/157 -Patch7: boost-1.90.0-range.patch +# Fixes missing libboost_fiber.so +# https://github.com/boostorg/boost/issues/632 +Patch11: boost-1.78.0-fix-b2-staging.patch + +# https://github.com/boostorg/python/pull/385 +Patch12: boost-1.76.0-enum_type_object-type-python-3.11.patch + +# PR https://github.com/boostorg/accumulators/pull/54 +Patch13: boost-1.81.0-always-initialize-member-variable.patch %bcond_with tests %bcond_with docs_generated @@ -189,33 +199,14 @@ types and operations on these data types, as well as memory ordering constraints required for coordinating multiple threads through atomic variables. -%package charconv -Summary: Run-time component of boost charconv library - -%description charconv - -Run-time support for Boost.Charconv, an implementation of -in C++11. - %package chrono Summary: Run-time component of boost chrono library -Obsoletes: boost-system < 1.90.0 -Conflicts: boost-system < 1.90.0 +Requires: %{name}-system%{?_isa} = %{version}-%{release} %description chrono Run-time support for Boost.Chrono, a set of useful time utilities. -%package cobalt -Summary: Run-time component of boost cobalt library - -%description cobalt - -Boost.Cobalt provides a set of easy to use coroutine primitives & utilities -running on top of boost.asio. These will be of interest for applications that -perform a lot of IO that want to not block unnecessarily, yet still want to -have linear & readable code (i..e. avoid callbacks). - %package container Summary: Run-time component of boost container library @@ -224,8 +215,7 @@ Summary: Run-time component of boost container library 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 don't comply with the -latest C++ standard. +standard draft features for compilers that comply with C++03. %package contract Summary: Run-time component of boost contract library @@ -250,7 +240,6 @@ provides a sort of cooperative multitasking on a single thread. %package coroutine Summary: Run-time component of boost coroutine library -Requires: %{name}-context%{?_isa} = %{version}-%{release} %description coroutine Run-time support for Boost.Coroutine, a library that provides @@ -270,8 +259,6 @@ on generic programming concepts. %if %{with context} %package fiber Summary: Run-time component of boost fiber library -Requires: %{name}-context%{?_isa} = %{version}-%{release} -Requires: %{name}-filesystem%{?_isa} = %{version}-%{release} %description fiber @@ -281,9 +268,7 @@ micro-/userland-threads (fibers) scheduled cooperatively. %package filesystem Summary: Run-time component of boost filesystem library -Requires: %{name}-atomic%{?_isa} = %{version}-%{release} -Obsoletes: boost-system < 1.90.0 -Conflicts: boost-system < 1.90.0 +Requires: %{name}-system%{?_isa} = %{version}-%{release} %description filesystem @@ -311,7 +296,6 @@ stream buffers and i/o filters. %package json Summary: Run-time component of boost json library -Requires: %{name}-container%{?_isa} = %{version}-%{release} %description json @@ -322,9 +306,8 @@ simply "JSON" %package locale Summary: Run-time component of boost locale library Requires: %{name}-chrono%{?_isa} = %{version}-%{release} +Requires: %{name}-system%{?_isa} = %{version}-%{release} Requires: %{name}-thread%{?_isa} = %{version}-%{release} -Obsoletes: boost-system < 1.90.0 -Conflicts: boost-system < 1.90.0 %description locale @@ -333,25 +316,20 @@ handling tools. %package log Summary: Run-time component of boost logging library -Requires: %{name}-atomic%{?_isa} = %{version}-%{release} -Requires: %{name}-chrono%{?_isa} = %{version}-%{release} -Requires: %{name}-filesystem%{?_isa} = %{version}-%{release} -Requires: %{name}-regex%{?_isa} = %{version}-%{release} -Requires: %{name}-thread%{?_isa} = %{version}-%{release} %description log -Run-time support for Boost.Log, a modular and extensible logging -library that supports both narrow-character and wide-character logging. +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: Run-time component of boost math toolkit +Summary: Math functions for boost TR1 library %description math -Run-time support for Boost.Math, including floating-point utilities, -specific width floating-point types, mathematical constants, -statistical distributions, special functions, and more. +Run-time support for C99 and C++ TR1 C-style Functions from the math +portion of Boost.TR1. %package nowide Summary: Standard library functions with UTF-8 API on Windows @@ -377,14 +355,6 @@ support for the NumPy extension of the Boost Python Library for Python 3. %endif -%package process -Summary: Run-time component of boost process library - -%description process - -Run-time support of the Boost.Process library, for managing system -processes. - %package program-options Summary: Run-time component of boost program_options library @@ -436,6 +406,14 @@ Summary: Run-time component of boost stacktrace library Run-time component of the Boost stacktrace library. +%package system +Summary: Run-time component of boost system support library + +%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 @@ -446,8 +424,7 @@ program execution monitoring. %package thread Summary: Run-time component of boost thread library -Obsoletes: boost-system < 1.90.0 -Conflicts: boost-system < 1.90.0 +Requires: %{name}-system%{?_isa} = %{version}-%{release} %description thread @@ -459,8 +436,7 @@ data specific to individual threads. %package timer Summary: Run-time component of boost timer library Requires: %{name}-chrono%{?_isa} = %{version}-%{release} -Obsoletes: boost-system < 1.90.0 -Conflicts: boost-system < 1.90.0 +Requires: %{name}-system%{?_isa} = %{version}-%{release} %description timer @@ -471,31 +447,20 @@ 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}-thread%{?_isa} = %{version}-%{release} -Obsoletes: boost-system < 1.90.0 -Conflicts: boost-system < 1.90.0 +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 url -Summary: Runtime component of boost URL library - -%description url - -Run-time support for the Boost.URL library, a Standards conforming -library for parsing Uniform Resource Locators. - %package wave Summary: Run-time component of boost C99/C++ preprocessing library 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} -Obsoletes: boost-system < 1.90.0 -Conflicts: boost-system < 1.90.0 %description wave @@ -745,7 +710,7 @@ using python : %{python3_version} : /usr/bin/python3 : /usr/include/python%{pyth EOF %endif -./bootstrap.sh --with-toolset=%{toolchain} --with-icu --prefix=$RPM_BUILD_ROOT%{_prefix} +./bootstrap.sh --with-toolset=%{toolchain} --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 @@ -762,12 +727,20 @@ echo ============================= build serial ================== variant=release threading=multi debug-symbols=on pch=off \ %if %{with python3} python=%{python3_version} \ -%endif -%if !%{with stacktrace_from_exception} - boost.stacktrace.from_exception=off \ %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}) + # Build MPI parts of Boost with OpenMPI support %if %{with openmpi} || %{with mpich} @@ -809,7 +782,7 @@ export PATH=/bin${PATH:+:}$PATH echo ============================= build Boost.Build ================== (cd tools/build - ./bootstrap.sh --with-toolset=%{toolchain} --prefix=$RPM_BUILD_ROOT%{_prefix}) + ./bootstrap.sh --with-toolset=%{toolchain}) %check : @@ -900,37 +873,18 @@ echo ============================= install serial ================== variant=release threading=multi debug-symbols=on pch=off \ %if %{with python3} python=%{python3_version} \ -%endif -%if !%{with stacktrace_from_exception} - boost.stacktrace.from_exception=off \ %endif install -cat > $RPM_BUILD_ROOT%{_libdir}/libboost_system.so << EOT -/* GNU ld script - -There is no runtime library for Boost.System. -This empty linker script exists to support Fedora packages which use --lboost_system when linking and so require a library with that name. - -This linker script will be remove in a future Fedora release. -*/ -EOT -chmod 644 $RPM_BUILD_ROOT%{_libdir}/libboost_system.so +# 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}/ echo ============================= install Boost.Build ================== (cd tools/build ./b2 --prefix=$RPM_BUILD_ROOT%{_prefix} install - - # Somewhere along the line the boost-build install directory became b2 - # which seems not so great for our purposes, fix that up - mv $RPM_BUILD_ROOT%{_datadir}/b2 $RPM_BUILD_ROOT%{_datadir}/boost-build - - # but make a symlink so b2 knows where to look - pushd $RPM_BUILD_ROOT%{_datadir}/ - ln -s ./boost-build b2 - popd - # Fix some permissions chmod +x $RPM_BUILD_ROOT%{_datadir}/boost-build/src/tools/doxproc.py # Fix shebang using unversioned python @@ -939,7 +893,7 @@ echo ============================= install Boost.Build ================== rm $RPM_BUILD_ROOT%{_datadir}/boost-build/src/tools/doxygen/windows-paths-check.hpp rm -f $RPM_BUILD_ROOT%{_datadir}/boost-build/src/tools/doxygen/windows-paths-check.hpp # Install the manual page - %{__install} -p -m 644 %{SOURCE1} -D $RPM_BUILD_ROOT%{_mandir}/man1/b2.1 + %{__install} -p -m 644 %{SOURCE2} -D $RPM_BUILD_ROOT%{_mandir}/man1/b2.1 ) echo ============================= install Boost.QuickBook ================== @@ -1015,11 +969,6 @@ rm -f tmp-doc-files-to-be-installed rm -f tmp-doc-directories %{__install} -p -m 644 -t $EXAMPLESPATH LICENSE_1_0.txt -# The predef_check utility doesn't seem useful to package. -(cd $RPM_BUILD_ROOT/%{_datadir} - rm boost_predef/tools/check/* - rm boost_predef/build.jam -) %post doctools CATALOG=%{_sysconfdir}/xml/catalog @@ -1054,19 +1003,10 @@ fi %license LICENSE_1_0.txt %{_libdir}/libboost_atomic.so.%{sonamever} -%files charconv -%license LICENSE_1_0.txt -%{_libdir}/libboost_charconv.so.%{sonamever} - %files chrono %license LICENSE_1_0.txt %{_libdir}/libboost_chrono.so.%{sonamever} -%files cobalt -%license LICENSE_1_0.txt -%{_libdir}/libboost_cobalt.so.%{sonamever} -%{_libdir}/libboost_cobalt_io.so.%{sonamever} - %files container %license LICENSE_1_0.txt %{_libdir}/libboost_container.so.%{sonamever} @@ -1137,10 +1077,6 @@ fi %{_libdir}/libboost_numpy%{python3_version_nodots}.so.%{sonamever} %endif -%files process -%license LICENSE_1_0.txt -%{_libdir}/libboost_process.so.%{sonamever} - %files test %license LICENSE_1_0.txt %{_libdir}/libboost_prg_exec_monitor.so.%{sonamever} @@ -1174,9 +1110,10 @@ fi %{_libdir}/libboost_stacktrace_addr2line.so.%{sonamever} %{_libdir}/libboost_stacktrace_basic.so.%{sonamever} %{_libdir}/libboost_stacktrace_noop.so.%{sonamever} -%if %{with stacktrace_from_exception} -%{_libdir}/libboost_stacktrace_from_exception.so.%{sonamever} -%endif + +%files system +%license LICENSE_1_0.txt +%{_libdir}/libboost_system.so.%{sonamever} %files thread %license LICENSE_1_0.txt @@ -1190,10 +1127,6 @@ fi %license LICENSE_1_0.txt %{_libdir}/libboost_type_erasure.so.%{sonamever} -%files url -%license LICENSE_1_0.txt -%{_libdir}/libboost_url.so.%{sonamever} - %files wave %license LICENSE_1_0.txt %{_libdir}/libboost_wave.so.%{sonamever} @@ -1213,10 +1146,7 @@ fi %{_includedir}/%{name} %{_libdir}/cmake %{_libdir}/libboost_atomic.so -%{_libdir}/libboost_charconv.so %{_libdir}/libboost_chrono.so -%{_libdir}/libboost_cobalt.so -%{_libdir}/libboost_cobalt_io.so %{_libdir}/libboost_container.so %{_libdir}/libboost_contract.so %if %{with context} @@ -1244,7 +1174,6 @@ fi %if %{with python3} %{_libdir}/libboost_numpy%{python3_version_nodots}.so %endif -%{_libdir}/libboost_process.so %{_libdir}/libboost_prg_exec_monitor.so %{_libdir}/libboost_unit_test_framework.so %{_libdir}/libboost_program_options.so @@ -1258,14 +1187,10 @@ fi %{_libdir}/libboost_stacktrace_addr2line.so %{_libdir}/libboost_stacktrace_basic.so %{_libdir}/libboost_stacktrace_noop.so -%if %{with stacktrace_from_exception} -%{_libdir}/libboost_stacktrace_from_exception.so -%endif %{_libdir}/libboost_system.so %{_libdir}/libboost_thread.so %{_libdir}/libboost_timer.so %{_libdir}/libboost_type_erasure.so -%{_libdir}/libboost_url.so %{_libdir}/libboost_wave.so %files static @@ -1289,9 +1214,7 @@ fi %license LICENSE_1_0.txt %{_libdir}/openmpi/lib/cmake %{_libdir}/openmpi/lib/libboost_mpi.so -%{_libdir}/openmpi/lib/libboost_graph.so %{_libdir}/openmpi/lib/libboost_graph_parallel.so -%{_libdir}/openmpi/lib/libboost_container.so %if %{with python3} @@ -1308,9 +1231,7 @@ fi %files graph-openmpi %license LICENSE_1_0.txt -%{_libdir}/openmpi/lib/libboost_graph.so.%{sonamever} %{_libdir}/openmpi/lib/libboost_graph_parallel.so.%{sonamever} -%{_libdir}/openmpi/lib/libboost_container.so.%{sonamever} %endif @@ -1325,9 +1246,7 @@ fi %license LICENSE_1_0.txt %{_libdir}/mpich/lib/cmake %{_libdir}/mpich/lib/libboost_mpi.so -%{_libdir}/mpich/lib/libboost_graph.so %{_libdir}/mpich/lib/libboost_graph_parallel.so -%{_libdir}/mpich/lib/libboost_container.so %if %{with python3} @@ -1339,20 +1258,18 @@ fi %files mpich-python3-devel %license LICENSE_1_0.txt %{_libdir}/mpich/lib/libboost_mpi_python%{python3_version_nodots}.so + %endif %files graph-mpich %license LICENSE_1_0.txt -%{_libdir}/mpich/lib/libboost_graph.so.%{sonamever} %{_libdir}/mpich/lib/libboost_graph_parallel.so.%{sonamever} -%{_libdir}/mpich/lib/libboost_container.so.%{sonamever} %endif %files build %license LICENSE_1_0.txt %{_datadir}/%{name}-build/ -%{_datadir}/b2 %files doctools %license LICENSE_1_0.txt @@ -1365,134 +1282,16 @@ fi %{_mandir}/man1/b2.1* %changelog -* Thu Jan 15 2026 Yaakov Selkowitz - 1.90.0-4 -- Add dependencies on new subpackages to metapackage +* Tue Sep 12 2023 Jonathan Wakely - 1.78.0-14 +- Change spec file to use autosetup for applying patches -* Tue Jan 13 2026 Jonathan Wakely - 1.90.0-3 -- Fix libboost_system.so linker script to avoid ldcondig warning +* Fri Sep 01 2023 Jonathan Wakely - 1.78.0-13 +- Fix outdated CI configuration -* Mon Jan 12 2026 Jonathan Wakely - 1.90.0-2 -- Add patch for boost/range/detail/any_iterator_interface.hpp - -* Sat Jan 10 2026 Jonathan Wakely - 1.90.0-1 -- Rebase to 1.90.0 -- See https://fedoraproject.org/wiki/Changes/F44Boost189 -- Drop boost-system subpackage and libboost_thread.so linker script -- Add new boost-charconv, boost-cobalt, and boost-process subpackages - -* Fri Sep 19 2025 Python Maint - 1.83.0-17 -- Rebuilt for Python 3.14.0rc3 bytecode - -* Fri Aug 15 2025 Python Maint - 1.83.0-16 -- Rebuilt for Python 3.14.0rc2 bytecode - -* Tue Aug 05 2025 František Zatloukal - 1.83.0-15 -- Rebuilt for icu 77.1 - -* Wed Jul 23 2025 Fedora Release Engineering - 1.83.0-14 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Tue Jun 03 2025 Python Maint - 1.83.0-13 -- Rebuilt for Python 3.14 - -* Sun Jan 26 2025 Wolfgang Stöggl - 1.83.0-12 -- Add boost-1.83-fix-no-member-named_that_error.patch - -* Thu Jan 16 2025 Fedora Release Engineering - 1.83.0-11 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Tue Dec 24 2024 Sandro - 1.83.0-10 -- Backport patches for NumPy 2.x - -* Fri Dec 06 2024 Pete Walter - 1.83.0-9 -- Rebuild for ICU 76 - -* Wed Jul 17 2024 Fedora Release Engineering - 1.83.0-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Sat Jun 08 2024 Python Maint - 1.83.0-7 -- Rebuilt for Python 3.13 - -* Thu Jun 06 2024 Jonathan Wakely - 1.83.0-6 -- Add missing Requires for rpminspect errors. - -* Sun Jun 02 2024 Songsong Zhang - 1.83.0-6 -- Backport patch to fix RISC-V functions missing - -* Sat May 25 2024 Kefu Chai - 1.83.0-5 -- Add patch to fix Boost.Math bug where float_next(+INF) and float_prior(-INF) - returns NaN, but they should return +INF and -INF respectively. - See https://github.com/boostorg/math/issues/1132 and its fix at - -* Sun May 05 2024 Kefu Chai - 1.83.0-4 -- Add patch for Boost.Multiprecision bug - See https://github.com/boostorg/multiprecision/pull/618 - -* Wed Jan 31 2024 Pete Walter - 1.83.0-3 -- Rebuild for ICU 74 - -* Tue Jan 23 2024 Fedora Release Engineering - 1.83.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Jan 19 2024 Fedora Release Engineering - 1.83.0-1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Wed Dec 06 2023 Patrick Palka - 1.83.0-0 -- Rebase to 1.83.0 -- See https://fedoraproject.org/wiki/Changes/F40Boost183 -- Drop patch for accumulators library that has since been applied upstream. -- Fix spurious Boost.Regex test failures. - -* Sun Oct 29 2023 Orion Poplawski - 1.81.0-10 -- Rebuild for openmpi 5.0.0, drops support for i686 - -* Tue Aug 29 2023 Tom Callaway - 1.81.0-9 -- apply upstream fixes for failing random tests - -* Sun Aug 20 2023 Kefu Chai - 1.81.0-8 +* Tue Aug 22 2023 Kefu Chai - 1.78.0-12 - Add patch for Boost.Accumulators bug See https://github.com/boostorg/accumulators/pull/54 -* Wed Aug 2 2023 Tom Callaway - 1.81.0-7 -- add symlink for b2 files - -* Wed Jul 19 2023 Fedora Release Engineering - 1.81.0-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Tue Jul 11 2023 František Zatloukal - 1.81.0-5 -- Rebuilt for ICU 73.2 - -* Thu Jul 06 2023 Jonathan Wakely - 1.81.0-4 -- Update License for SPDX migration - -* Tue Jun 13 2023 Python Maint - 1.81.0-3 -- Rebuilt for Python 3.12 - -* Fri May 05 2023 Nianqing Yao - 1.81.0-3 -- Fix build for riscv64 - See https://github.com/fedora-riscv/boost/tree/f38-rv64 - -* Wed Mar 15 2023 Jonathan Wakely - 1.81.0-2 -- Change spec file to use autospec for applying patches - -* Wed Mar 15 2023 Jonathan Wakely - 1.81.0-1 -- Add patch for Boost.Phoenix bugs (#2178210) - -* Mon Feb 20 2023 Thomas Rodgers - 1.81.0-0 -- Rebase to 1.81.0 - See https://fedoraproject.org/wiki/Changes/F38Boost181 -- Drop patches: - deleted: boost-1.58.0-pool.patch - deleted: boost-1.58.0-pool-test_linking.patch - deleted: boost-1.78.0-build-optflags.patch - deleted: boost-1.73-locale-empty-vector.patch - deleted: boost-1.76.0-fix_multiprecision_issue_419-ppc64le.patch - deleted: boost-1.76.0-ptr_cont-xml.patch - deleted: boost-1.78.0-fix-b2-staging.patch - deleted: boost-1.76.0-enum_type_object-type-python-3.11.patch -- New Boost.URL runtime component -- boost_build directory is now b2 in upstream, rename to boost_build on install - * Wed Jan 18 2023 Fedora Release Engineering - 1.78.0-11 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild @@ -1530,7 +1329,7 @@ fi - Rebase to 1.78.0 See https://fedoraproject.org/wiki/Changes/F37Boost178 - Drop patches: - deleted: boost-1.75.0-build-optflags.patch + deleted: boost-1.75.0-build-optflags.patch deleted: boost-1.75.0-no-rpath.patch deleted: boost-1.76.0-b2-build-flags.patch deleted: boost-1.76.0-fix-include-inside-boost-namespace.patch @@ -2576,7 +2375,7 @@ fi - Drop obsolete Obsoletes: boost-python and boost-doc <= 1.30.2 * Tue Jan 12 2010 Benjamin Kosnik - 1.41.0-1 -- Don't package generated debug libs, even with +- Don't package generated debug libs, even with (-DCMAKE_BUILD_TYPE=RelWithDebInfo | Release). - Update and include boost-cmake-soname.patch. - Uncomment ctest. diff --git a/libboost_thread.so b/libboost_thread.so new file mode 100644 index 0000000..db50610 --- /dev/null +++ b/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/sources b/sources index 17c9198..84ff6c3 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (boost_1_90_0.tar.bz2) = 1c81b60f63367d7249f277f0a569c181926dcf5a725e30433dd336205f1782880489dd00df6a1a74fd107765d3ca2cd49f806788cabb7d5700a8a55927a9a199 +SHA512 (boost_1_78_0.tar.bz2) = 9c34a387a203b99aa773eb0c59f5abac7a99ba10e4623653e793c1d5b29b99b88e0e4e0d4e2e4ca5d497c42f2e46e23bab66417722433a457dc818d7670bcbbf diff --git a/tests/boost-testsuite-sanity/runtest.sh b/tests/boost-testsuite-sanity/runtest.sh index 2bc6957..98e9842 100755 --- a/tests/boost-testsuite-sanity/runtest.sh +++ b/tests/boost-testsuite-sanity/runtest.sh @@ -54,26 +54,17 @@ rlJournalStart rlPhaseStartSetup "build boost" rlRun "rpm -D \"_topdir $TmpDir\" -U *.src.rpm" rlRun "dnf builddep -y $TmpDir/SPECS/*.spec" - rlRun "sed -i -e 's/^%prep/%prep\n%dump/' $TmpDir/SPECS/*.spec" rlRun "su -c 'rpmbuild -D \"_topdir $TmpDir\" -bp $TmpDir/SPECS/*.spec &>$TmpDir/rpmbuild.log' $BUILD_USER" rlRun "rlFileSubmit $TmpDir/rpmbuild.log" - rlRun "toplev_dirname=`awk '/toplev_dirname/{print $3; exit}' $TmpDir/rpmbuild.log`" - cd $TmpDir/BUILD/$toplev_dirname - if [ $? -ne 0 ]; then - # handle rpm 4.20 build directory difference - # https://github.com/rpm-software-management/rpm/issues/3147 - rlRun "cd $TmpDir/BUILD/*-build/$toplev_dirname" - fi - # now we know the top-level build dir, keep it for later - rlRun "BuildDir=$(pwd)" + rlRun "cd $TmpDir/BUILD/boost*" rlRun "su -c './bootstrap.sh &>$TmpDir/bootstrap.log' $BUILD_USER" rlRun "rlFileSubmit $TmpDir/bootstrap.log" rlPhaseEnd rlPhaseStartTest "run testsuite" while read test_path; do - if [ -f $BuildDir/libs/$test_path/test/Jamfile* ]; then - rlRun "cd $BuildDir/libs/$test_path/test" + if [ -f $TmpDir/BUILD/boost*/libs/$test_path/test/Jamfile* ]; then + rlRun "cd $TmpDir/BUILD/boost*/libs/$test_path/test" rlRun "su -c '/usr/bin/b2 -d1 --build-dir=$TmpDir/test-build &>>$TmpDir/testsuite.log' $BUILD_USER" rm -fr $TmpDir/test-build else