diff --git a/auto_buffer-C-20-compatibility.patch b/auto_buffer-C-20-compatibility.patch new file mode 100644 index 0000000..6e4a95c --- /dev/null +++ b/auto_buffer-C-20-compatibility.patch @@ -0,0 +1,34 @@ +From 675ea3ddf714e2594393ed935f64dce99721b7d7 Mon Sep 17 00:00:00 2001 +From: Avi Kivity +Date: Tue, 12 May 2020 14:29:56 +0300 +Subject: [PATCH] auto_buffer: C++20 compatibility + +C++20's std::allocator does not define the pointer member type, +use std::allocator_traits instead. +--- + include/boost/signals2/detail/auto_buffer.hpp | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/include/boost/signals2/detail/auto_buffer.hpp b/include/boost/signals2/detail/auto_buffer.hpp +index 5ff8dd2..ed62152 100644 +--- a/include/boost/signals2/detail/auto_buffer.hpp ++++ b/include/boost/signals2/detail/auto_buffer.hpp +@@ -140,11 +140,15 @@ namespace detail + typedef Allocator allocator_type; + typedef T value_type; + typedef typename Allocator::size_type size_type; + typedef typename Allocator::difference_type difference_type; + typedef T* pointer; ++#if __cplusplus <= 201703L + typedef typename Allocator::pointer allocator_pointer; ++#else ++ typedef typename std::allocator_traits::pointer allocator_pointer; ++#endif + typedef const T* const_pointer; + typedef T& reference; + typedef const T& const_reference; + typedef pointer iterator; + typedef const_pointer const_iterator; +-- +2.26.2 + diff --git a/boost-1.69-format-allocator.patch b/boost-1.69-format-allocator.patch new file mode 100644 index 0000000..28c43a8 --- /dev/null +++ b/boost-1.69-format-allocator.patch @@ -0,0 +1,28 @@ +--- boost_1_69_0/boost/format/alt_sstream_impl.hpp~ 2020-03-30 15:20:18.565658757 +0100 ++++ boost_1_69_0/boost/format/alt_sstream_impl.hpp 2020-03-30 15:20:33.768636162 +0100 +@@ -40,8 +40,11 @@ + #ifdef _RWSTD_NO_CLASS_PARTIAL_SPEC + void *vd_ptr = alloc_.allocate(sz, is_allocated_? eback() : 0); + Ch *new_ptr = static_cast(vd_ptr); +-#else ++#elif defined BOOST_NO_CXX11_ALLOCATOR + Ch *new_ptr = alloc_.allocate(sz, is_allocated_? eback() : 0); ++#else ++ Ch *new_ptr = std::allocator_traits::allocate(alloc_, ++ sz, is_allocated_? eback() : 0); + #endif + // if this didnt throw, we're safe, update the buffer + dealloc(); +@@ -257,8 +260,11 @@ + #ifdef _RWSTD_NO_CLASS_PARTIAL_SPEC + void *vdptr = alloc_.allocate(new_size, is_allocated_? oldptr : 0); + newptr = static_cast(vdptr); +-#else ++#elif defined BOOST_NO_CXX11_ALLOCATOR + newptr = alloc_.allocate(new_size, is_allocated_? oldptr : 0); ++#else ++ newptr = std::allocator_traits::allocate(alloc_, ++ new_size, is_allocated_? oldptr : 0); + #endif + } + diff --git a/boost-1.69.0-test-cxx20.patch b/boost-1.69.0-test-cxx20.patch new file mode 100644 index 0000000..c9b0e67 --- /dev/null +++ b/boost-1.69.0-test-cxx20.patch @@ -0,0 +1,50 @@ +From 8ac88c62dcc809d42daf8b6bef10f7adecc46dd1 Mon Sep 17 00:00:00 2001 +From: Laurent Stacul +Date: Mon, 17 Feb 2020 08:57:49 +0000 +Subject: [PATCH] Fix compilation issue due to deleted + std::basic_ostream::operator<< overload + +--- + include/boost/test/impl/test_tools.ipp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/boost/test/impl/test_tools.ipp b/include/boost/test/impl/test_tools.ipp +index 40f24e6399..e4d61660b8 100644 +--- a/include/boost/test/impl/test_tools.ipp ++++ b/include/boost/test/impl/test_tools.ipp +@@ -124,7 +124,7 @@ print_log_value::operator()( std::ostream& ostr, char const* t ) + void + print_log_value::operator()( std::ostream& ostr, wchar_t const* t ) + { +- ostr << ( t ? t : L"null string" ); ++ ostr << ( t ? reinterpret_cast(t) : "null string" ); + } + + //____________________________________________________________________________// +From db6b98c72783351e0acd3c558691323a7a103ba9 Mon Sep 17 00:00:00 2001 +From: Raffi Enficiaud +Date: Sat, 9 May 2020 10:42:38 +0200 +Subject: [PATCH] Fixing cast issue when logging wchar_t + +--- + include/boost/test/impl/test_tools.ipp | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/include/boost/test/impl/test_tools.ipp b/include/boost/test/impl/test_tools.ipp +index 025cd1a92a..bbee21fbbc 100644 +--- a/include/boost/test/impl/test_tools.ipp ++++ b/include/boost/test/impl/test_tools.ipp +@@ -124,7 +124,12 @@ print_log_value::operator()( std::ostream& ostr, char const* t ) + void + print_log_value::operator()( std::ostream& ostr, wchar_t const* t ) + { +- ostr << ( t ? reinterpret_cast(t) : "null string" ); ++ if(t) { ++ ostr << static_cast(t); ++ } ++ else { ++ ostr << "null w-string"; ++ } + } + + //____________________________________________________________________________// diff --git a/boost.spec b/boost.spec index a519689..6fd3229 100644 --- a/boost.spec +++ b/boost.spec @@ -45,7 +45,7 @@ Summary: The free peer-reviewed portable C++ source libraries Version: 1.69.0 %global version_enc 1_69_0 %global version_suffix 169 -Release: 9%{?dist} +Release: 12%{?dist} License: Boost and MIT and Python %global toplev_dirname %{real_name}_%{version_enc} @@ -152,6 +152,15 @@ Patch84: boost-1.69-random.patch # https://github.com/boostorg/mpi/pull/81 Patch85: boost-1.69-mpi-c_data.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1818723 +Patch86: boost-1.69-format-allocator.patch + +# https://bugzilla.redhat.com/show_bug.cgi?id=1832639 +Patch87: boost-1.69.0-test-cxx20.patch + +# https://bugzilla.redhat.com/show_bug.cgi?id=1834764 +Patch88: auto_buffer-C-20-compatibility.patch + %bcond_with tests %bcond_with docs_generated @@ -761,6 +770,9 @@ find ./boost -name '*.hpp' -perm /111 | xargs chmod a-x %patch83 -p1 %patch84 -p2 %patch85 -p2 +%patch86 -p1 +%patch87 -p2 +%patch88 -p2 %build # Dump the versions being used into the build logs. @@ -1483,6 +1495,15 @@ fi %{_mandir}/man1/bjam.1* %changelog +* Tue May 12 2020 Avi Kivity - 1.69.0-12 +- Add patch for C++20 compatibility in Boost.Signals2 (#1834764) + +* Mon May 11 2020 Jonathan Wakely - 1.69.0-11 +- Add patch for C++20 compatibility in Boost.Test (#1832639) + +* Mon Mar 30 2020 Jonathan Wakely - 1.69.0-10 +- Patch Boost.Format for C++20 compatibility with GCC 10 (#1818723) + * Wed Jul 24 2019 Fedora Release Engineering - 1.69.0-9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild