From fb229be377635ad5d54e27ef2ca0c76ba61f4ceb Mon Sep 17 00:00:00 2001 From: Petr Machata Date: Wed, 12 Nov 2014 19:36:48 +0100 Subject: [PATCH 1/5] Fix boost::shared_ptr::operator[] for non-array T's --- boost-1.54.0-smart_ptr-shared_ptr_at.patch | 88 ++++++++++++++++++++++ boost.spec | 10 ++- 2 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 boost-1.54.0-smart_ptr-shared_ptr_at.patch diff --git a/boost-1.54.0-smart_ptr-shared_ptr_at.patch b/boost-1.54.0-smart_ptr-shared_ptr_at.patch new file mode 100644 index 0000000..675e13d --- /dev/null +++ b/boost-1.54.0-smart_ptr-shared_ptr_at.patch @@ -0,0 +1,88 @@ +From f65c57d9d2a4f535e36c96b7f563574634e46b02 Mon Sep 17 00:00:00 2001 +From: Peter Dimov +Date: Wed, 12 Nov 2014 19:04:29 +0200 +Subject: [PATCH] Fix explicit instantiation regression + +--- + include/boost/smart_ptr/shared_ptr.hpp | 2 +- + test/Jamfile.v2 | 2 ++ + test/array_fail_array_access.cpp | 6 +++++- + test/sp_explicit_inst_test.cpp | 23 +++++++++++++++++++++++ + 4 files changed, 31 insertions(+), 2 deletions(-) + create mode 100644 test/sp_explicit_inst_test.cpp + +diff --git a/include/boost/smart_ptr/shared_ptr.hpp b/include/boost/smart_ptr/shared_ptr.hpp +index 82ece8b..8be92ab 100644 +--- a/boost/smart_ptr/shared_ptr.hpp ++++ b/boost/smart_ptr/shared_ptr.hpp +@@ -655,7 +655,7 @@ public: + BOOST_ASSERT( px != 0 ); + BOOST_ASSERT( i >= 0 && ( i < boost::detail::sp_extent< T >::value || boost::detail::sp_extent< T >::value == 0 ) ); + +- return px[ i ]; ++ return static_cast< typename boost::detail::sp_array_access< T >::type >( px[ i ] ); + } + + element_type * get() const BOOST_NOEXCEPT +diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 +index 027367c..0b51eee 100644 +--- a/libs/smart_ptr/test/Jamfile.v2 ++++ b/libs/smart_ptr/test/Jamfile.v2 +@@ -153,5 +153,7 @@ import testing ; + [ run allocate_shared_array_throws_test.cpp ] + [ run allocate_shared_array_esft_test.cpp ] + [ run allocate_shared_array_args_test.cpp ] ++ ++ [ compile sp_explicit_inst_test.cpp ] + ; + } +diff --git a/test/array_fail_array_access.cpp b/test/array_fail_array_access.cpp +index abfacbe..4f4e3f8 100644 +--- a/libs/smart_ptr/test/array_fail_array_access.cpp ++++ b/libs/smart_ptr/test/array_fail_array_access.cpp +@@ -12,8 +12,12 @@ struct X + { + }; + ++template void f( T & /*t*/ ) ++{ ++} ++ + int main() + { + boost::shared_ptr px( new X ); +- px[ 0 ]; ++ f( px[ 0 ] ); + } +diff --git a/test/sp_explicit_inst_test.cpp b/test/sp_explicit_inst_test.cpp +new file mode 100644 +index 0000000..d8de782 +--- /dev/null ++++ b/libs/smart_ptr/test/sp_explicit_inst_test.cpp +@@ -0,0 +1,23 @@ ++// ++// Explicit instantiations are reported to exist in user code ++// ++// Copyright (c) 2014 Peter Dimov ++// ++// Distributed under the Boost Software License, Version 1.0. ++// See accompanying file LICENSE_1_0.txt or copy at ++// http://www.boost.org/LICENSE_1_0.txt ++// ++ ++#include ++ ++template class boost::shared_ptr< int >; ++ ++struct X ++{ ++}; ++ ++template class boost::shared_ptr< X >; ++ ++int main() ++{ ++} +-- +2.1.0 + diff --git a/boost.spec b/boost.spec index 14c5e24..bf0c253 100644 --- a/boost.spec +++ b/boost.spec @@ -36,7 +36,7 @@ Name: boost Summary: The free peer-reviewed portable C++ source libraries Version: 1.55.0 %define version_enc 1_55_0 -Release: 4%{?dist} +Release: 5%{?dist} License: Boost and MIT and Python %define toplev_dirname %{name}_%{version_enc} @@ -157,6 +157,9 @@ Patch56: boost-1.55.0-xpressive-unused_typedefs.patch # Fixed upstream on Aug 20 05:11:14 2013. Patch57: boost-1.55.0-spirit-unused_typedefs.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1159960 +Patch58: boost-1.54.0-smart_ptr-shared_ptr_at.patch + %bcond_with tests %bcond_with docs_generated @@ -643,6 +646,7 @@ a number of significant features and is now developed independently %patch55 -p1 %patch56 -p1 %patch57 -p1 +%patch58 -p1 # At least python2_version needs to be a macro so that it's visible in # %%install as well. @@ -1245,6 +1249,10 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man1/bjam.1* %changelog +* Wed Nov 12 2014 Petr Machata - 1.55.0-5 +- Fix boost::shared_ptr::operator[], which was ill-formed for + non-array T's. (boost-1.54.0-smart_ptr-shared_ptr_at.patch) + * Tue Aug 26 2014 David Tardon - 1.55.0-4 - rebuild for ICU 53.1 From f6b94db53ca7b88b3529b1892b4a7415aef99f9d Mon Sep 17 00:00:00 2001 From: Petr Machata Date: Thu, 13 Nov 2014 01:59:13 +0100 Subject: [PATCH 2/5] Revert back to before 22e9f44 Not sure what happened, but I certainly didn't intend to rebase to 1.55 in Fedora 20. --- 001-coroutine.patch | 19 ++ 002-date-time.patch | 19 ++ 003-log.patch | 16 ++ boost-1.53.0-attribute.patch | 33 ++++ boost-1.54.0-__GLIBC_HAVE_LONG_LONG.patch | 22 +++ boost-1.54.0-algorithm-unused_typedef.patch | 43 +++++ boost-1.54.0-context-execstack.patch | 129 +++++++++++++ boost-1.54.0-graph-unused_typedef.patch | 11 ++ ...1.54.0-interprocess-atomic_cas32-ppc.patch | 14 ++ boost-1.54.0-lexical_cast-int128.patch | 61 ++++++ boost-1.54.0-math-unused_typedef-2.patch | 52 +++++ boost-1.54.0-math-unused_typedef.patch | 15 ++ boost-1.54.0-mpi-unused_typedef.patch | 11 ++ ...1.54.0-multiprecision-unused_typedef.patch | 148 +++++++++++++++ boost-1.54.0-smart_ptr-shared_ptr_at.patch | 88 --------- ...t-1.54.0-thread-cond_variable_shadow.patch | 104 ++++++++++ boost-1.54.0-thread-link_atomic.patch | 51 +++++ boost-1.54.0-unordered-unused_typedef.patch | 14 ++ boost-1.54.0-xpressive-unused_typedef.patch | 11 ++ boost-1.55.0-archive-init_order.patch | 13 -- ...55.0-program_options-class_attribute.patch | 14 -- boost-1.55.0-spirit-unused_typedefs.patch | 15 -- boost-1.55.0-xpressive-unused_typedefs.patch | 11 -- boost.spec | 177 ++++++++---------- sources | 2 +- 25 files changed, 849 insertions(+), 244 deletions(-) create mode 100644 001-coroutine.patch create mode 100644 002-date-time.patch create mode 100644 003-log.patch create mode 100644 boost-1.53.0-attribute.patch create mode 100644 boost-1.54.0-__GLIBC_HAVE_LONG_LONG.patch create mode 100644 boost-1.54.0-algorithm-unused_typedef.patch create mode 100644 boost-1.54.0-context-execstack.patch create mode 100644 boost-1.54.0-graph-unused_typedef.patch create mode 100644 boost-1.54.0-interprocess-atomic_cas32-ppc.patch create mode 100644 boost-1.54.0-lexical_cast-int128.patch create mode 100644 boost-1.54.0-math-unused_typedef-2.patch create mode 100644 boost-1.54.0-math-unused_typedef.patch create mode 100644 boost-1.54.0-mpi-unused_typedef.patch create mode 100644 boost-1.54.0-multiprecision-unused_typedef.patch delete mode 100644 boost-1.54.0-smart_ptr-shared_ptr_at.patch create mode 100644 boost-1.54.0-thread-cond_variable_shadow.patch create mode 100644 boost-1.54.0-thread-link_atomic.patch create mode 100644 boost-1.54.0-unordered-unused_typedef.patch create mode 100644 boost-1.54.0-xpressive-unused_typedef.patch delete mode 100644 boost-1.55.0-archive-init_order.patch delete mode 100644 boost-1.55.0-program_options-class_attribute.patch delete mode 100644 boost-1.55.0-spirit-unused_typedefs.patch delete mode 100644 boost-1.55.0-xpressive-unused_typedefs.patch diff --git a/001-coroutine.patch b/001-coroutine.patch new file mode 100644 index 0000000..f9b3f4a --- /dev/null +++ b/001-coroutine.patch @@ -0,0 +1,19 @@ +------------------------------------------------------------------------ +r84947 | danieljames | 2013-07-03 22:57:56 +0100 (Wed, 03 Jul 2013) | 4 lines + +coroutine: fix typo in Jamfile + +From [84622], by olli + +------------------------------------------------------------------------ +--- 1_54_0/libs/coroutine/build/Jamfile.v2 (revision 84946) ++++ 1_54_0/libs/coroutine/build/Jamfile.v2 (revision 84947) +@@ -40,7 +40,7 @@ + : detail/standard_stack_allocator_posix.cpp + ; + +-explicit yield_sources ; ++explicit allocator_sources ; + + lib boost_coroutine + : allocator_sources diff --git a/002-date-time.patch b/002-date-time.patch new file mode 100644 index 0000000..a05efeb --- /dev/null +++ b/002-date-time.patch @@ -0,0 +1,19 @@ +------------------------------------------------------------------------ +r84948 | danieljames | 2013-07-03 23:02:30 +0100 (Wed, 03 Jul 2013) | 4 lines + +In C++11 the shared_ptr -> bool conversion is explicit. In custom time zone code, make the cast explicit. Fixes compilation failure in C++11 + +From [84626], by marshall. + +------------------------------------------------------------------------ +--- 1_54_0/boost/date_time/local_time/custom_time_zone.hpp (revision 84947) ++++ 1_54_0/boost/date_time/local_time/custom_time_zone.hpp (revision 84948) +@@ -64,7 +64,7 @@ + //! True if zone uses daylight savings adjustments + virtual bool has_dst() const + { +- return (dst_calc_rules_); //if calc_rule is set the tz has dst ++ return (bool) dst_calc_rules_; //if calc_rule is set the tz has dst + } + //! Local time that DST starts -- NADT if has_dst is false + virtual posix_time::ptime dst_local_start_time(gregorian::greg_year y) const diff --git a/003-log.patch b/003-log.patch new file mode 100644 index 0000000..a67c91f --- /dev/null +++ b/003-log.patch @@ -0,0 +1,16 @@ +------------------------------------------------------------------------ +r84966 | andysem | 2013-07-07 11:43:20 +0100 (Sun, 07 Jul 2013) | 1 line + +Backported fix for BOOST_LOG_ONCE_BLOCK_FLAG macro definition. +------------------------------------------------------------------------ +--- 1_54_0/boost/log/utility/once_block.hpp (revision 84965) ++++ 1_54_0/boost/log/utility/once_block.hpp (revision 84966) +@@ -176,7 +176,7 @@ + * been executed. + */ + #define BOOST_LOG_ONCE_BLOCK_FLAG(flag_var)\ +- BOOST_LOG_ONCE_BLOCK_INTERNAL(\ ++ BOOST_LOG_ONCE_BLOCK_FLAG_INTERNAL(\ + flag_var,\ + BOOST_LOG_UNIQUE_IDENTIFIER_NAME(_boost_log_once_block_sentry_)) + diff --git a/boost-1.53.0-attribute.patch b/boost-1.53.0-attribute.patch new file mode 100644 index 0000000..aaa0f5d --- /dev/null +++ b/boost-1.53.0-attribute.patch @@ -0,0 +1,33 @@ +diff -urp boost_1_48_0~/boost/config/compiler/gcc.hpp boost_1_48_0/boost/config/compiler/gcc.hpp +--- boost_1_48_0~/boost/config/compiler/gcc.hpp 2012-01-16 16:15:14.643239525 +0100 ++++ boost_1_48_0/boost/config/compiler/gcc.hpp 2012-01-16 16:21:24.072247987 +0100 +@@ -120,13 +120,13 @@ + // _WIN32 or one of its variant spellings. Note that Cygwin is a POSIX environment, + // so does not define _WIN32 or its variants. + # define BOOST_HAS_DECLSPEC +-# define BOOST_SYMBOL_EXPORT __attribute__((dllexport)) +-# define BOOST_SYMBOL_IMPORT __attribute__((dllimport)) ++# define BOOST_SYMBOL_EXPORT __attribute__((__dllexport__)) ++# define BOOST_SYMBOL_IMPORT __attribute__((__dllimport__)) + # else +-# define BOOST_SYMBOL_EXPORT __attribute__((visibility("default"))) ++# define BOOST_SYMBOL_EXPORT __attribute__((__visibility__("default"))) + # define BOOST_SYMBOL_IMPORT + # endif +-# define BOOST_SYMBOL_VISIBLE __attribute__((visibility("default"))) ++# define BOOST_SYMBOL_VISIBLE __attribute__((__visibility__("default"))) + #else + // config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined + # define BOOST_SYMBOL_EXPORT +diff -urp boost_1_48_0~/boost/gil/gil_config.hpp boost_1_48_0/boost/gil/gil_config.hpp +--- boost_1_48_0~/boost/gil/gil_config.hpp 2012-01-16 16:15:29.883239865 +0100 ++++ boost_1_48_0/boost/gil/gil_config.hpp 2012-01-16 16:17:49.096243036 +0100 +@@ -32,7 +32,7 @@ + #if defined(_MSC_VER) + # define GIL_FORCEINLINE __forceinline + #elif defined(__GNUC__) && __GNUC__ > 3 +-# define GIL_FORCEINLINE inline __attribute__ ((always_inline)) ++# define GIL_FORCEINLINE inline __attribute__ ((__always_inline__)) + #else + # define GIL_FORCEINLINE inline + #endif diff --git a/boost-1.54.0-__GLIBC_HAVE_LONG_LONG.patch b/boost-1.54.0-__GLIBC_HAVE_LONG_LONG.patch new file mode 100644 index 0000000..4025b9f --- /dev/null +++ b/boost-1.54.0-__GLIBC_HAVE_LONG_LONG.patch @@ -0,0 +1,22 @@ +diff -up boost_1_54_0/boost/cstdint.hpp\~ boost_1_54_0/boost/cstdint.hpp +--- boost_1_54_0/boost/cstdint.hpp~ 2013-03-09 14:55:05.000000000 -0800 ++++ boost_1_54_0/boost/cstdint.hpp 2013-07-15 13:19:07.344108660 -0700 +@@ -41,7 +41,15 @@ + // so we disable use of stdint.h when GLIBC does not define __GLIBC_HAVE_LONG_LONG. + // See https://svn.boost.org/trac/boost/ticket/3548 and http://sources.redhat.com/bugzilla/show_bug.cgi?id=10990 + // +-#if defined(BOOST_HAS_STDINT_H) && (!defined(__GLIBC__) || defined(__GLIBC_HAVE_LONG_LONG)) ++// This define has been dropped altogether in GLIBC 2.17. As of then, ++// support for long long is part of baseline requirements, and ++// [u]int64_t is always defined. See here: ++// http://sourceware.org/ml/libc-alpha/2013-01/msg00440.html ++// ++#if defined(BOOST_HAS_STDINT_H) \ ++ && (!defined(__GLIBC__) \ ++ || defined(__GLIBC_HAVE_LONG_LONG) \ ++ || (defined __GLIBC_PREREQ && __GLIBC_PREREQ(2,17))) + + // The following #include is an implementation artifact; not part of interface. + # ifdef __hpux + +Diff finished. Mon Jul 15 13:19:50 2013 diff --git a/boost-1.54.0-algorithm-unused_typedef.patch b/boost-1.54.0-algorithm-unused_typedef.patch new file mode 100644 index 0000000..6bc8fe1 --- /dev/null +++ b/boost-1.54.0-algorithm-unused_typedef.patch @@ -0,0 +1,43 @@ +diff -urp boost_1_54_0-orig/boost/algorithm/string/detail/finder.hpp boost_1_54_0/boost/algorithm/string/detail/finder.hpp +--- boost_1_54_0-orig/boost/algorithm/string/detail/finder.hpp 2013-07-23 00:47:43.933889672 +0200 ++++ boost_1_54_0/boost/algorithm/string/detail/finder.hpp 2013-07-23 00:50:40.324958667 +0200 +@@ -142,7 +142,6 @@ namespace boost { + ForwardIteratorT End, + std::forward_iterator_tag ) const + { +- typedef ForwardIteratorT input_iterator_type; + typedef iterator_range result_type; + + first_finder_type first_finder( +@@ -263,7 +262,6 @@ namespace boost { + ForwardIteratorT End, + unsigned int N) const + { +- typedef ForwardIteratorT input_iterator_type; + typedef iterator_range result_type; + + // Sanity check +@@ -298,7 +296,6 @@ namespace boost { + ForwardIteratorT End, + unsigned int N) const + { +- typedef ForwardIteratorT input_iterator_type; + typedef iterator_range result_type; + + // Sanity check +@@ -362,7 +359,6 @@ namespace boost { + unsigned int N, + std::random_access_iterator_tag ) + { +- typedef ForwardIteratorT input_iterator_type; + typedef iterator_range result_type; + + if ( (End<=Begin) || ( static_cast(End-Begin) < N ) ) +@@ -436,7 +432,6 @@ namespace boost { + unsigned int N, + std::random_access_iterator_tag ) + { +- typedef ForwardIteratorT input_iterator_type; + typedef iterator_range result_type; + + if ( (End<=Begin) || ( static_cast(End-Begin) < N ) ) diff --git a/boost-1.54.0-context-execstack.patch b/boost-1.54.0-context-execstack.patch new file mode 100644 index 0000000..8bf3eb1 --- /dev/null +++ b/boost-1.54.0-context-execstack.patch @@ -0,0 +1,129 @@ +diff -up boost-1.54.0/libs/context/src/asm/jump_arm_aapcs_elf_gas.S~ boost-1.54.0/libs/context/src/asm/jump_arm_aapcs_elf_gas.S +--- boost-1.54.0/libs/context/src/asm/jump_arm_aapcs_elf_gas.S~ 2012-12-21 02:22:09.000000000 -0800 ++++ boost-1.54.0/libs/context/src/asm/jump_arm_aapcs_elf_gas.S 2013-07-15 11:11:46.772543152 -0700 +@@ -71,3 +71,6 @@ jump_fcontext: + @ and as first arg in context function + ldmia a2, {v1-v8,sp-pc} @ restore v1-V8,SP-PC + .size jump_fcontext,.-jump_fcontext ++ ++/* Mark that we don't need executable stack. */ ++.section .note.GNU-stack,"",@progbits +diff -up boost-1.54.0/libs/context/src/asm/jump_i386_sysv_elf_gas.S~ boost-1.54.0/libs/context/src/asm/jump_i386_sysv_elf_gas.S +--- boost-1.54.0/libs/context/src/asm/jump_i386_sysv_elf_gas.S~ 2012-09-18 02:06:47.000000000 -0700 ++++ boost-1.54.0/libs/context/src/asm/jump_i386_sysv_elf_gas.S 2013-07-15 11:10:32.829144835 -0700 +@@ -70,3 +70,6 @@ jump_fcontext: + + jmp *%edx /* indirect jump to context */ + .size jump_fcontext,.-jump_fcontext ++ ++/* Mark that we don't need executable stack. */ ++.section .note.GNU-stack,"",@progbits +diff -up boost-1.54.0/libs/context/src/asm/jump_ppc32_sysv_elf_gas.S~ boost-1.54.0/libs/context/src/asm/jump_ppc32_sysv_elf_gas.S +--- boost-1.54.0/libs/context/src/asm/jump_ppc32_sysv_elf_gas.S~ 2012-11-27 23:52:08.000000000 -0800 ++++ boost-1.54.0/libs/context/src/asm/jump_ppc32_sysv_elf_gas.S 2013-07-15 11:10:57.848279687 -0700 +@@ -178,3 +178,6 @@ jump_fcontext: + + bctr # jump to context + .size jump_fcontext, .-jump_fcontext ++ ++/* Mark that we don't need executable stack. */ ++.section .note.GNU-stack,"",@progbits +diff -up boost-1.54.0/libs/context/src/asm/jump_ppc64_sysv_elf_gas.S~ boost-1.54.0/libs/context/src/asm/jump_ppc64_sysv_elf_gas.S +--- boost-1.54.0/libs/context/src/asm/jump_ppc64_sysv_elf_gas.S~ 2012-11-27 23:52:08.000000000 -0800 ++++ boost-1.54.0/libs/context/src/asm/jump_ppc64_sysv_elf_gas.S 2013-07-15 11:11:07.189330597 -0700 +@@ -199,3 +199,6 @@ jump_fcontext: + + bctr # jump to context + .size .jump_fcontext, .-.jump_fcontext ++ ++/* Mark that we don't need executable stack. */ ++.section .note.GNU-stack,"",@progbits +diff -up boost-1.54.0/libs/context/src/asm/jump_x86_64_sysv_elf_gas.S~ boost-1.54.0/libs/context/src/asm/jump_x86_64_sysv_elf_gas.S +--- boost-1.54.0/libs/context/src/asm/jump_x86_64_sysv_elf_gas.S~ 2012-09-18 02:06:47.000000000 -0700 ++++ boost-1.54.0/libs/context/src/asm/jump_x86_64_sysv_elf_gas.S 2013-07-15 11:09:49.724912924 -0700 +@@ -80,3 +80,6 @@ jump_fcontext: + + jmp *%rcx /* indirect jump to context */ + .size jump_fcontext,.-jump_fcontext ++ ++/* Mark that we don't need executable stack. */ ++.section .note.GNU-stack,"",@progbits +diff -up boost-1.54.0/libs/context/src/asm/make_arm_aapcs_elf_gas.S~ boost-1.54.0/libs/context/src/asm/make_arm_aapcs_elf_gas.S +--- boost-1.54.0/libs/context/src/asm/make_arm_aapcs_elf_gas.S~ 2013-01-15 01:51:39.000000000 -0800 ++++ boost-1.54.0/libs/context/src/asm/make_arm_aapcs_elf_gas.S 2013-07-15 11:11:38.626499289 -0700 +@@ -74,3 +74,6 @@ finish: + mov a1, #0 @ exit code is zero + bl _exit@PLT @ exit application + .size make_fcontext,.-make_fcontext ++ ++/* Mark that we don't need executable stack. */ ++.section .note.GNU-stack,"",@progbits +diff -up boost-1.54.0/libs/context/src/asm/make_i386_sysv_elf_gas.S~ boost-1.54.0/libs/context/src/asm/make_i386_sysv_elf_gas.S +--- boost-1.54.0/libs/context/src/asm/make_i386_sysv_elf_gas.S~ 2013-06-07 08:38:10.000000000 -0700 ++++ boost-1.54.0/libs/context/src/asm/make_i386_sysv_elf_gas.S 2013-07-15 11:10:40.333185226 -0700 +@@ -75,3 +75,6 @@ finish: + call _exit@PLT /* exit application */ + hlt + .size make_fcontext,.-make_fcontext ++ ++/* Mark that we don't need executable stack. */ ++.section .note.GNU-stack,"",@progbits +diff -up boost-1.54.0/libs/context/src/asm/make_mips32_o32_elf_gas.S~ boost-1.54.0/libs/context/src/asm/make_mips32_o32_elf_gas.S +--- boost-1.54.0/libs/context/src/asm/make_mips32_o32_elf_gas.S~ 2012-11-27 23:52:08.000000000 -0800 ++++ boost-1.54.0/libs/context/src/asm/make_mips32_o32_elf_gas.S 2013-07-15 11:12:34.392799546 -0700 +@@ -83,3 +83,6 @@ finish: + jalr $t9 # exit application + .end make_fcontext + .size make_fcontext, .-make_fcontext ++ ++/* Mark that we don't need executable stack. */ ++.section .note.GNU-stack,"",@progbits +diff -up boost-1.54.0/libs/context/src/asm/make_ppc32_sysv_elf_gas.S~ boost-1.54.0/libs/context/src/asm/make_ppc32_sysv_elf_gas.S +--- boost-1.54.0/libs/context/src/asm/make_ppc32_sysv_elf_gas.S~ 2013-05-08 22:40:43.000000000 -0700 ++++ boost-1.54.0/libs/context/src/asm/make_ppc32_sysv_elf_gas.S 2013-07-15 11:11:20.247400344 -0700 +@@ -109,3 +109,6 @@ finish: + li %r3, 0 # exit code is zero + bl _exit@plt # exit application + .size make_fcontext, .-make_fcontext ++ ++/* Mark that we don't need executable stack. */ ++.section .note.GNU-stack,"",@progbits +diff -up boost-1.54.0/libs/context/src/asm/make_ppc64_sysv_elf_gas.S~ boost-1.54.0/libs/context/src/asm/make_ppc64_sysv_elf_gas.S +--- boost-1.54.0/libs/context/src/asm/make_ppc64_sysv_elf_gas.S~ 2013-05-08 22:40:43.000000000 -0700 ++++ boost-1.54.0/libs/context/src/asm/make_ppc64_sysv_elf_gas.S 2013-07-15 11:11:13.400363259 -0700 +@@ -131,3 +131,6 @@ finish: + bl _exit # exit application + nop + .size .make_fcontext, .-.make_fcontext ++ ++/* Mark that we don't need executable stack. */ ++.section .note.GNU-stack,"",@progbits +diff -up boost-1.54.0/libs/context/src/asm/make_sparc64_sysv_elf_gas.S~ boost-1.54.0/libs/context/src/asm/make_sparc64_sysv_elf_gas.S +--- boost-1.54.0/libs/context/src/asm/make_sparc64_sysv_elf_gas.S~ 2013-02-12 04:55:22.000000000 -0800 ++++ boost-1.54.0/libs/context/src/asm/make_sparc64_sysv_elf_gas.S 2013-07-15 11:12:41.643838416 -0700 +@@ -84,3 +84,6 @@ finish: + nop + + .size make_fcontext,.-make_fcontext ++ ++/* Mark that we don't need executable stack. */ ++.section .note.GNU-stack,"",@progbits +diff -up boost-1.54.0/libs/context/src/asm/make_sparc_sysv_elf_gas.S~ boost-1.54.0/libs/context/src/asm/make_sparc_sysv_elf_gas.S +--- boost-1.54.0/libs/context/src/asm/make_sparc_sysv_elf_gas.S~ 2013-02-12 04:55:22.000000000 -0800 ++++ boost-1.54.0/libs/context/src/asm/make_sparc_sysv_elf_gas.S 2013-07-15 11:12:48.733876794 -0700 +@@ -80,3 +80,6 @@ finish: + nop + + .size make_fcontext,.-make_fcontext ++ ++/* Mark that we don't need executable stack. */ ++.section .note.GNU-stack,"",@progbits +diff -up boost-1.54.0/libs/context/src/asm/make_x86_64_sysv_elf_gas.S~ boost-1.54.0/libs/context/src/asm/make_x86_64_sysv_elf_gas.S +--- boost-1.54.0/libs/context/src/asm/make_x86_64_sysv_elf_gas.S~ 2012-11-29 23:38:52.000000000 -0800 ++++ boost-1.54.0/libs/context/src/asm/make_x86_64_sysv_elf_gas.S 2013-07-15 11:10:06.151001366 -0700 +@@ -72,3 +72,5 @@ finish: + hlt + .size make_fcontext,.-make_fcontext + ++/* Mark that we don't need executable stack. */ ++.section .note.GNU-stack,"",@progbits diff --git a/boost-1.54.0-graph-unused_typedef.patch b/boost-1.54.0-graph-unused_typedef.patch new file mode 100644 index 0000000..62dee44 --- /dev/null +++ b/boost-1.54.0-graph-unused_typedef.patch @@ -0,0 +1,11 @@ +diff -urp boost_1_54_0-orig/boost/graph/breadth_first_search.hpp boost_1_54_0/boost/graph/breadth_first_search.hpp +--- boost_1_54_0-orig/boost/graph/breadth_first_search.hpp 2013-07-23 00:47:43.418886551 +0200 ++++ boost_1_54_0/boost/graph/breadth_first_search.hpp 2013-07-23 00:50:40.339958756 +0200 +@@ -64,7 +64,6 @@ namespace boost { + BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept )); + typedef graph_traits GTraits; + typedef typename GTraits::vertex_descriptor Vertex; +- typedef typename GTraits::edge_descriptor Edge; + BOOST_CONCEPT_ASSERT(( BFSVisitorConcept )); + BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept )); + typedef typename property_traits::value_type ColorValue; diff --git a/boost-1.54.0-interprocess-atomic_cas32-ppc.patch b/boost-1.54.0-interprocess-atomic_cas32-ppc.patch new file mode 100644 index 0000000..e5268d1 --- /dev/null +++ b/boost-1.54.0-interprocess-atomic_cas32-ppc.patch @@ -0,0 +1,14 @@ +diff -up boost_1_54_0/boost/interprocess/detail/atomic.hpp\~ boost_1_54_0/boost/interprocess/detail/atomic.hpp +--- boost_1_54_0/boost/interprocess/detail/atomic.hpp~ 2012-09-24 14:17:34.000000000 +0200 ++++ boost_1_54_0/boost/interprocess/detail/atomic.hpp 2013-08-29 16:36:51.682606594 +0200 +@@ -213,7 +213,7 @@ inline boost::uint32_t atomic_cas32 + "bne- 1b\n\t" + "2:" + : "=&r"(prev) +- : "b" (mem), "r"(cmp), "r" (with) ++ : "b" (mem), "r" (with), "r" (cmp) + : "cc", "memory"); + return prev; + } + +Diff finished. Thu Aug 29 16:36:55 2013 diff --git a/boost-1.54.0-lexical_cast-int128.patch b/boost-1.54.0-lexical_cast-int128.patch new file mode 100644 index 0000000..8e6c63c --- /dev/null +++ b/boost-1.54.0-lexical_cast-int128.patch @@ -0,0 +1,61 @@ +diff -up boost/lexical_cast.hpp\~ boost/lexical_cast.hpp +--- boost/lexical_cast.hpp~ 2013-07-27 12:03:21.000000000 +0200 ++++ boost/lexical_cast.hpp 2013-07-30 19:30:54.969548144 +0200 +@@ -69,11 +69,6 @@ + throw_exception(bad_lexical_cast(typeid(Source), typeid(Target))) + #endif + +-#if (defined(BOOST_LCAST_HAS_INT128) && !defined(__GNUC__)) || GCC_VERSION > 40700 +-#define BOOST_LCAST_HAS_INT128 +-#endif +- +- + namespace boost + { + // exception used to indicate runtime lexical_cast failure +@@ -316,7 +311,7 @@ namespace boost { + > {}; + #endif + +-#ifdef BOOST_LCAST_HAS_INT128 ++#ifdef BOOST_HAS_INT128 + template <> struct stream_char_common< boost::int128_type >: public boost::mpl::identity< char > {}; + template <> struct stream_char_common< boost::uint128_type >: public boost::mpl::identity< char > {}; + #endif +@@ -613,7 +608,7 @@ namespace boost { + BOOST_LCAST_DEF(unsigned __int64) + BOOST_LCAST_DEF( __int64) + #endif +-#ifdef BOOST_LCAST_HAS_INT128 ++#ifdef BOOST_HAS_INT128 + BOOST_LCAST_DEF(boost::int128_type) + BOOST_LCAST_DEF(boost::uint128_type) + #endif +@@ -1827,7 +1822,7 @@ namespace boost { + bool operator<<( __int64 n) { return shl_signed(n); } + #endif + +-#ifdef BOOST_LCAST_HAS_INT128 ++#ifdef BOOST_HAS_INT128 + bool operator<<(const boost::uint128_type& n) { start = lcast_put_unsigned(n, finish); return true; } + bool operator<<(const boost::int128_type& n) { return shl_signed(n); } + #endif +@@ -2039,7 +2034,7 @@ namespace boost { + bool operator>>(__int64& output) { return shr_signed(output); } + #endif + +-#ifdef BOOST_LCAST_HAS_INT128 ++#ifdef BOOST_HAS_INT128 + bool operator>>(boost::uint128_type& output) { return shr_unsigned(output); } + bool operator>>(boost::int128_type& output) { return shr_signed(output); } + #endif +@@ -2719,7 +2714,6 @@ namespace boost { + + #undef BOOST_LCAST_THROW_BAD_CAST + #undef BOOST_LCAST_NO_WCHAR_T +-#undef BOOST_LCAST_HAS_INT128 + + #endif // BOOST_LEXICAL_CAST_INCLUDED + + +Diff finished. Tue Jul 30 19:30:58 2013 diff --git a/boost-1.54.0-math-unused_typedef-2.patch b/boost-1.54.0-math-unused_typedef-2.patch new file mode 100644 index 0000000..d2ab628 --- /dev/null +++ b/boost-1.54.0-math-unused_typedef-2.patch @@ -0,0 +1,52 @@ +Index: boost/math/special_functions/airy.hpp +=================================================================== +--- boost/math/special_functions/airy.hpp (revision 85073) ++++ boost/math/special_functions/airy.hpp (working copy) +@@ -340,13 +340,6 @@ + inline T airy_ai_zero(unsigned m, const Policy& pol) + { + BOOST_FPU_EXCEPTION_GUARD +- typedef typename policies::evaluation::type value_type; +- typedef typename policies::normalise< +- Policy, +- policies::promote_float, +- policies::promote_double, +- policies::discrete_quantile<>, +- policies::assert_undefined<> >::type forwarding_policy; + BOOST_STATIC_ASSERT_MSG(false == std::numeric_limits::is_integer, "Airy return type must be a floating-point type."); + return policies::checked_narrowing_cast(detail::airy_ai_zero_imp(m, pol), "boost::math::airy_ai_zero<%1%>(unsigned)"); + } +@@ -388,13 +381,6 @@ + inline T airy_bi_zero(unsigned m, const Policy& pol) + { + BOOST_FPU_EXCEPTION_GUARD +- typedef typename policies::evaluation::type value_type; +- typedef typename policies::normalise< +- Policy, +- policies::promote_float, +- policies::promote_double, +- policies::discrete_quantile<>, +- policies::assert_undefined<> >::type forwarding_policy; + BOOST_STATIC_ASSERT_MSG(false == std::numeric_limits::is_integer, "Airy return type must be a floating-point type."); + return policies::checked_narrowing_cast(detail::airy_bi_zero_imp(m, pol), "boost::math::airy_bi_zero<%1%>(unsigned)"); + } +Index: boost/math/special_functions/beta.hpp +=================================================================== +--- boost/math/special_functions/beta.hpp (revision 85073) ++++ boost/math/special_functions/beta.hpp (working copy) +@@ -1331,7 +1331,6 @@ + BOOST_FPU_EXCEPTION_GUARD + typedef typename tools::promote_args::type result_type; + typedef typename policies::evaluation::type value_type; +- typedef typename lanczos::lanczos::type evaluation_type; + typedef typename policies::normalise< + Policy, + policies::promote_float, +@@ -1349,7 +1348,6 @@ + BOOST_FPU_EXCEPTION_GUARD + typedef typename tools::promote_args::type result_type; + typedef typename policies::evaluation::type value_type; +- typedef typename lanczos::lanczos::type evaluation_type; + typedef typename policies::normalise< + Policy, + policies::promote_float, diff --git a/boost-1.54.0-math-unused_typedef.patch b/boost-1.54.0-math-unused_typedef.patch new file mode 100644 index 0000000..f413279 --- /dev/null +++ b/boost-1.54.0-math-unused_typedef.patch @@ -0,0 +1,15 @@ +diff -up boost_1_54_0/boost/math/distributions/inverse_gaussian.hpp~ boost_1_54_0/boost/math/distributions/inverse_gaussian.hpp +--- boost_1_54_0/boost/math/distributions/inverse_gaussian.hpp~ 2012-09-07 01:43:19.000000000 -0700 ++++ boost_1_54_0/boost/math/distributions/inverse_gaussian.hpp 2013-07-22 03:42:15.216142075 -0700 +@@ -285,10 +285,8 @@ namespace detail + + // Define the distribution, using gamma_nooverflow: + typedef gamma_distribution gamma_nooverflow; ++ gamma_nooverflow g(static_cast(0.5), static_cast(1.)); + +- gamma_distribution g(static_cast(0.5), static_cast(1.)); +- +- // gamma_nooverflow g(static_cast(0.5), static_cast(1.)); + // R qgamma(0.2, 0.5, 1) 0.0320923 + RealType qg = quantile(complement(g, p)); + //RealType qg1 = qgamma(1.- p, 0.5, 1.0, true, false); diff --git a/boost-1.54.0-mpi-unused_typedef.patch b/boost-1.54.0-mpi-unused_typedef.patch new file mode 100644 index 0000000..3a01d61 --- /dev/null +++ b/boost-1.54.0-mpi-unused_typedef.patch @@ -0,0 +1,11 @@ +diff -urp boost_1_54_0-orig/libs/mpi/src/communicator.cpp boost_1_54_0/libs/mpi/src/communicator.cpp +--- boost_1_54_0-orig/libs/mpi/src/communicator.cpp 2013-07-23 00:48:17.317091987 +0200 ++++ boost_1_54_0/libs/mpi/src/communicator.cpp 2013-07-23 00:50:40.722961078 +0200 +@@ -118,7 +118,6 @@ optional communicator::iprobe(in + + status communicator::probe(int source, int tag) const + { +- typedef optional result_type; + + status stat; + BOOST_MPI_CHECK_RESULT(MPI_Probe, diff --git a/boost-1.54.0-multiprecision-unused_typedef.patch b/boost-1.54.0-multiprecision-unused_typedef.patch new file mode 100644 index 0000000..af245af --- /dev/null +++ b/boost-1.54.0-multiprecision-unused_typedef.patch @@ -0,0 +1,148 @@ +diff -up boost_1_54_0/boost/multiprecision/detail/functions/constants.hpp~ boost_1_54_0/boost/multiprecision/detail/functions/constants.hpp +--- boost_1_54_0/boost/multiprecision/detail/functions/constants.hpp~ 2012-09-20 09:04:02.000000000 -0700 ++++ boost_1_54_0/boost/multiprecision/detail/functions/constants.hpp 2013-07-22 03:31:01.145084522 -0700 +@@ -81,7 +81,6 @@ template + void calc_e(T& result, unsigned digits) + { + typedef typename mpl::front::type ui_type; +- typedef typename mpl::front::type real_type; + // + // 1100 digits in string form: + // +diff -up boost_1_54_0/boost/multiprecision/detail/functions/pow.hpp~ boost_1_54_0/boost/multiprecision/detail/functions/pow.hpp +--- boost_1_54_0/boost/multiprecision/detail/functions/pow.hpp~ 2013-03-31 09:34:50.000000000 -0700 ++++ boost_1_54_0/boost/multiprecision/detail/functions/pow.hpp 2013-07-22 03:43:12.495489757 -0700 +@@ -142,10 +142,6 @@ void hyp1F0(T& H1F0, const T& a, const T + // There are no checks on input range or parameter boundaries. + + typedef typename boost::multiprecision::detail::canonical::type si_type; +- typedef typename boost::multiprecision::detail::canonical::type ui_type; +- typedef typename T::exponent_type exp_type; +- typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; +- typedef typename mpl::front::type fp_type; + + BOOST_ASSERT(&H1F0 != &x); + BOOST_ASSERT(&H1F0 != &a); +@@ -200,7 +196,6 @@ void eval_exp(T& result, const T& x) + typedef typename boost::multiprecision::detail::canonical::type si_type; + typedef typename T::exponent_type exp_type; + typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; +- typedef typename boost::multiprecision::detail::canonical::type float_type; + + // Handle special arguments. + int type = eval_fpclassify(x); +@@ -326,7 +321,6 @@ void eval_log(T& result, const T& arg) + // then let y = x - 1 and compute: + // log(x) = log(2) * n + log1p(1 + y) + // +- typedef typename boost::multiprecision::detail::canonical::type si_type; + typedef typename boost::multiprecision::detail::canonical::type ui_type; + typedef typename T::exponent_type exp_type; + typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; +@@ -409,9 +403,6 @@ inline void eval_pow(T& result, const T& + { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_floating_point, "The pow function is only valid for floating point types."); + typedef typename boost::multiprecision::detail::canonical::type si_type; +- typedef typename boost::multiprecision::detail::canonical::type ui_type; +- typedef typename T::exponent_type exp_type; +- typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; + typedef typename mpl::front::type fp_type; + + if((&result == &x) || (&result == &a)) +@@ -595,10 +586,7 @@ namespace detail{ + template + void sinhcosh(const T& x, T* p_sinh, T* p_cosh) + { +- typedef typename boost::multiprecision::detail::canonical::type si_type; + typedef typename boost::multiprecision::detail::canonical::type ui_type; +- typedef typename T::exponent_type exp_type; +- typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; + typedef typename mpl::front::type fp_type; + + switch(eval_fpclassify(x)) +diff -up boost_1_54_0/boost/multiprecision/detail/functions/trig.hpp~ boost_1_54_0/boost/multiprecision/detail/functions/trig.hpp +--- boost_1_54_0/boost/multiprecision/detail/functions/trig.hpp~ 2013-03-31 09:34:50.000000000 -0700 ++++ boost_1_54_0/boost/multiprecision/detail/functions/trig.hpp 2013-07-22 03:44:30.512963273 -0700 +@@ -17,9 +17,6 @@ void hyp0F1(T& result, const T& b, const + { + typedef typename boost::multiprecision::detail::canonical::type si_type; + typedef typename boost::multiprecision::detail::canonical::type ui_type; +- typedef typename T::exponent_type exp_type; +- typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; +- typedef typename mpl::front::type fp_type; + + // Compute the series representation of Hypergeometric0F1 taken from + // http://functions.wolfram.com/HypergeometricFunctions/Hypergeometric0F1/06/01/01/ +@@ -82,8 +79,6 @@ void eval_sin(T& result, const T& x) + + typedef typename boost::multiprecision::detail::canonical::type si_type; + typedef typename boost::multiprecision::detail::canonical::type ui_type; +- typedef typename T::exponent_type exp_type; +- typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; + typedef typename mpl::front::type fp_type; + + switch(eval_fpclassify(x)) +@@ -228,8 +223,6 @@ void eval_cos(T& result, const T& x) + + typedef typename boost::multiprecision::detail::canonical::type si_type; + typedef typename boost::multiprecision::detail::canonical::type ui_type; +- typedef typename T::exponent_type exp_type; +- typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; + typedef typename mpl::front::type fp_type; + + switch(eval_fpclassify(x)) +@@ -381,11 +374,7 @@ void hyp2F1(T& result, const T& a, const + // Abramowitz and Stegun 15.1.1. + // There are no checks on input range or parameter boundaries. + +- typedef typename boost::multiprecision::detail::canonical::type si_type; + typedef typename boost::multiprecision::detail::canonical::type ui_type; +- typedef typename T::exponent_type exp_type; +- typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; +- typedef typename mpl::front::type fp_type; + + T x_pow_n_div_n_fact(x); + T pochham_a (a); +@@ -443,10 +432,7 @@ template + void eval_asin(T& result, const T& x) + { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_floating_point, "The asin function is only valid for floating point types."); +- typedef typename boost::multiprecision::detail::canonical::type si_type; + typedef typename boost::multiprecision::detail::canonical::type ui_type; +- typedef typename T::exponent_type exp_type; +- typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; + typedef typename mpl::front::type fp_type; + + if(&result == &x) +@@ -597,8 +583,6 @@ void eval_atan(T& result, const T& x) + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_floating_point, "The atan function is only valid for floating point types."); + typedef typename boost::multiprecision::detail::canonical::type si_type; + typedef typename boost::multiprecision::detail::canonical::type ui_type; +- typedef typename T::exponent_type exp_type; +- typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; + typedef typename mpl::front::type fp_type; + + switch(eval_fpclassify(x)) +@@ -699,11 +683,7 @@ void eval_atan2(T& result, const T& y, c + return; + } + +- typedef typename boost::multiprecision::detail::canonical::type si_type; + typedef typename boost::multiprecision::detail::canonical::type ui_type; +- typedef typename T::exponent_type exp_type; +- typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; +- typedef typename mpl::front::type fp_type; + + switch(eval_fpclassify(y)) + { +diff -up boost_1_54_0/boost/multiprecision/detail/generic_interconvert.hpp~ boost_1_54_0/boost/multiprecision/detail/generic_interconvert.hpp +--- boost_1_54_0/boost/multiprecision/detail/generic_interconvert.hpp~ 2012-12-20 09:42:14.000000000 -0800 ++++ boost_1_54_0/boost/multiprecision/detail/generic_interconvert.hpp 2013-07-22 03:38:51.614906286 -0700 +@@ -191,7 +191,6 @@ void generic_interconvert(To& to, const + template + void generic_interconvert(To& to, const From& from, const mpl::int_& /*to_type*/, const mpl::int_& /*from_type*/) + { +- typedef typename component_type >::type from_component_type; + typedef typename component_type >::type to_component_type; + + number t(from); diff --git a/boost-1.54.0-smart_ptr-shared_ptr_at.patch b/boost-1.54.0-smart_ptr-shared_ptr_at.patch deleted file mode 100644 index 675e13d..0000000 --- a/boost-1.54.0-smart_ptr-shared_ptr_at.patch +++ /dev/null @@ -1,88 +0,0 @@ -From f65c57d9d2a4f535e36c96b7f563574634e46b02 Mon Sep 17 00:00:00 2001 -From: Peter Dimov -Date: Wed, 12 Nov 2014 19:04:29 +0200 -Subject: [PATCH] Fix explicit instantiation regression - ---- - include/boost/smart_ptr/shared_ptr.hpp | 2 +- - test/Jamfile.v2 | 2 ++ - test/array_fail_array_access.cpp | 6 +++++- - test/sp_explicit_inst_test.cpp | 23 +++++++++++++++++++++++ - 4 files changed, 31 insertions(+), 2 deletions(-) - create mode 100644 test/sp_explicit_inst_test.cpp - -diff --git a/include/boost/smart_ptr/shared_ptr.hpp b/include/boost/smart_ptr/shared_ptr.hpp -index 82ece8b..8be92ab 100644 ---- a/boost/smart_ptr/shared_ptr.hpp -+++ b/boost/smart_ptr/shared_ptr.hpp -@@ -655,7 +655,7 @@ public: - BOOST_ASSERT( px != 0 ); - BOOST_ASSERT( i >= 0 && ( i < boost::detail::sp_extent< T >::value || boost::detail::sp_extent< T >::value == 0 ) ); - -- return px[ i ]; -+ return static_cast< typename boost::detail::sp_array_access< T >::type >( px[ i ] ); - } - - element_type * get() const BOOST_NOEXCEPT -diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 -index 027367c..0b51eee 100644 ---- a/libs/smart_ptr/test/Jamfile.v2 -+++ b/libs/smart_ptr/test/Jamfile.v2 -@@ -153,5 +153,7 @@ import testing ; - [ run allocate_shared_array_throws_test.cpp ] - [ run allocate_shared_array_esft_test.cpp ] - [ run allocate_shared_array_args_test.cpp ] -+ -+ [ compile sp_explicit_inst_test.cpp ] - ; - } -diff --git a/test/array_fail_array_access.cpp b/test/array_fail_array_access.cpp -index abfacbe..4f4e3f8 100644 ---- a/libs/smart_ptr/test/array_fail_array_access.cpp -+++ b/libs/smart_ptr/test/array_fail_array_access.cpp -@@ -12,8 +12,12 @@ struct X - { - }; - -+template void f( T & /*t*/ ) -+{ -+} -+ - int main() - { - boost::shared_ptr px( new X ); -- px[ 0 ]; -+ f( px[ 0 ] ); - } -diff --git a/test/sp_explicit_inst_test.cpp b/test/sp_explicit_inst_test.cpp -new file mode 100644 -index 0000000..d8de782 ---- /dev/null -+++ b/libs/smart_ptr/test/sp_explicit_inst_test.cpp -@@ -0,0 +1,23 @@ -+// -+// Explicit instantiations are reported to exist in user code -+// -+// Copyright (c) 2014 Peter Dimov -+// -+// Distributed under the Boost Software License, Version 1.0. -+// See accompanying file LICENSE_1_0.txt or copy at -+// http://www.boost.org/LICENSE_1_0.txt -+// -+ -+#include -+ -+template class boost::shared_ptr< int >; -+ -+struct X -+{ -+}; -+ -+template class boost::shared_ptr< X >; -+ -+int main() -+{ -+} --- -2.1.0 - diff --git a/boost-1.54.0-thread-cond_variable_shadow.patch b/boost-1.54.0-thread-cond_variable_shadow.patch new file mode 100644 index 0000000..ba8cd01 --- /dev/null +++ b/boost-1.54.0-thread-cond_variable_shadow.patch @@ -0,0 +1,104 @@ +diff -up ./boost/thread/pthread/condition_variable.hpp~ ./boost/thread/pthread/condition_variable.hpp +--- ./boost/thread/pthread/condition_variable.hpp~ 2013-01-14 18:17:50.000000000 +0100 ++++ ./boost/thread/pthread/condition_variable.hpp 2013-08-22 11:47:48.330596804 +0200 +@@ -200,15 +200,15 @@ namespace boost + + #if defined BOOST_THREAD_USES_DATETIME + template +- bool timed_wait(lock_type& m,boost::system_time const& wait_until) ++ bool timed_wait(lock_type& m,boost::system_time const& a_wait_until) + { +- struct timespec const timeout=detail::to_timespec(wait_until); ++ struct timespec const timeout=detail::to_timespec(a_wait_until); + return do_wait_until(m, timeout); + } + template +- bool timed_wait(lock_type& m,xtime const& wait_until) ++ bool timed_wait(lock_type& m,xtime const& a_wait_until) + { +- return timed_wait(m,system_time(wait_until)); ++ return timed_wait(m,system_time(a_wait_until)); + } + + template +@@ -218,20 +218,20 @@ namespace boost + } + + template +- bool timed_wait(lock_type& m,boost::system_time const& wait_until,predicate_type pred) ++ bool timed_wait(lock_type& m,boost::system_time const& a_wait_until,predicate_type pred) + { + while (!pred()) + { +- if(!timed_wait(m, wait_until)) ++ if(!timed_wait(m, a_wait_until)) + return pred(); + } + return true; + } + + template +- bool timed_wait(lock_type& m,xtime const& wait_until,predicate_type pred) ++ bool timed_wait(lock_type& m,xtime const& a_wait_until,predicate_type pred) + { +- return timed_wait(m,system_time(wait_until),pred); ++ return timed_wait(m,system_time(a_wait_until),pred); + } + + template +diff -up ./boost/thread/pthread/condition_variable_fwd.hpp~ ./boost/thread/pthread/condition_variable_fwd.hpp +--- ./boost/thread/pthread/condition_variable_fwd.hpp~ 2013-01-14 18:17:50.000000000 +0100 ++++ ./boost/thread/pthread/condition_variable_fwd.hpp 2013-08-22 11:46:26.579385366 +0200 +@@ -98,21 +98,21 @@ namespace boost + #if defined BOOST_THREAD_USES_DATETIME + inline bool timed_wait( + unique_lock& m, +- boost::system_time const& wait_until) ++ boost::system_time const& a_wait_until) + { + #if defined BOOST_THREAD_WAIT_BUG +- struct timespec const timeout=detail::to_timespec(wait_until + BOOST_THREAD_WAIT_BUG); ++ struct timespec const timeout=detail::to_timespec(a_wait_until + BOOST_THREAD_WAIT_BUG); + return do_wait_until(m, timeout); + #else +- struct timespec const timeout=detail::to_timespec(wait_until); ++ struct timespec const timeout=detail::to_timespec(a_wait_until); + return do_wait_until(m, timeout); + #endif + } + bool timed_wait( + unique_lock& m, +- xtime const& wait_until) ++ xtime const& a_wait_until) + { +- return timed_wait(m,system_time(wait_until)); ++ return timed_wait(m,system_time(a_wait_until)); + } + + template +@@ -126,11 +126,11 @@ namespace boost + template + bool timed_wait( + unique_lock& m, +- boost::system_time const& wait_until,predicate_type pred) ++ boost::system_time const& a_wait_until,predicate_type pred) + { + while (!pred()) + { +- if(!timed_wait(m, wait_until)) ++ if(!timed_wait(m, a_wait_until)) + return pred(); + } + return true; +@@ -139,9 +139,9 @@ namespace boost + template + bool timed_wait( + unique_lock& m, +- xtime const& wait_until,predicate_type pred) ++ xtime const& a_wait_until,predicate_type pred) + { +- return timed_wait(m,system_time(wait_until),pred); ++ return timed_wait(m,system_time(a_wait_until),pred); + } + + template diff --git a/boost-1.54.0-thread-link_atomic.patch b/boost-1.54.0-thread-link_atomic.patch new file mode 100644 index 0000000..9bbb8f3 --- /dev/null +++ b/boost-1.54.0-thread-link_atomic.patch @@ -0,0 +1,51 @@ +diff -Nurp boost_1_54_0/libs/thread/build/has_atomic_flag_lockfree_test.cpp boost_1_54_0.pm/libs/thread/build/has_atomic_flag_lockfree_test.cpp +--- boost_1_54_0/libs/thread/build/has_atomic_flag_lockfree_test.cpp 1970-01-01 01:00:00.000000000 +0100 ++++ boost_1_54_0.pm/libs/thread/build/has_atomic_flag_lockfree_test.cpp 2013-08-23 19:51:52.706329968 +0200 +@@ -0,0 +1,14 @@ ++// Copyright (c) 2013, Petr Machata, Red Hat Inc. ++// ++// Use modification and distribution are subject to the boost Software ++// License, Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt). ++ ++#include "../../../boost/atomic.hpp" ++#include "../../../boost/static_assert.hpp" ++ ++int ++main(int argc, char *argv[]) ++{ ++ BOOST_STATIC_ASSERT(BOOST_ATOMIC_FLAG_LOCK_FREE); ++ return 0; ++} +diff -Nurp boost_1_54_0/libs/thread/build/Jamfile.v2 boost_1_54_0.pm/libs/thread/build/Jamfile.v2 +--- boost_1_54_0/libs/thread/build/Jamfile.v2 2013-06-15 12:35:45.000000000 +0200 ++++ boost_1_54_0.pm/libs/thread/build/Jamfile.v2 2013-08-23 19:52:30.018613408 +0200 +@@ -36,6 +36,7 @@ import os ; + import feature ; + import indirect ; + import path ; ++import configure ; + + project boost/thread + : source-location ../src +@@ -140,6 +141,8 @@ local rule default_threadapi ( ) + feature.feature threadapi : pthread win32 : propagated ; + feature.set-default threadapi : [ default_threadapi ] ; + ++exe has_atomic_flag_lockfree : ../build/has_atomic_flag_lockfree_test.cpp ; ++ + rule tag ( name : type ? : property-set ) + { + local result = $(name) ; +@@ -248,6 +251,12 @@ rule requirements ( properties * ) + { + local result ; + ++ if ! [ configure.builds has_atomic_flag_lockfree ++ : $(properties) : "lockfree boost::atomic_flag" ] ++ { ++ result += /boost/atomic//boost_atomic ; ++ } ++ + if pthread in $(properties) + { + result += BOOST_THREAD_POSIX ; diff --git a/boost-1.54.0-unordered-unused_typedef.patch b/boost-1.54.0-unordered-unused_typedef.patch new file mode 100644 index 0000000..27e900a --- /dev/null +++ b/boost-1.54.0-unordered-unused_typedef.patch @@ -0,0 +1,14 @@ +diff -up boost_1_54_0/boost/unordered/detail/unique.hpp\~ boost_1_54_0/boost/unordered/detail/unique.hpp +--- boost_1_54_0/boost/unordered/detail/unique.hpp~ 2012-12-05 23:06:57.000000000 +0100 ++++ boost_1_54_0/boost/unordered/detail/unique.hpp 2013-07-22 23:54:29.222516306 +0200 +@@ -334,8 +334,6 @@ namespace boost { namespace unordered { + + value_type& operator[](key_type const& k) + { +- typedef typename value_type::second_type mapped_type; +- + std::size_t key_hash = this->hash(k); + iterator pos = this->find_node(key_hash, k); + + +Diff finished. Mon Jul 22 23:55:15 2013 diff --git a/boost-1.54.0-xpressive-unused_typedef.patch b/boost-1.54.0-xpressive-unused_typedef.patch new file mode 100644 index 0000000..60a4f5a --- /dev/null +++ b/boost-1.54.0-xpressive-unused_typedef.patch @@ -0,0 +1,11 @@ +diff -urp boost_1_54_0-orig/boost/xpressive/regex_algorithms.hpp boost_1_54_0/boost/xpressive/regex_algorithms.hpp +--- boost_1_54_0-orig/boost/xpressive/regex_algorithms.hpp 2013-07-23 00:47:50.804931313 +0200 ++++ boost_1_54_0/boost/xpressive/regex_algorithms.hpp 2013-07-23 00:50:40.721961072 +0200 +@@ -303,7 +303,6 @@ namespace detail + ) + { + typedef core_access access; +- typedef typename iterator_value::type char_type; + match_results &what = *state.context_.results_ptr_; + BOOST_ASSERT(0 != re.regex_id()); + diff --git a/boost-1.55.0-archive-init_order.patch b/boost-1.55.0-archive-init_order.patch deleted file mode 100644 index 7de81ef..0000000 --- a/boost-1.55.0-archive-init_order.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -up ./boost/archive/iterators/transform_width.hpp~ ./boost/archive/iterators/transform_width.hpp ---- ./boost/archive/iterators/transform_width.hpp~ 2013-04-28 18:07:27.000000000 +0200 -+++ ./boost/archive/iterators/transform_width.hpp 2014-05-13 18:08:53.683355277 +0200 -@@ -119,8 +119,8 @@ public: - transform_width(const transform_width & rhs) : - super_t(rhs.base_reference()), - m_buffer_out_full(rhs.m_buffer_out_full), -- m_remaining_bits(rhs.m_remaining_bits), - m_buffer_in(rhs.m_buffer_in), -+ m_remaining_bits(rhs.m_remaining_bits), - m_end_of_sequence(false) - {} - }; diff --git a/boost-1.55.0-program_options-class_attribute.patch b/boost-1.55.0-program_options-class_attribute.patch deleted file mode 100644 index cfd0df4..0000000 --- a/boost-1.55.0-program_options-class_attribute.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -up boost_1_55_0/boost/program_options/variables_map.hpp\~ boost_1_55_0/boost/program_options/variables_map.hpp ---- boost_1_55_0/boost/program_options/variables_map.hpp~ 2012-04-08 12:02:26.000000000 +0200 -+++ boost_1_55_0/boost/program_options/variables_map.hpp 2014-05-13 17:49:18.219749093 +0200 -@@ -98,7 +98,7 @@ namespace boost { namespace program_opti - void store(const basic_parsed_options& options, - variables_map& m, bool); - -- friend BOOST_PROGRAM_OPTIONS_DECL class variables_map; -+ friend class BOOST_PROGRAM_OPTIONS_DECL variables_map; - }; - - /** Implements string->string mapping with convenient value casting - -Diff finished. Tue May 13 17:49:22 2014 diff --git a/boost-1.55.0-spirit-unused_typedefs.patch b/boost-1.55.0-spirit-unused_typedefs.patch deleted file mode 100644 index 399d99b..0000000 --- a/boost-1.55.0-spirit-unused_typedefs.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -up boost_1_55_0/boost/spirit/home/support/char_set/range_run_impl.hpp\~ boost_1_55_0/boost/spirit/home/support/char_set/range_run_impl.hpp ---- boost_1_55_0/boost/spirit/home/support/char_set/range_run_impl.hpp~ 2011-01-13 03:11:19.000000000 +0100 -+++ boost_1_55_0/boost/spirit/home/support/char_set/range_run_impl.hpp 2014-05-15 18:09:07.326237692 +0200 -@@ -25,9 +25,6 @@ namespace boost { namespace spirit { nam - // if *iter intersects with, or is adjacent to, 'range'... - if (can_merge(*iter, range)) - { -- typedef typename Range::value_type value_type; -- typedef integer_traits integer_traits; -- - // merge range and *iter - merge(*iter, range); - - -Diff finished. Thu May 15 18:09:11 2014 diff --git a/boost-1.55.0-xpressive-unused_typedefs.patch b/boost-1.55.0-xpressive-unused_typedefs.patch deleted file mode 100644 index 1365d92..0000000 --- a/boost-1.55.0-xpressive-unused_typedefs.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -up ./boost/xpressive/detail/dynamic/parser.hpp~ ./boost/xpressive/detail/dynamic/parser.hpp ---- ./boost/xpressive/detail/dynamic/parser.hpp~ 2009-09-23 23:53:53.000000000 +0200 -+++ ./boost/xpressive/detail/dynamic/parser.hpp 2014-05-13 17:15:47.263001855 +0200 -@@ -328,7 +328,6 @@ inline sequence make_assert_en - template - inline sequence make_assert_word(Cond, Traits const &tr) - { -- typedef typename iterator_value::type char_type; - return detail::make_dynamic - ( - detail::assert_word_matcher(tr) diff --git a/boost.spec b/boost.spec index bf0c253..a4ef4db 100644 --- a/boost.spec +++ b/boost.spec @@ -7,20 +7,20 @@ %define boost_docdir __tmp_docdir %define boost_examplesdir __tmp_examplesdir -%ifarch ppc64le +%ifarch aarch64 %bcond_with mpich %else %bcond_without mpich %endif -%ifarch s390 s390x ppc64le +%ifarch s390 s390x aarch64 # No OpenMPI support on these arches %bcond_with openmpi %else %bcond_without openmpi %endif -%ifnarch %{ix86} x86_64 %{arm} +%ifnarch %{ix86} x86_64 # Avoid using Boost.Context on non-x86 arches. s390 is not # supported at all and there were _syntax errors_ in PPC code. This # should be enabled on a case-by-case basis as the arches are tested @@ -34,9 +34,9 @@ Name: boost Summary: The free peer-reviewed portable C++ source libraries -Version: 1.55.0 -%define version_enc 1_55_0 -Release: 5%{?dist} +Version: 1.54.0 +%define version_enc 1_54_0 +Release: 9%{?dist} License: Boost and MIT and Python %define toplev_dirname %{name}_%{version_enc} @@ -59,7 +59,6 @@ Requires: boost-atomic = %{version}-%{release} Requires: boost-chrono = %{version}-%{release} %if %{with context} Requires: boost-context = %{version}-%{release} -Requires: boost-coroutine = %{version}-%{release} %endif Requires: boost-date-time = %{version}-%{release} Requires: boost-filesystem = %{version}-%{release} @@ -97,10 +96,29 @@ Patch4: boost-1.50.0-fix-non-utf8-files.patch # http://www.boost.org/boost-build2/doc/html/bbv2/overview.html Patch5: boost-1.48.0-add-bjam-man-page.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=781859 +# The following tickets have yet to be fixed by upstream. +# https://svn.boost.org/trac/boost/ticket/6413 +# https://svn.boost.org/trac/boost/ticket/8849 +Patch9: boost-1.53.0-attribute.patch + # https://bugzilla.redhat.com/show_bug.cgi?id=828856 # https://bugzilla.redhat.com/show_bug.cgi?id=828857 Patch15: boost-1.50.0-pool.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=977098 +# https://svn.boost.org/trac/boost/ticket/8731 +Patch18: boost-1.54.0-__GLIBC_HAVE_LONG_LONG.patch + +# Upstream patches posted as release notes: +# http://www.boost.org/users/history/version_1_54_0.html +Patch19: 001-coroutine.patch +Patch20: 002-date-time.patch +Patch21: 003-log.patch + +# https://svn.boost.org/trac/boost/ticket/8826 +Patch22: boost-1.54.0-context-execstack.patch + # https://svn.boost.org/trac/boost/ticket/8844 Patch23: boost-1.54.0-bind-static_assert.patch @@ -113,6 +131,10 @@ Patch25: boost-1.54.0-mpl-print.patch # https://svn.boost.org/trac/boost/ticket/8859 Patch26: boost-1.54.0-static_warning-unused_typedef.patch +# https://svn.boost.org/trac/boost/ticket/8855 +Patch27: boost-1.54.0-math-unused_typedef.patch +Patch28: boost-1.54.0-math-unused_typedef-2.patch + # https://svn.boost.org/trac/boost/ticket/8853 Patch31: boost-1.54.0-tuple-unused_typedef.patch @@ -130,35 +152,51 @@ Patch36: boost-1.54.0-spirit-unused_typedef-2.patch # https://svn.boost.org/trac/boost/ticket/8871 Patch37: boost-1.54.0-numeric-unused_typedef.patch +# https://svn.boost.org/trac/boost/ticket/8872 +Patch38: boost-1.54.0-multiprecision-unused_typedef.patch + +# https://svn.boost.org/trac/boost/ticket/8874 +Patch42: boost-1.54.0-unordered-unused_typedef.patch + +# https://svn.boost.org/trac/boost/ticket/8876 +Patch43: boost-1.54.0-algorithm-unused_typedef.patch + +# https://svn.boost.org/trac/boost/ticket/8877 +Patch44: boost-1.54.0-graph-unused_typedef.patch + # https://svn.boost.org/trac/boost/ticket/8878 Patch45: boost-1.54.0-locale-unused_typedef.patch # https://svn.boost.org/trac/boost/ticket/8879 Patch46: boost-1.54.0-property_tree-unused_typedef.patch +# https://svn.boost.org/trac/boost/ticket/8880 +Patch47: boost-1.54.0-xpressive-unused_typedef.patch + +# https://svn.boost.org/trac/boost/ticket/8881 +Patch48: boost-1.54.0-mpi-unused_typedef.patch + # https://svn.boost.org/trac/boost/ticket/8888 Patch49: boost-1.54.0-python-unused_typedef.patch +# https://svn.boost.org/trac/boost/ticket/8941 +Patch50: boost-1.54.0-lexical_cast-int128.patch + # https://svn.boost.org/trac/boost/ticket/9038 Patch51: boost-1.54.0-pool-test_linking.patch +# https://svn.boost.org/trac/boost/ticket/9037 +Patch52: boost-1.54.0-thread-cond_variable_shadow.patch + # This was already fixed upstream, so no tracking bug. Patch53: boost-1.54.0-pool-max_chunks_shadow.patch -# https://svn.boost.org/trac/boost/ticket/8725 -Patch54: boost-1.55.0-program_options-class_attribute.patch +# https://svn.boost.org/trac/boost/ticket/9041 +Patch54: boost-1.54.0-thread-link_atomic.patch -# Fixed upstream on Oct 4 00:26:49 2013. -Patch55: boost-1.55.0-archive-init_order.patch - -# https://github.com/boostorg/xpressive/pull/1 -Patch56: boost-1.55.0-xpressive-unused_typedefs.patch - -# Fixed upstream on Aug 20 05:11:14 2013. -Patch57: boost-1.55.0-spirit-unused_typedefs.patch - -# https://bugzilla.redhat.com/show_bug.cgi?id=1159960 -Patch58: boost-1.54.0-smart_ptr-shared_ptr_at.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1002578 +# https://svn.boost.org/trac/boost/ticket/9065 +Patch55: boost-1.54.0-interprocess-atomic_cas32-ppc.patch %bcond_with tests %bcond_with docs_generated @@ -202,16 +240,6 @@ Group: System Environment/Libraries Run-Time support for Boost.Context, a foundational library that provides a sort of cooperative multitasking on a single thread. - -%package coroutine -Summary: Run-Time component of boost coroutine library -Group: System Environment/Libraries - -%description coroutine -Run-Time support for Boost.Coroutine, a library that provides -generalized subroutines which allow multiple entry points for -suspending and resuming execution. - %endif %package date-time @@ -625,11 +653,19 @@ a number of significant features and is now developed independently %patch4 -p1 %patch5 -p1 +%patch9 -p1 %patch15 -p0 +%patch18 -p1 +%patch19 -p1 +%patch20 -p1 +%patch21 -p1 +%patch22 -p1 %patch23 -p1 %patch24 -p1 %patch25 -p0 %patch26 -p1 +%patch27 -p1 +%patch28 -p0 %patch31 -p0 %patch32 -p0 %patch33 -p0 @@ -637,16 +673,21 @@ a number of significant features and is now developed independently %patch35 -p1 %patch36 -p1 %patch37 -p1 +%patch38 -p1 +%patch42 -p1 +%patch43 -p1 +%patch44 -p1 %patch45 -p1 %patch46 -p1 +%patch47 -p1 +%patch48 -p1 %patch49 -p1 +%patch50 -p0 %patch51 -p1 +%patch52 -p1 %patch53 -p1 %patch54 -p1 %patch55 -p1 -%patch56 -p1 -%patch57 -p1 -%patch58 -p1 # At least python2_version needs to be a macro so that it's visible in # %%install as well. @@ -853,6 +894,7 @@ rm -f tmp-doc-directories echo ============================= install examples ================== # Fix a few non-standard issues (DOS and/or non-UTF8 files) sed -i -e 's/\r//g' libs/geometry/example/ml02_distance_strategy.cpp +sed -i -e 's/\r//g' libs/geometry/example/ml02_distance_strategy.vcproj for tmp_doc_file in flyweight/example/Jamfile.v2 \ format/example/sample_new_features.cpp multi_index/example/Jamfile.v2 \ multi_index/example/hashed.cpp serialization/example/demo_output.txt \ @@ -911,10 +953,6 @@ rm -rf $RPM_BUILD_ROOT %post context -p /sbin/ldconfig %postun context -p /sbin/ldconfig - -%post coroutine -p /sbin/ldconfig - -%postun coroutine -p /sbin/ldconfig %endif %post date-time -p /sbin/ldconfig @@ -1006,17 +1044,10 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/libboost_chrono.so.%{sonamever} %if %{with context} - %files context %defattr(-, root, root, -) %doc LICENSE_1_0.txt %{_libdir}/libboost_context.so.%{sonamever} - -%files coroutine -%defattr(-, root, root, -) -%doc LICENSE_1_0.txt -%{_libdir}/libboost_coroutine.so.%{sonamever} - %endif %files date-time @@ -1145,7 +1176,6 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/libboost_chrono.so %if %{with context} %{_libdir}/libboost_context.so -%{_libdir}/libboost_coroutine.so %endif %{_libdir}/libboost_date_time.so %{_libdir}/libboost_filesystem.so @@ -1249,63 +1279,6 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man1/bjam.1* %changelog -* Wed Nov 12 2014 Petr Machata - 1.55.0-5 -- Fix boost::shared_ptr::operator[], which was ill-formed for - non-array T's. (boost-1.54.0-smart_ptr-shared_ptr_at.patch) - -* Tue Aug 26 2014 David Tardon - 1.55.0-4 -- rebuild for ICU 53.1 - -* Fri Aug 15 2014 Fedora Release Engineering - 1.55.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - -* Sat Jun 07 2014 Fedora Release Engineering - 1.55.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Mon May 12 2014 Petr Machata - 1.55.0-1 -- Add a new sub-package boost-coroutine -- Annotate or drop some unused typedefs - (boost-1.55.0-python-unused_typedefs.patch, - boost-1.55.0-spirit-unused_typedefs.patch, - boost-1.55.0-xpressive-unused_typedefs.patch) -- Add a patch for wrong initialization order - (boost-1.55.0-archive-init_order.patch) -- Add a patch for misplaced attribute at class declaration - (boost-1.55.0-program_options-class_attribute.patch) -- Drop 001-coroutine.patch, 002-date-time.patch, 003-log.patch, - boost-1.53.0-attribute.patch, - boost-1.54.0-__GLIBC_HAVE_LONG_LONG.patch, - boost-1.54.0-algorithm-unused_typedef.patch, - boost-1.54.0-context-execstack.patch, - boost-1.54.0-graph-unused_typedef.patch, - boost-1.54.0-interprocess-atomic_cas32-ppc.patch, - boost-1.54.0-lexical_cast-int128.patch, - boost-1.54.0-math-unused_typedef-2.patch, - boost-1.54.0-math-unused_typedef.patch, - boost-1.54.0-mpi-unused_typedef.patch, - boost-1.54.0-multiprecision-unused_typedef.patch, - boost-1.54.0-thread-cond_variable_shadow.patch, - boost-1.54.0-thread-link_atomic.patch, - boost-1.54.0-unordered-unused_typedef.patch, - boost-1.54.0-xpressive-unused_typedef.patch, - -* Tue Mar 18 2014 Petr Machata - 1.54.0-14 -- Fix a noexecstack patch for ARM, enable Boost.Context on ARM. - (boost-1.54.0-context-execstack.patch) - -* Tue Mar 18 2014 Björn Esser - 1.54.0-13 -- rebuilt for mpich-3.1 - -* Mon Mar 17 2014 Peter Robinson 1.54.0-12 -- Enable MPICH and OpenMPI support on aarch64 - -* Wed Feb 12 2014 Petr Machata - 1.54.0-11 -- Rebuild for ICU soname bump. - -* Thu Jan 9 2014 Petr Machata - 1.54.0-10 -- Add ppc64le to the list of arches that OpenMPI and MPICH don't - support. - * Wed Dec 18 2013 Peter Robinson 1.54.0-9 - Enable MPICH and OpenMPI support on ARM as it's long had them both diff --git a/sources b/sources index 329a0a5..b83e24d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -d6eef4b4cacb2183f2bf265a5a03a354 boost_1_55_0.tar.bz2 +15cb8c0803064faef0c4ddf5bc5ca279 boost_1_54_0.tar.bz2 From 0ddee7cee53e1eec6337d4daf463f5ed71842d97 Mon Sep 17 00:00:00 2001 From: Petr Machata Date: Wed, 12 Nov 2014 19:36:48 +0100 Subject: [PATCH 3/5] Fix boost::shared_ptr::operator[] for non-array T's --- boost-1.54.0-smart_ptr-shared_ptr_at.patch | 88 ++++++++++++++++++++++ boost.spec | 10 ++- 2 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 boost-1.54.0-smart_ptr-shared_ptr_at.patch diff --git a/boost-1.54.0-smart_ptr-shared_ptr_at.patch b/boost-1.54.0-smart_ptr-shared_ptr_at.patch new file mode 100644 index 0000000..675e13d --- /dev/null +++ b/boost-1.54.0-smart_ptr-shared_ptr_at.patch @@ -0,0 +1,88 @@ +From f65c57d9d2a4f535e36c96b7f563574634e46b02 Mon Sep 17 00:00:00 2001 +From: Peter Dimov +Date: Wed, 12 Nov 2014 19:04:29 +0200 +Subject: [PATCH] Fix explicit instantiation regression + +--- + include/boost/smart_ptr/shared_ptr.hpp | 2 +- + test/Jamfile.v2 | 2 ++ + test/array_fail_array_access.cpp | 6 +++++- + test/sp_explicit_inst_test.cpp | 23 +++++++++++++++++++++++ + 4 files changed, 31 insertions(+), 2 deletions(-) + create mode 100644 test/sp_explicit_inst_test.cpp + +diff --git a/include/boost/smart_ptr/shared_ptr.hpp b/include/boost/smart_ptr/shared_ptr.hpp +index 82ece8b..8be92ab 100644 +--- a/boost/smart_ptr/shared_ptr.hpp ++++ b/boost/smart_ptr/shared_ptr.hpp +@@ -655,7 +655,7 @@ public: + BOOST_ASSERT( px != 0 ); + BOOST_ASSERT( i >= 0 && ( i < boost::detail::sp_extent< T >::value || boost::detail::sp_extent< T >::value == 0 ) ); + +- return px[ i ]; ++ return static_cast< typename boost::detail::sp_array_access< T >::type >( px[ i ] ); + } + + element_type * get() const BOOST_NOEXCEPT +diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 +index 027367c..0b51eee 100644 +--- a/libs/smart_ptr/test/Jamfile.v2 ++++ b/libs/smart_ptr/test/Jamfile.v2 +@@ -153,5 +153,7 @@ import testing ; + [ run allocate_shared_array_throws_test.cpp ] + [ run allocate_shared_array_esft_test.cpp ] + [ run allocate_shared_array_args_test.cpp ] ++ ++ [ compile sp_explicit_inst_test.cpp ] + ; + } +diff --git a/test/array_fail_array_access.cpp b/test/array_fail_array_access.cpp +index abfacbe..4f4e3f8 100644 +--- a/libs/smart_ptr/test/array_fail_array_access.cpp ++++ b/libs/smart_ptr/test/array_fail_array_access.cpp +@@ -12,8 +12,12 @@ struct X + { + }; + ++template void f( T & /*t*/ ) ++{ ++} ++ + int main() + { + boost::shared_ptr px( new X ); +- px[ 0 ]; ++ f( px[ 0 ] ); + } +diff --git a/test/sp_explicit_inst_test.cpp b/test/sp_explicit_inst_test.cpp +new file mode 100644 +index 0000000..d8de782 +--- /dev/null ++++ b/libs/smart_ptr/test/sp_explicit_inst_test.cpp +@@ -0,0 +1,23 @@ ++// ++// Explicit instantiations are reported to exist in user code ++// ++// Copyright (c) 2014 Peter Dimov ++// ++// Distributed under the Boost Software License, Version 1.0. ++// See accompanying file LICENSE_1_0.txt or copy at ++// http://www.boost.org/LICENSE_1_0.txt ++// ++ ++#include ++ ++template class boost::shared_ptr< int >; ++ ++struct X ++{ ++}; ++ ++template class boost::shared_ptr< X >; ++ ++int main() ++{ ++} +-- +2.1.0 + diff --git a/boost.spec b/boost.spec index a4ef4db..9f90295 100644 --- a/boost.spec +++ b/boost.spec @@ -36,7 +36,7 @@ Name: boost Summary: The free peer-reviewed portable C++ source libraries Version: 1.54.0 %define version_enc 1_54_0 -Release: 9%{?dist} +Release: 10%{?dist} License: Boost and MIT and Python %define toplev_dirname %{name}_%{version_enc} @@ -198,6 +198,9 @@ Patch54: boost-1.54.0-thread-link_atomic.patch # https://svn.boost.org/trac/boost/ticket/9065 Patch55: boost-1.54.0-interprocess-atomic_cas32-ppc.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1159960 +Patch56: boost-1.54.0-smart_ptr-shared_ptr_at.patch + %bcond_with tests %bcond_with docs_generated @@ -688,6 +691,7 @@ a number of significant features and is now developed independently %patch53 -p1 %patch54 -p1 %patch55 -p1 +%patch56 -p1 # At least python2_version needs to be a macro so that it's visible in # %%install as well. @@ -1279,6 +1283,10 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man1/bjam.1* %changelog +* Wed Nov 12 2014 Petr Machata - 1.54.0-10 +- Fix boost::shared_ptr::operator[], which was ill-formed for + non-array T's. (boost-1.54.0-smart_ptr-shared_ptr_at.patch) + * Wed Dec 18 2013 Peter Robinson 1.54.0-9 - Enable MPICH and OpenMPI support on ARM as it's long had them both From 281cdc11345a33657c28f736441ac0b8c23ace5b Mon Sep 17 00:00:00 2001 From: Petr Machata Date: Tue, 13 Jan 2015 19:22:02 +0100 Subject: [PATCH 4/5] Fix prim_minimum_spanning_tree throwing negative_edge exception --- ...55.0-graph-dijkstra_shortest_paths-2.patch | 31 +++++++++++ ...1.55.0-graph-dijkstra_shortest_paths.patch | 53 +++++++++++++++++++ boost.spec | 14 ++++- 3 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 boost-1.55.0-graph-dijkstra_shortest_paths-2.patch create mode 100644 boost-1.55.0-graph-dijkstra_shortest_paths.patch diff --git a/boost-1.55.0-graph-dijkstra_shortest_paths-2.patch b/boost-1.55.0-graph-dijkstra_shortest_paths-2.patch new file mode 100644 index 0000000..32b1fd0 --- /dev/null +++ b/boost-1.55.0-graph-dijkstra_shortest_paths-2.patch @@ -0,0 +1,31 @@ +Index: /trunk/boost/graph/dijkstra_shortest_paths.hpp +=================================================================== +--- /trunk/boost/graph/dijkstra_shortest_paths.hpp (revision 85386) ++++ /trunk/boost/graph/dijkstra_shortest_paths.hpp (revision 85387) +@@ -163,5 +163,5 @@ + // Test for negative-weight edges: + // +- // Reasons that simpler comparisons do not work: ++ // Reasons that other comparisons do not work: + // + // m_compare(e_weight, D(0)): +@@ -180,14 +180,13 @@ + // and return a distance. + +- D source_dist = get(m_distance, source(e, g)); +- W e_weight = get(m_weight, e); ++ // W e_weight = get(m_weight, e); + // sd_plus_ew = source_dist + e_weight. +- D sd_plus_ew = m_combine(source_dist, e_weight); ++ // D sd_plus_ew = m_combine(source_dist, e_weight); + // sd_plus_2ew = source_dist + 2 * e_weight. +- D sd_plus_2ew = m_combine(sd_plus_ew, e_weight); ++ // D sd_plus_2ew = m_combine(sd_plus_ew, e_weight); + // The test here is equivalent to e_weight < 0 if m_combine has a + // cancellation law, but always returns false when m_combine is a +- // projection operator or is idempotent. +- if (m_compare(sd_plus_2ew, sd_plus_ew)) ++ // projection operator. ++ if (m_compare(m_combine(m_zero, get(m_weight, e)), m_zero)) + boost::throw_exception(negative_edge()); + // End of test for negative-weight edges. diff --git a/boost-1.55.0-graph-dijkstra_shortest_paths.patch b/boost-1.55.0-graph-dijkstra_shortest_paths.patch new file mode 100644 index 0000000..d0bf311 --- /dev/null +++ b/boost-1.55.0-graph-dijkstra_shortest_paths.patch @@ -0,0 +1,53 @@ +Index: /trunk/boost/graph/dijkstra_shortest_paths.hpp +=================================================================== +--- /trunk/boost/graph/dijkstra_shortest_paths.hpp (revision 85348) ++++ /trunk/boost/graph/dijkstra_shortest_paths.hpp (revision 85386) +@@ -119,4 +119,5 @@ + { + typedef typename property_traits::value_type D; ++ typedef typename property_traits::value_type W; + + dijkstra_bfs_visitor(UniformCostVisitor vis, UpdatableQueue& Q, +@@ -160,11 +161,38 @@ + template + void examine_edge(Edge e, Graph& g) { +- // Comparison needs to be more complicated because distance and weight +- // types may not be the same; see bug 8398 +- // (https://svn.boost.org/trac/boost/ticket/8398) ++ // Test for negative-weight edges: ++ // ++ // Reasons that simpler comparisons do not work: ++ // ++ // m_compare(e_weight, D(0)): ++ // m_compare only needs to work on distances, not weights, and those ++ // types do not need to be the same (bug 8398, ++ // https://svn.boost.org/trac/boost/ticket/8398). ++ // m_compare(m_combine(source_dist, e_weight), source_dist): ++ // if m_combine is project2nd (as in prim_minimum_spanning_tree), ++ // this test will claim that the edge weight is negative whenever ++ // the edge weight is less than source_dist, even if both of those ++ // are positive (bug 9012, ++ // https://svn.boost.org/trac/boost/ticket/9012). ++ // m_compare(m_combine(e_weight, source_dist), source_dist): ++ // would fix project2nd issue, but documentation only requires that ++ // m_combine be able to take a distance and a weight (in that order) ++ // and return a distance. ++ + D source_dist = get(m_distance, source(e, g)); +- if (m_compare(m_combine(source_dist, get(m_weight, e)), source_dist)) ++ W e_weight = get(m_weight, e); ++ // sd_plus_ew = source_dist + e_weight. ++ D sd_plus_ew = m_combine(source_dist, e_weight); ++ // sd_plus_2ew = source_dist + 2 * e_weight. ++ D sd_plus_2ew = m_combine(sd_plus_ew, e_weight); ++ // The test here is equivalent to e_weight < 0 if m_combine has a ++ // cancellation law, but always returns false when m_combine is a ++ // projection operator or is idempotent. ++ if (m_compare(sd_plus_2ew, sd_plus_ew)) + boost::throw_exception(negative_edge()); ++ // End of test for negative-weight edges. ++ + m_vis.examine_edge(e, g); ++ + } + template diff --git a/boost.spec b/boost.spec index 9f90295..640354e 100644 --- a/boost.spec +++ b/boost.spec @@ -36,7 +36,7 @@ Name: boost Summary: The free peer-reviewed portable C++ source libraries Version: 1.54.0 %define version_enc 1_54_0 -Release: 10%{?dist} +Release: 11%{?dist} License: Boost and MIT and Python %define toplev_dirname %{name}_%{version_enc} @@ -201,6 +201,10 @@ Patch55: boost-1.54.0-interprocess-atomic_cas32-ppc.patch # https://bugzilla.redhat.com/show_bug.cgi?id=1159960 Patch56: boost-1.54.0-smart_ptr-shared_ptr_at.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1115124 +Patch57: boost-1.55.0-graph-dijkstra_shortest_paths.patch +Patch58: boost-1.55.0-graph-dijkstra_shortest_paths-2.patch + %bcond_with tests %bcond_with docs_generated @@ -692,6 +696,8 @@ a number of significant features and is now developed independently %patch54 -p1 %patch55 -p1 %patch56 -p1 +%patch57 -p2 +%patch58 -p2 # At least python2_version needs to be a macro so that it's visible in # %%install as well. @@ -1283,6 +1289,12 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man1/bjam.1* %changelog +* Tue Jan 13 2015 Petr Machata - 1.54.0-11 +- Apply upstream fix for dijkstra_bfs_visitor from Boost.Graph to not + misinterpret edge weights. + (boost-1.55.0-graph-dijkstra_shortest_paths.patch, + boost-1.55.0-graph-dijkstra_shortest_paths-2.patch) + * Wed Nov 12 2014 Petr Machata - 1.54.0-10 - Fix boost::shared_ptr::operator[], which was ill-formed for non-array T's. (boost-1.54.0-smart_ptr-shared_ptr_at.patch) From d443a5858b169595633af69f54fb9d3dff9cb65f Mon Sep 17 00:00:00 2001 From: Petr Machata Date: Tue, 13 Jan 2015 22:17:20 +0100 Subject: [PATCH 5/5] libboost_python{,3} should depend on libpython --- boost-1.55.0-python-abi_letters.patch | 62 ++++++++++++ boost-1.55.0-python-libpython_dep.patch | 13 +++ ...0-python-test-PyImport_AppendInittab.patch | 98 +++++++++++++++++++ boost.spec | 23 ++++- 4 files changed, 194 insertions(+), 2 deletions(-) create mode 100644 boost-1.55.0-python-abi_letters.patch create mode 100644 boost-1.55.0-python-libpython_dep.patch create mode 100644 boost-1.55.0-python-test-PyImport_AppendInittab.patch diff --git a/boost-1.55.0-python-abi_letters.patch b/boost-1.55.0-python-abi_letters.patch new file mode 100644 index 0000000..71fa9bd --- /dev/null +++ b/boost-1.55.0-python-abi_letters.patch @@ -0,0 +1,62 @@ +--- boost_1_55_0/tools/build/v2/tools/python.jam 2013-05-21 06:14:18.000000000 +0200 ++++ boost_1_55_0/tools/build/v2/tools/python.jam 2014-05-29 19:09:12.115413877 +0200 +@@ -94,7 +94,7 @@ feature.feature pythonpath : : free opti + # using python : 2.3 : /usr/local/bin/python ; + # + rule init ( version ? : cmd-or-prefix ? : includes * : libraries ? +- : condition * : extension-suffix ? ) ++ : condition * : extension-suffix ? : abi-letters ? ) + { + project.push-current $(.project) ; + +@@ -107,7 +107,7 @@ rule init ( version ? : cmd-or-prefix ? + } + } + +- configure $(version) : $(cmd-or-prefix) : $(includes) : $(libraries) : $(condition) : $(extension-suffix) ; ++ configure $(version) : $(cmd-or-prefix) : $(includes) : $(libraries) : $(condition) : $(extension-suffix) : $(abi-letters) ; + + project.pop-current ; + } +@@ -653,7 +653,7 @@ local rule system-library-dependencies ( + + # Declare a target to represent Python's library. + # +-local rule declare-libpython-target ( version ? : requirements * ) ++local rule declare-libpython-target ( version ? : requirements * : abi-letters ? ) + { + # Compute the representation of Python version in the name of Python's + # library file. +@@ -677,13 +677,13 @@ local rule declare-libpython-target ( ve + } + + # Declare it. +- lib python.lib : : python$(lib-version) $(requirements) ; ++ lib python.lib : : python$(lib-version)$(abi-letters) $(requirements) ; + } + + + # Implementation of init. + local rule configure ( version ? : cmd-or-prefix ? : includes * : libraries ? : +- condition * : extension-suffix ? ) ++ condition * : extension-suffix ? : abi-letters ? ) + { + local prefix ; + local exec-prefix ; +@@ -699,6 +699,7 @@ local rule configure ( version ? : cmd-o + extension-suffix ?= _d ; + } + extension-suffix ?= "" ; ++ abi-letters ?= "" ; + + # Normalize and dissect any version number. + local major-minor ; +@@ -922,7 +923,7 @@ local rule configure ( version ? : cmd-o + } + else + { +- declare-libpython-target $(version) : $(target-requirements) ; ++ declare-libpython-target $(version) : $(target-requirements) : $(abi-letters) ; + + # This is an evil hack. On, Windows, when Python is embedded, nothing + # seems to set up sys.path to include Python's standard library diff --git a/boost-1.55.0-python-libpython_dep.patch b/boost-1.55.0-python-libpython_dep.patch new file mode 100644 index 0000000..202f4ec --- /dev/null +++ b/boost-1.55.0-python-libpython_dep.patch @@ -0,0 +1,13 @@ +Index: boost/tools/build/v2/tools/python.jam +=================================================================== +--- boost/tools/build/v2/tools/python.jam (revision 50406) ++++ boost/tools/build/v2/tools/python.jam (working copy) +@@ -994,7 +994,7 @@ + else + { + alias python_for_extensions +- : ++ : python + : $(target-requirements) + : + : $(usage-requirements) diff --git a/boost-1.55.0-python-test-PyImport_AppendInittab.patch b/boost-1.55.0-python-test-PyImport_AppendInittab.patch new file mode 100644 index 0000000..1d2ee5c --- /dev/null +++ b/boost-1.55.0-python-test-PyImport_AppendInittab.patch @@ -0,0 +1,98 @@ +diff -up boost_1_55_0/libs/python/test/exec.cpp\~ boost_1_55_0/libs/python/test/exec.cpp +--- boost_1_55_0/libs/python/test/exec.cpp~ 2010-07-05 00:38:38.000000000 +0200 ++++ boost_1_55_0/libs/python/test/exec.cpp 2015-01-09 21:31:12.903218280 +0100 +@@ -56,6 +56,20 @@ void eval_test() + BOOST_TEST(value == "ABCDEFG"); + } + ++struct PyCtx ++{ ++ PyCtx() { ++ Py_Initialize(); ++ } ++ ++ ~PyCtx() { ++ // N.B. certain problems may arise when Py_Finalize is called when ++ // using Boost.Python. However in this test suite it all seems to ++ // work fine. ++ Py_Finalize(); ++ } ++}; ++ + void exec_test() + { + // Register the module with the interpreter +@@ -68,6 +82,8 @@ void exec_test() + ) == -1) + throw std::runtime_error("Failed to add embedded_hello to the interpreter's " + "builtin modules"); ++ ++ PyCtx ctx; + // Retrieve the main module + python::object main = python::import("__main__"); + +@@ -148,41 +164,43 @@ void check_pyerr(bool pyerr_expected=fal + } + } + ++template ++bool ++run_and_handle_exception(Cb cb, bool pyerr_expected = false) ++{ ++ PyCtx ctx; ++ if (python::handle_exception(cb)) { ++ check_pyerr(pyerr_expected); ++ return true; ++ } else { ++ return false; ++ } ++} ++ + int main(int argc, char **argv) + { + BOOST_TEST(argc == 2 || argc == 3); + std::string script = argv[1]; +- // Initialize the interpreter +- Py_Initialize(); + +- if (python::handle_exception(eval_test)) { +- check_pyerr(); +- } +- else if(python::handle_exception(exec_test)) { +- check_pyerr(); +- } +- else if (python::handle_exception(boost::bind(exec_file_test, script))) { ++ // N.B. exec_test mustn't be called through run_and_handle_exception ++ // as it needs to handles the python context by itself. ++ if (run_and_handle_exception(eval_test) ++ || python::handle_exception(exec_test)) + check_pyerr(); +- } +- +- if (python::handle_exception(exec_test_error)) +- { +- check_pyerr(/*pyerr_expected*/ true); +- } + else +- { ++ run_and_handle_exception(boost::bind(exec_file_test, script)); ++ ++ if (!run_and_handle_exception(exec_test_error, true)) + BOOST_ERROR("Python exception expected, but not seen."); +- } + + if (argc > 2) { ++ PyCtx ctx; + // The main purpose is to test compilation. Since this test generates + // a file and I (rwgk) am uncertain about the side-effects, run it only + // if explicitly requested. + exercise_embedding_html(); + } + +- // Boost.Python doesn't support Py_Finalize yet. +- // Py_Finalize(); + return boost::report_errors(); + } + + +Diff finished. Fri Jan 9 21:31:13 2015 diff --git a/boost.spec b/boost.spec index 640354e..a419836 100644 --- a/boost.spec +++ b/boost.spec @@ -36,7 +36,7 @@ Name: boost Summary: The free peer-reviewed portable C++ source libraries Version: 1.54.0 %define version_enc 1_54_0 -Release: 11%{?dist} +Release: 12%{?dist} License: Boost and MIT and Python %define toplev_dirname %{name}_%{version_enc} @@ -205,6 +205,11 @@ Patch56: boost-1.54.0-smart_ptr-shared_ptr_at.patch Patch57: boost-1.55.0-graph-dijkstra_shortest_paths.patch Patch58: boost-1.55.0-graph-dijkstra_shortest_paths-2.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1102667 +Patch61: boost-1.55.0-python-libpython_dep.patch +Patch62: boost-1.55.0-python-abi_letters.patch +Patch63: boost-1.55.0-python-test-PyImport_AppendInittab.patch + %bcond_with tests %bcond_with docs_generated @@ -698,6 +703,9 @@ a number of significant features and is now developed independently %patch56 -p1 %patch57 -p2 %patch58 -p2 +%patch61 -p1 +%patch62 -p1 +%patch63 -p1 # At least python2_version needs to be a macro so that it's visible in # %%install as well. @@ -718,11 +726,13 @@ cat >> ./tools/build/v2/user-config.jam << EOF # There are many strict aliasing warnings, and it's not feasible to go # through them all at this time. using gcc : : : -fno-strict-aliasing ; +%if %{with openmpi} || %{with mpich} using mpi ; +%endif %if %{with python3} # This _adds_ extra python version. It doesn't replace whatever # python 2.X is default on the system. -using python : %{python3_version} : /usr/bin/python3 : /usr/include/python%{python3_version}%{python3_abiflags} ; +using python : %{python3_version} : /usr/bin/python3 : /usr/include/python%{python3_version}%{python3_abiflags} : : : : %{python3_abiflags} ; %endif EOF @@ -1289,6 +1299,15 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man1/bjam.1* %changelog +* Wed Jan 14 2015 Petr Machata - 1.54.0-12 +- Build libboost_python and libboost_python3 such that they depend on + their respective libpython's. + (boost-1.55.0-python-libpython_dep.patch, + boost-1.55.0-python-abi_letters.patch) +- Fix Boost.Python test suite so that PyImport_AppendInittab is called + before PyInitialize, which broke the test suite with Python 3. + (boost-1.55.0-python-test-PyImport_AppendInittab.patch) + * Tue Jan 13 2015 Petr Machata - 1.54.0-11 - Apply upstream fix for dijkstra_bfs_visitor from Boost.Graph to not misinterpret edge weights.