From 8c05e809d09ca1f2cb8cff61f9539f58605bc2a6 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Thu, 19 May 2016 17:07:44 +0100 Subject: [PATCH 1/4] Rebuilt for GCC 6.1 (#1331983) --- boost.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/boost.spec b/boost.spec index dda68c9..84fe4c7 100644 --- a/boost.spec +++ b/boost.spec @@ -38,7 +38,7 @@ Name: boost Summary: The free peer-reviewed portable C++ source libraries Version: 1.60.0 %global version_enc 1_60_0 -Release: 4%{?dist} +Release: 5%{?dist} License: Boost and MIT and Python %global toplev_dirname %{name}_%{version_enc} @@ -1269,6 +1269,9 @@ fi %{_mandir}/man1/bjam.1* %changelog +* Thu May 19 2016 Jonathan Wakely - 1.60.0-5 +- Rebuilt for GCC 6.1 (#1331983) + * Wed Feb 03 2016 Fedora Release Engineering - 1.60.0-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild From ca4b80e4c64a787381bfc1e66fe4e906c7219b58 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Tue, 28 Jun 2016 17:10:00 +0100 Subject: [PATCH 2/4] Add patch for Boost.Multiprecision (#1349638) --- boost-1.60-multiprecision.patch | 37 +++++++++++++++++++++++++++++++++ boost.spec | 9 +++++++- 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 boost-1.60-multiprecision.patch diff --git a/boost-1.60-multiprecision.patch b/boost-1.60-multiprecision.patch new file mode 100644 index 0000000..e060ddc --- /dev/null +++ b/boost-1.60-multiprecision.patch @@ -0,0 +1,37 @@ +commit f9c8f9ec091ad232c0a291904f7839d665d098e0 +Author: jzmaddock +Date: Thu Mar 3 10:52:03 2016 +0000 + + Add some needed casts for cases where limb_type is wider than unsigned int. + +diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp +index 60ad876..b868167 100644 +--- a/include/boost/multiprecision/cpp_int.hpp ++++ b/include/boost/multiprecision/cpp_int.hpp +@@ -190,7 +190,7 @@ private: + public: + BOOST_STATIC_CONSTANT(unsigned, limb_bits = sizeof(limb_type) * CHAR_BIT); + BOOST_STATIC_CONSTANT(limb_type, max_limb_value = ~static_cast(0u)); +- BOOST_STATIC_CONSTANT(limb_type, sign_bit_mask = 1u << (limb_bits - 1)); ++ BOOST_STATIC_CONSTANT(limb_type, sign_bit_mask = static_cast(1u) << (limb_bits - 1)); + BOOST_STATIC_CONSTANT(unsigned, internal_limb_count = + MinBits + ? (MinBits / limb_bits + ((MinBits % limb_bits) ? 1 : 0)) +@@ -413,7 +413,7 @@ struct cpp_int_base + public: + BOOST_STATIC_CONSTANT(unsigned, limb_bits = sizeof(limb_type) * CHAR_BIT); + BOOST_STATIC_CONSTANT(limb_type, max_limb_value = ~static_cast(0u)); +- BOOST_STATIC_CONSTANT(limb_type, sign_bit_mask = 1u << (limb_bits - 1)); ++ BOOST_STATIC_CONSTANT(limb_type, sign_bit_mask = static_cast(1u) << (limb_bits - 1)); + BOOST_STATIC_CONSTANT(unsigned, internal_limb_count = MinBits / limb_bits + ((MinBits % limb_bits) ? 1 : 0)); + BOOST_STATIC_CONSTANT(bool, variable = false); + BOOST_STATIC_CONSTANT(limb_type, upper_limb_mask = (MinBits % limb_bits) ? (limb_type(1) << (MinBits % limb_bits)) -1 : (~limb_type(0))); +@@ -565,7 +565,7 @@ struct cpp_int_base + public: + BOOST_STATIC_CONSTANT(unsigned, limb_bits = sizeof(limb_type) * CHAR_BIT); + BOOST_STATIC_CONSTANT(limb_type, max_limb_value = ~static_cast(0u)); +- BOOST_STATIC_CONSTANT(limb_type, sign_bit_mask = 1u << (limb_bits - 1)); ++ BOOST_STATIC_CONSTANT(limb_type, sign_bit_mask = static_cast(1u) << (limb_bits - 1)); + BOOST_STATIC_CONSTANT(unsigned, internal_limb_count = MinBits / limb_bits + ((MinBits % limb_bits) ? 1 : 0)); + BOOST_STATIC_CONSTANT(bool, variable = false); + BOOST_STATIC_CONSTANT(limb_type, upper_limb_mask = (MinBits % limb_bits) ? (limb_type(1) << (MinBits % limb_bits)) -1 : (~limb_type(0))); diff --git a/boost.spec b/boost.spec index 84fe4c7..a0b9f8b 100644 --- a/boost.spec +++ b/boost.spec @@ -38,7 +38,7 @@ Name: boost Summary: The free peer-reviewed portable C++ source libraries Version: 1.60.0 %global version_enc 1_60_0 -Release: 5%{?dist} +Release: 6%{?dist} License: Boost and MIT and Python %global toplev_dirname %{name}_%{version_enc} @@ -131,6 +131,9 @@ Patch68: boost-1.58.0-address-model.patch # https://bugzilla.redhat.com/show_bug.cgi?id=1262444 Patch81: boost-1.59-test-fenv.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1349638 +Patch83: boost-1.60-multiprecision.patch + %bcond_with tests %bcond_with docs_generated @@ -641,6 +644,7 @@ a number of significant features and is now developed independently %patch65 -p1 %patch68 -p1 %patch81 -p2 +%patch83 -p2 # At least python2_version needs to be a macro so that it's visible in # %%install as well. @@ -1269,6 +1273,9 @@ fi %{_mandir}/man1/bjam.1* %changelog +* Tue Jun 28 2016 Jonathan Wakely - 1.60.0-8 +- Add patch for Boost.Multiprecision (#1349638) + * Thu May 19 2016 Jonathan Wakely - 1.60.0-5 - Rebuilt for GCC 6.1 (#1331983) From 77834af81db4eed2bdf4362e5bc7f24e77fe6519 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Mon, 1 Aug 2016 21:41:24 +0100 Subject: [PATCH 3/4] Add patch for Boost.Python to fix pointer registration (#1358725) --- boost-1.60-python-regptr.patch | 42 ++++++++++++++++++++++++++++++++++ boost.spec | 10 +++++++- 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 boost-1.60-python-regptr.patch diff --git a/boost-1.60-python-regptr.patch b/boost-1.60-python-regptr.patch new file mode 100644 index 0000000..1dabbeb --- /dev/null +++ b/boost-1.60-python-regptr.patch @@ -0,0 +1,42 @@ +From f2c465ffa508459216f7093bf95ba001ad994206 Mon Sep 17 00:00:00 2001 +From: vslashg +Date: Mon, 29 Feb 2016 13:33:35 -0500 +Subject: [PATCH] Fix auto-pointer registration in Boost Python 1.60. + +The conditional instantiation magic of maybe_register_pointer_to_python() assumes that use_value_holder and use_back_reference will be one of the boost::mpl::bool_ types, but this assumption is no longer true in Boost 1.60, where they can be standard library bool wrappers instead. + +Explicitly defining these types as mpl::bool_ classes fixes https://github.com/boostorg/python/issues/56. +--- + include/boost/python/object/class_metadata.hpp | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +diff --git a/include/boost/python/object/class_metadata.hpp b/include/boost/python/object/class_metadata.hpp +index c71cf67..5009c17 100644 +--- a/include/boost/python/object/class_metadata.hpp ++++ b/include/boost/python/object/class_metadata.hpp +@@ -164,7 +164,7 @@ struct class_metadata + >::type held_type; + + // Determine if the object will be held by value +- typedef is_convertible use_value_holder; ++ typedef mpl::bool_::value> use_value_holder; + + // Compute the "wrapped type", that is, if held_type is a smart + // pointer, we're talking about the pointee. +@@ -175,10 +175,12 @@ struct class_metadata + >::type wrapped; + + // Determine whether to use a "back-reference holder" +- typedef mpl::or_< +- has_back_reference +- , is_same +- , is_base_and_derived ++ typedef mpl::bool_< ++ mpl::or_< ++ has_back_reference ++ , is_same ++ , is_base_and_derived ++ >::value + > use_back_reference; + + // Select the holder. diff --git a/boost.spec b/boost.spec index a0b9f8b..f3b4636 100644 --- a/boost.spec +++ b/boost.spec @@ -38,7 +38,7 @@ Name: boost Summary: The free peer-reviewed portable C++ source libraries Version: 1.60.0 %global version_enc 1_60_0 -Release: 6%{?dist} +Release: 7%{?dist} License: Boost and MIT and Python %global toplev_dirname %{name}_%{version_enc} @@ -134,6 +134,10 @@ Patch81: boost-1.59-test-fenv.patch # https://bugzilla.redhat.com/show_bug.cgi?id=1349638 Patch83: boost-1.60-multiprecision.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1358725 +# https://github.com/boostorg/python/pull/59/files +Patch84: boost-1.60-python-regptr.patch + %bcond_with tests %bcond_with docs_generated @@ -645,6 +649,7 @@ a number of significant features and is now developed independently %patch68 -p1 %patch81 -p2 %patch83 -p2 +%patch84 -p2 # At least python2_version needs to be a macro so that it's visible in # %%install as well. @@ -1273,6 +1278,9 @@ fi %{_mandir}/man1/bjam.1* %changelog +* Mon Aug 01 2016 Jonathan Wakely - 1.60.0-7 +- Add patch for Boost.Python to fix pointer registration (#1358725) + * Tue Jun 28 2016 Jonathan Wakely - 1.60.0-8 - Add patch for Boost.Multiprecision (#1349638) From 272b29641b0f59b7dac4c7e7dd14af1992c908e5 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Fri, 9 Dec 2016 10:31:48 +0000 Subject: [PATCH 4/4] Add patch for Boost.Asio to fix allocator usage (#1403165) --- boost-1.60-asio-use-future.patch | 45 ++++++++++++++++++++++++++++++++ boost.spec | 9 ++++++- 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 boost-1.60-asio-use-future.patch diff --git a/boost-1.60-asio-use-future.patch b/boost-1.60-asio-use-future.patch new file mode 100644 index 0000000..1410509 --- /dev/null +++ b/boost-1.60-asio-use-future.patch @@ -0,0 +1,45 @@ +From 42e7869f411a75512fb6994c634eb086fb9eb5cc Mon Sep 17 00:00:00 2001 +From: Christopher Kohlhoff +Date: Sun, 11 Sep 2016 12:04:18 +1000 +Subject: [PATCH] Fix allocator usage to compile with g++ 6. + +--- + include/boost/asio/impl/use_future.hpp | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) + +diff --git a/include/boost/asio/impl/use_future.hpp b/include/boost/asio/impl/use_future.hpp +index b954e14..92106f4 100644 +--- a/include/boost/asio/impl/use_future.hpp ++++ b/include/boost/asio/impl/use_future.hpp +@@ -34,10 +34,12 @@ namespace detail { + { + public: + // Construct from use_future special value. +- template +- promise_handler(use_future_t uf) ++ template ++ promise_handler(use_future_t uf) + : promise_(std::allocate_shared >( +- uf.get_allocator(), std::allocator_arg, uf.get_allocator())) ++ typename Alloc::template rebind::other(uf.get_allocator()), ++ std::allocator_arg, ++ typename Alloc::template rebind::other(uf.get_allocator()))) + { + } + +@@ -66,10 +68,12 @@ namespace detail { + { + public: + // Construct from use_future special value. Used during rebinding. +- template +- promise_handler(use_future_t uf) ++ template ++ promise_handler(use_future_t uf) + : promise_(std::allocate_shared >( +- uf.get_allocator(), std::allocator_arg, uf.get_allocator())) ++ typename Alloc::template rebind::other(uf.get_allocator()), ++ std::allocator_arg, ++ typename Alloc::template rebind::other(uf.get_allocator()))) + { + } + diff --git a/boost.spec b/boost.spec index f3b4636..8c4aa32 100644 --- a/boost.spec +++ b/boost.spec @@ -38,7 +38,7 @@ Name: boost Summary: The free peer-reviewed portable C++ source libraries Version: 1.60.0 %global version_enc 1_60_0 -Release: 7%{?dist} +Release: 8%{?dist} License: Boost and MIT and Python %global toplev_dirname %{name}_%{version_enc} @@ -138,6 +138,9 @@ Patch83: boost-1.60-multiprecision.patch # https://github.com/boostorg/python/pull/59/files Patch84: boost-1.60-python-regptr.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1403165 +Patch85: boost-1.60-asio-use-future.patch + %bcond_with tests %bcond_with docs_generated @@ -650,6 +653,7 @@ a number of significant features and is now developed independently %patch81 -p2 %patch83 -p2 %patch84 -p2 +%patch85 -p2 # At least python2_version needs to be a macro so that it's visible in # %%install as well. @@ -1278,6 +1282,9 @@ fi %{_mandir}/man1/bjam.1* %changelog +* Fri Dec 09 2016 Jonathan Wakely - 1.60.0-8 +- Add patch for Boost.Asio to fix allocator usage (#1403165) + * Mon Aug 01 2016 Jonathan Wakely - 1.60.0-7 - Add patch for Boost.Python to fix pointer registration (#1358725)