[packages/boost] - rel 3; bunch of upstream patches (taken and filtered by FC team)

arekm arekm at pld-linux.org
Sat Sep 14 18:16:15 CEST 2013


commit 647f39b293bde17ba3cf3a5d5ff661a6acff71fd
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Sat Sep 14 18:16:11 2013 +0200

    - rel 3; bunch of upstream patches (taken and filtered by FC team)

 001-coroutine.patch                              |  19 ++
 002-date-time.patch                              |  19 ++
 003-log.patch                                    |  16 ++
 boost-1.54.0-algorithm-unused_typedef.patch      |  43 ++++
 boost-1.54.0-bind-static_assert.patch            |  21 ++
 boost-1.54.0-concept-unused_typedef.patch        |  21 ++
 boost-1.54.0-context-execstack.patch             | 129 ++++++++++++
 boost-1.54.0-date_time-unused_typedef-2.patch    |  13 ++
 boost-1.54.0-date_time-unused_typedef.patch      | 100 +++++++++
 boost-1.54.0-graph-unused_typedef.patch          |  11 +
 boost-1.54.0-lexical_cast-int128.patch           |  61 ++++++
 boost-1.54.0-locale-unused_typedef.patch         |  11 +
 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 +
 boost-1.54.0-mpl-print.patch                     |  37 ++++
 boost-1.54.0-multiprecision-unused_typedef.patch | 148 ++++++++++++++
 boost-1.54.0-numeric-unused_typedef.patch        | 250 +++++++++++++++++++++++
 boost-1.54.0-pool-test_linking.patch             |  31 +++
 boost-1.54.0-property_tree-unused_typedef.patch  |  19 ++
 boost-1.54.0-python-unused_typedef.patch         |  15 ++
 boost-1.54.0-random-unused_typedef.patch         |  24 +++
 boost-1.54.0-spirit-unused_typedef-2.patch       |  22 ++
 boost-1.54.0-spirit-unused_typedef.patch         |  11 +
 boost-1.54.0-static_warning-unused_typedef.patch |  23 +++
 boost-1.54.0-thread-cond_variable_shadow.patch   | 104 ++++++++++
 boost-1.54.0-thread-link_atomic.patch            |  51 +++++
 boost-1.54.0-tuple-unused_typedef.patch          |  12 ++
 boost-1.54.0-unordered-unused_typedef.patch      |  14 ++
 boost-1.54.0-xpressive-unused_typedef.patch      |  11 +
 boost.spec                                       |  95 ++++++++-
 31 files changed, 1408 insertions(+), 1 deletion(-)
---
diff --git a/boost.spec b/boost.spec
index fc35a14..bfb80aa 100644
--- a/boost.spec
+++ b/boost.spec
@@ -11,13 +11,72 @@ Summary:	The Boost C++ Libraries
 Summary(pl.UTF-8):	Biblioteki C++ "Boost"
 Name:		boost
 Version:	1.54.0
-Release:	2
+Release:	3
 License:	Boost Software License and others
 Group:		Libraries
 Source0:	http://downloads.sourceforge.net/boost/%{name}_%{fver}.tar.bz2
 # Source0-md5:	15cb8c0803064faef0c4ddf5bc5ca279
 Patch0:		%{name}-link.patch
 Patch1:		%{name}-stdint.patch
+
+# Upstream patches posted as release notes:
+# http://www.boost.org/users/history/version_1_54_0.html
+Patch100: 001-coroutine.patch
+Patch101: 002-date-time.patch
+Patch102: 003-log.patch
+
+# FC Patches:
+# https://svn.boost.org/trac/boost/ticket/8826
+Patch200: boost-1.54.0-context-execstack.patch
+# https://svn.boost.org/trac/boost/ticket/8844
+Patch201: boost-1.54.0-bind-static_assert.patch
+# https://svn.boost.org/trac/boost/ticket/8847
+Patch202: boost-1.54.0-concept-unused_typedef.patch
+# https://svn.boost.org/trac/boost/ticket/5637
+Patch203: boost-1.54.0-mpl-print.patch
+# https://svn.boost.org/trac/boost/ticket/8859
+Patch204: boost-1.54.0-static_warning-unused_typedef.patch
+# https://svn.boost.org/trac/boost/ticket/8855
+Patch205: boost-1.54.0-math-unused_typedef.patch
+Patch206: boost-1.54.0-math-unused_typedef-2.patch
+# https://svn.boost.org/trac/boost/ticket/8853
+Patch207: boost-1.54.0-tuple-unused_typedef.patch
+# https://svn.boost.org/trac/boost/ticket/8854
+Patch208: boost-1.54.0-random-unused_typedef.patch
+# https://svn.boost.org/trac/boost/ticket/8856
+Patch209: boost-1.54.0-date_time-unused_typedef.patch
+Patch210: boost-1.54.0-date_time-unused_typedef-2.patch
+# https://svn.boost.org/trac/boost/ticket/8870
+Patch211: boost-1.54.0-spirit-unused_typedef.patch
+Patch212: boost-1.54.0-spirit-unused_typedef-2.patch
+# https://svn.boost.org/trac/boost/ticket/8871
+Patch213: boost-1.54.0-numeric-unused_typedef.patch
+# https://svn.boost.org/trac/boost/ticket/8872
+Patch214: boost-1.54.0-multiprecision-unused_typedef.patch
+# https://svn.boost.org/trac/boost/ticket/8874
+Patch215: boost-1.54.0-unordered-unused_typedef.patch
+# https://svn.boost.org/trac/boost/ticket/8876
+Patch216: boost-1.54.0-algorithm-unused_typedef.patch
+# https://svn.boost.org/trac/boost/ticket/8877
+Patch217: boost-1.54.0-graph-unused_typedef.patch
+# https://svn.boost.org/trac/boost/ticket/8878
+Patch218: boost-1.54.0-locale-unused_typedef.patch
+# https://svn.boost.org/trac/boost/ticket/8879
+Patch219: boost-1.54.0-property_tree-unused_typedef.patch
+# https://svn.boost.org/trac/boost/ticket/8880
+Patch220: boost-1.54.0-xpressive-unused_typedef.patch
+# https://svn.boost.org/trac/boost/ticket/8881
+Patch221: boost-1.54.0-mpi-unused_typedef.patch
+# https://svn.boost.org/trac/boost/ticket/8888
+Patch222: boost-1.54.0-python-unused_typedef.patch
+# https://svn.boost.org/trac/boost/ticket/8941
+Patch223: boost-1.54.0-lexical_cast-int128.patch
+# https://svn.boost.org/trac/boost/ticket/9038
+Patch224: boost-1.54.0-pool-test_linking.patch
+# https://svn.boost.org/trac/boost/ticket/9037
+Patch225: boost-1.54.0-thread-cond_variable_shadow.patch
+# https://svn.boost.org/trac/boost/ticket/9041
+Patch226: boost-1.54.0-thread-link_atomic.patch
 URL:		http://www.boost.org/
 BuildRequires:	bzip2-devel
 BuildRequires:	expat-devel
@@ -30,6 +89,8 @@ BuildRequires:	zlib-devel
 BuildConflicts:	gcc = 5:3.3.1
 BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
+%define		specflags	-DBOOST_IOSTREAMS_USE_DEPRECATED=1
+
 %description
 The Boost web site provides free peer-reviewed portable C++ source
 libraries. The emphasis is on libraries which work well with the C++
@@ -379,6 +440,38 @@ Dokumentacja dla biblioteki Boost C++.
 %patch0 -p1
 %patch1 -p2
 
+%patch100 -p1
+%patch101 -p1
+%patch102 -p1
+
+%patch200 -p1
+%patch201 -p1
+%patch202 -p1
+%patch203 -p0
+%patch204 -p1
+%patch205 -p1
+%patch206 -p0
+%patch207 -p0
+%patch208 -p0
+%patch209 -p0
+%patch210 -p1
+%patch211 -p1
+%patch212 -p1
+%patch213 -p1
+%patch214 -p1
+%patch215 -p1
+%patch216 -p1
+%patch217 -p1
+%patch218 -p1
+%patch219 -p1
+%patch220 -p1
+%patch221 -p1
+%patch222 -p1
+%patch223 -p0
+%patch224 -p1
+%patch225 -p1
+%patch226 -p1
+
 # - don't know how to pass it through (b)jam -s (no way?)
 #   due to oversophisticated build flags system.
 # - pass -fPIC due to <shared-linkable> removal.
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.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<ForwardIteratorT> 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<ForwardIteratorT> result_type;
+ 
+                     // Sanity check
+@@ -298,7 +296,6 @@ namespace boost {
+                     ForwardIteratorT End,
+                     unsigned int N) const
+                 {
+-                    typedef ForwardIteratorT input_iterator_type;
+                     typedef iterator_range<ForwardIteratorT> 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<ForwardIteratorT> result_type;
+ 
+                 if ( (End<=Begin) || ( static_cast<unsigned int>(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<ForwardIteratorT> result_type;
+ 
+                 if ( (End<=Begin) || ( static_cast<unsigned int>(End-Begin) < N ) )
diff --git a/boost-1.54.0-bind-static_assert.patch b/boost-1.54.0-bind-static_assert.patch
new file mode 100644
index 0000000..bd1800e
--- /dev/null
+++ b/boost-1.54.0-bind-static_assert.patch
@@ -0,0 +1,21 @@
+diff -up ./boost/bind/arg.hpp~ ./boost/bind/arg.hpp
+--- ./boost/bind/arg.hpp~	2007-11-25 10:07:19.000000000 -0800
++++ ./boost/bind/arg.hpp	2013-07-18 00:41:41.667412595 -0700
+@@ -21,6 +21,7 @@
+ 
+ #include <boost/config.hpp>
+ #include <boost/is_placeholder.hpp>
++#include <boost/static_assert.hpp>
+ 
+ namespace boost
+ {
+@@ -33,8 +34,7 @@ template< int I > struct arg
+ 
+     template< class T > arg( T const & /* t */ )
+     {
+-        // static assert I == is_placeholder<T>::value
+-        typedef char T_must_be_placeholder[ I == is_placeholder<T>::value? 1: -1 ];
++	BOOST_STATIC_ASSERT(I == is_placeholder<T>::value);
+     }
+ };
+ 
diff --git a/boost-1.54.0-concept-unused_typedef.patch b/boost-1.54.0-concept-unused_typedef.patch
new file mode 100644
index 0000000..9559a5c
--- /dev/null
+++ b/boost-1.54.0-concept-unused_typedef.patch
@@ -0,0 +1,21 @@
+diff -up ./boost/concept/detail/general.hpp~ ./boost/concept/detail/general.hpp
+--- ./boost/concept/detail/general.hpp~	2010-06-08 12:31:13.000000000 -0700
++++ ./boost/concept/detail/general.hpp	2013-07-18 06:01:05.967747186 -0700
+@@ -6,6 +6,7 @@
+ 
+ # include <boost/preprocessor/cat.hpp>
+ # include <boost/concept/detail/backward_compatibility.hpp>
++# include <boost/static_assert.hpp>
+ 
+ # ifdef BOOST_OLD_CONCEPT_SUPPORT
+ #  include <boost/concept/detail/has_constraints.hpp>
+@@ -68,7 +69,8 @@ struct requirement_<void(*)(Model)>
+ #  define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr )             \
+     typedef ::boost::concepts::detail::instantiate<          \
+     &::boost::concepts::requirement_<ModelFnPtr>::failed>    \
+-      BOOST_PP_CAT(boost_concept_check,__LINE__)
++      BOOST_PP_CAT(boost_concept_check,__LINE__)	     \
++      BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE
+ 
+ }}
+ 
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,"", at 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,"", at 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,"", at 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,"", at 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,"", at 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 at PLT       @ exit application
+ .size make_fcontext,.-make_fcontext
++
++/* Mark that we don't need executable stack.  */
++.section .note.GNU-stack,"", at 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 at PLT                    /* exit application */
+     hlt
+ .size make_fcontext,.-make_fcontext
++
++/* Mark that we don't need executable stack.  */
++.section .note.GNU-stack,"", at 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,"", at 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 at plt           # exit application
+ .size make_fcontext, .-make_fcontext
++
++/* Mark that we don't need executable stack.  */
++.section .note.GNU-stack,"", at 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,"", at 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,"", at 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,"", at 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,"", at progbits
diff --git a/boost-1.54.0-date_time-unused_typedef-2.patch b/boost-1.54.0-date_time-unused_typedef-2.patch
new file mode 100644
index 0000000..b39abe5
--- /dev/null
+++ b/boost-1.54.0-date_time-unused_typedef-2.patch
@@ -0,0 +1,13 @@
+diff -up boost_1_54_0/boost/date_time/gregorian/greg_facet.hpp\~ boost_1_54_0/boost/date_time/gregorian/greg_facet.hpp
+--- boost_1_54_0/boost/date_time/gregorian/greg_facet.hpp~	2008-11-23 12:13:35.000000000 +0100
++++ boost_1_54_0/boost/date_time/gregorian/greg_facet.hpp	2013-07-22 23:44:42.834012788 +0200
+@@ -215,7 +215,6 @@ namespace gregorian {
+   {
+     std::istream_iterator<std::basic_string<charT>, charT> beg(is), eos;
+     
+-    typedef boost::date_time::all_date_names_put<greg_facet_config, charT> facet_def;
+     d = from_stream(beg, eos);
+     return is;
+   }
+
+Diff finished.  Mon Jul 22 23:44:50 2013
diff --git a/boost-1.54.0-date_time-unused_typedef.patch b/boost-1.54.0-date_time-unused_typedef.patch
new file mode 100644
index 0000000..0f287ee
--- /dev/null
+++ b/boost-1.54.0-date_time-unused_typedef.patch
@@ -0,0 +1,100 @@
+Index: boost/date_time/date_parsing.hpp
+===================================================================
+--- boost/date_time/date_parsing.hpp	(revision 85073)
++++ boost/date_time/date_parsing.hpp	(working copy)
+@@ -113,7 +113,6 @@
+         spec_str = "mdy";
+       }
+ 
+-      typedef typename date_type::year_type year_type;
+       typedef typename date_type::month_type month_type;
+       unsigned pos = 0;
+       unsigned short year(0), month(0), day(0);
+@@ -160,7 +159,6 @@
+     parse_undelimited_date(const std::string& s) {
+       int offsets[] = {4,2,2};
+       int pos = 0;
+-      typedef typename date_type::year_type year_type;
+       //typename date_type::ymd_type ymd((year_type::min)(),1,1);
+       unsigned short y = 0, m = 0, d = 0;
+ 
+Index: boost/date_time/local_time/local_time_io.hpp
+===================================================================
+--- boost/date_time/local_time/local_time_io.hpp	(revision 85073)
++++ boost/date_time/local_time/local_time_io.hpp	(working copy)
+@@ -36,7 +36,6 @@
+     boost::io::ios_flags_saver iflags(os);
+     typedef local_date_time time_type;//::utc_time_type typename 
+     typedef date_time::time_facet<time_type, CharT> custom_time_facet;
+-    typedef std::time_put<CharT> std_time_facet;
+     std::ostreambuf_iterator<CharT> oitr(os);
+ 
+     if(std::has_facet<custom_time_facet>(os.getloc())) {
+@@ -123,7 +122,6 @@
+              const boost::local_time::local_time_period& p) {
+     boost::io::ios_flags_saver iflags(os);
+     typedef boost::date_time::time_facet<local_date_time, CharT> custom_facet;
+-    typedef std::time_put<CharT> std_time_facet;
+     std::ostreambuf_iterator<CharT> oitr(os);
+     if (std::has_facet<custom_facet>(os.getloc())) {
+       std::use_facet<custom_facet>(os.getloc()).put(oitr, os, os.fill(), p);
+Index: boost/date_time/posix_time/posix_time_io.hpp
+===================================================================
+--- boost/date_time/posix_time/posix_time_io.hpp	(revision 85073)
++++ boost/date_time/posix_time/posix_time_io.hpp	(working copy)
+@@ -47,7 +47,6 @@
+              const ptime& p) {
+     boost::io::ios_flags_saver iflags(os);
+     typedef boost::date_time::time_facet<ptime, CharT> custom_ptime_facet;
+-    typedef std::time_put<CharT>                  std_ptime_facet;
+     std::ostreambuf_iterator<CharT> oitr(os);
+     if (std::has_facet<custom_ptime_facet>(os.getloc()))
+       std::use_facet<custom_ptime_facet>(os.getloc()).put(oitr, os, os.fill(), p);
+@@ -114,7 +113,6 @@
+              const boost::posix_time::time_period& p) {
+     boost::io::ios_flags_saver iflags(os);
+     typedef boost::date_time::time_facet<ptime, CharT> custom_ptime_facet;
+-    typedef std::time_put<CharT>                  std_time_facet;
+     std::ostreambuf_iterator<CharT> oitr(os);
+     if (std::has_facet<custom_ptime_facet>(os.getloc())) {
+       std::use_facet<custom_ptime_facet>(os.getloc()).put(oitr, os, os.fill(), p);
+@@ -180,7 +178,6 @@
+   {
+     boost::io::ios_flags_saver iflags(os);
+     typedef boost::date_time::time_facet<ptime, CharT> custom_ptime_facet;
+-    typedef std::time_put<CharT>                  std_ptime_facet;
+     std::ostreambuf_iterator<CharT> oitr(os);
+     if (std::has_facet<custom_ptime_facet>(os.getloc()))
+       std::use_facet<custom_ptime_facet>(os.getloc()).put(oitr, os, os.fill(), td);
+Index: boost/date_time/string_convert.hpp
+===================================================================
+--- boost/date_time/string_convert.hpp	(revision 85073)
++++ boost/date_time/string_convert.hpp	(working copy)
+@@ -21,7 +21,6 @@
+   inline
+   std::basic_string<OutputT> convert_string_type(const std::basic_string<InputT>& inp_str)
+   {
+-    typedef std::basic_string<InputT> input_type;
+     typedef std::basic_string<OutputT> output_type;
+     output_type result;
+     result.insert(result.begin(), inp_str.begin(), inp_str.end());
+Index: boost/date_time/strings_from_facet.hpp
+===================================================================
+--- boost/date_time/strings_from_facet.hpp	(revision 85073)
++++ boost/date_time/strings_from_facet.hpp	(working copy)
+@@ -35,7 +35,6 @@
+ {
+   typedef std::basic_string<charT> string_type;
+   typedef std::vector<string_type> collection_type;
+-  typedef std::basic_ostringstream<charT> ostream_type;
+   typedef std::ostreambuf_iterator<charT> ostream_iter_type;
+   typedef std::basic_ostringstream<charT> stringstream_type;
+   typedef std::time_put<charT>           time_put_facet_type;
+@@ -86,7 +85,6 @@
+ {
+   typedef std::basic_string<charT> string_type;
+   typedef std::vector<string_type> collection_type;
+-  typedef std::basic_ostringstream<charT> ostream_type;
+   typedef std::ostreambuf_iterator<charT> ostream_iter_type;
+   typedef std::basic_ostringstream<charT> stringstream_type;
+   typedef std::time_put<charT>           time_put_facet_type;
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<IncidenceGraph> ));
+     typedef graph_traits<IncidenceGraph> GTraits;
+     typedef typename GTraits::vertex_descriptor Vertex;
+-    typedef typename GTraits::edge_descriptor Edge;
+     BOOST_CONCEPT_ASSERT(( BFSVisitorConcept<BFSVisitor, IncidenceGraph> ));
+     BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<ColorMap, Vertex> ));
+     typedef typename property_traits<ColorMap>::value_type ColorValue;
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<Traits>(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-locale-unused_typedef.patch b/boost-1.54.0-locale-unused_typedef.patch
new file mode 100644
index 0000000..b7c9128
--- /dev/null
+++ b/boost-1.54.0-locale-unused_typedef.patch
@@ -0,0 +1,11 @@
+diff -urp boost_1_54_0-orig/boost/locale/boundary/segment.hpp boost_1_54_0/boost/locale/boundary/segment.hpp
+--- boost_1_54_0-orig/boost/locale/boundary/segment.hpp	2013-07-23 00:47:27.020787174 +0200
++++ boost_1_54_0/boost/locale/boundary/segment.hpp	2013-07-23 00:50:40.382959016 +0200
+@@ -27,7 +27,6 @@ namespace boundary {
+         int compare_text(LeftIterator l_begin,LeftIterator l_end,RightIterator r_begin,RightIterator r_end)
+         {
+             typedef LeftIterator left_iterator;
+-            typedef RightIterator right_iterator;
+             typedef typename std::iterator_traits<left_iterator>::value_type char_type;
+             typedef std::char_traits<char_type> traits;
+             while(l_begin!=l_end && r_begin!=r_end) {
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<T, Policy>::type value_type;
+-   typedef typename policies::normalise<
+-      Policy, 
+-      policies::promote_float<false>, 
+-      policies::promote_double<false>, 
+-      policies::discrete_quantile<>,
+-      policies::assert_undefined<> >::type forwarding_policy;
+    BOOST_STATIC_ASSERT_MSG(false == std::numeric_limits<T>::is_integer, "Airy return type must be a floating-point type.");
+    return policies::checked_narrowing_cast<T, Policy>(detail::airy_ai_zero_imp<T>(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<T, Policy>::type value_type;
+-   typedef typename policies::normalise<
+-      Policy, 
+-      policies::promote_float<false>, 
+-      policies::promote_double<false>, 
+-      policies::discrete_quantile<>,
+-      policies::assert_undefined<> >::type forwarding_policy;
+    BOOST_STATIC_ASSERT_MSG(false == std::numeric_limits<T>::is_integer, "Airy return type must be a floating-point type.");
+    return policies::checked_narrowing_cast<T, Policy>(detail::airy_bi_zero_imp<T>(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<RT1, RT2, RT3>::type result_type;
+    typedef typename policies::evaluation<result_type, Policy>::type value_type;
+-   typedef typename lanczos::lanczos<value_type, Policy>::type evaluation_type;
+    typedef typename policies::normalise<
+       Policy, 
+       policies::promote_float<false>, 
+@@ -1349,7 +1348,6 @@
+    BOOST_FPU_EXCEPTION_GUARD
+    typedef typename tools::promote_args<RT1, RT2, RT3>::type result_type;
+    typedef typename policies::evaluation<result_type, Policy>::type value_type;
+-   typedef typename lanczos::lanczos<value_type, Policy>::type evaluation_type;
+    typedef typename policies::normalise<
+       Policy, 
+       policies::promote_float<false>, 
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<RealType, no_overthrow_policy> gamma_nooverflow;
++      gamma_nooverflow g(static_cast<RealType>(0.5), static_cast<RealType>(1.));
+ 
+-      gamma_distribution<RealType, no_overthrow_policy> g(static_cast<RealType>(0.5), static_cast<RealType>(1.));
+-
+-      // gamma_nooverflow g(static_cast<RealType>(0.5), static_cast<RealType>(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<status> communicator::iprobe(in
+ 
+ status communicator::probe(int source, int tag) const
+ {
+-  typedef optional<status> result_type;
+ 
+   status stat;
+   BOOST_MPI_CHECK_RESULT(MPI_Probe,
diff --git a/boost-1.54.0-mpl-print.patch b/boost-1.54.0-mpl-print.patch
new file mode 100644
index 0000000..6c27b14
--- /dev/null
+++ b/boost-1.54.0-mpl-print.patch
@@ -0,0 +1,37 @@
+Index: boost/mpl/print.hpp
+===================================================================
+--- boost/mpl/print.hpp	(revision 83411)
++++ boost/mpl/print.hpp	(working copy)
+@@ -45,22 +45,21 @@
+     : mpl::identity<T>
+ #if defined(__MWERKS__)
+     , aux::print_base
+-#endif 
++#endif
+ {
+ #if defined(BOOST_MSVC)
+     enum { n = sizeof(T) + -1 };
+ #elif defined(__MWERKS__)
+     void f(int);
+-#else 
+-    enum {
+-        n =
+-# if defined(__EDG_VERSION__)
+-           aux::dependent_unsigned<T>::value > -1
+-# else 
+-           sizeof(T) > -1
+-# endif 
+-        };
+-#endif 
++#elif defined(__EDG_VERSION__)
++    enum { n = aux::dependent_unsigned<T>::value > -1 };
++#elif defined(BOOST_GCC)
++    enum { n1 };
++    enum { n2 };
++    enum { n = n1 != n2 };
++#else
++    enum { n = sizeof(T) > -1 };
++#endif
+ };
+ 
+ #if defined(BOOST_MSVC)
diff --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 <class T>
+ void calc_e(T& result, unsigned digits)
+ {
+    typedef typename mpl::front<typename T::unsigned_types>::type ui_type;
+-   typedef typename mpl::front<typename T::float_types>::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<int, T>::type si_type;
+-   typedef typename boost::multiprecision::detail::canonical<unsigned, T>::type ui_type;
+-   typedef typename T::exponent_type exp_type;
+-   typedef typename boost::multiprecision::detail::canonical<exp_type, T>::type canonical_exp_type;
+-   typedef typename mpl::front<typename T::float_types>::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<int, T>::type si_type;
+    typedef typename T::exponent_type exp_type;
+    typedef typename boost::multiprecision::detail::canonical<exp_type, T>::type canonical_exp_type;
+-   typedef typename boost::multiprecision::detail::canonical<float, T>::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<int, T>::type si_type;
+    typedef typename boost::multiprecision::detail::canonical<unsigned, T>::type ui_type;
+    typedef typename T::exponent_type exp_type;
+    typedef typename boost::multiprecision::detail::canonical<exp_type, T>::type canonical_exp_type;
+@@ -409,9 +403,6 @@ inline void eval_pow(T& result, const T&
+ {
+    BOOST_STATIC_ASSERT_MSG(number_category<T>::value == number_kind_floating_point, "The pow function is only valid for floating point types.");
+    typedef typename boost::multiprecision::detail::canonical<int, T>::type si_type;
+-   typedef typename boost::multiprecision::detail::canonical<unsigned, T>::type ui_type;
+-   typedef typename T::exponent_type exp_type;
+-   typedef typename boost::multiprecision::detail::canonical<exp_type, T>::type canonical_exp_type;
+    typedef typename mpl::front<typename T::float_types>::type fp_type;
+ 
+    if((&result == &x) || (&result == &a))
+@@ -595,10 +586,7 @@ namespace detail{
+    template <class T>
+    void sinhcosh(const T& x, T* p_sinh, T* p_cosh)
+    {
+-      typedef typename boost::multiprecision::detail::canonical<int, T>::type si_type;
+       typedef typename boost::multiprecision::detail::canonical<unsigned, T>::type ui_type;
+-      typedef typename T::exponent_type exp_type;
+-      typedef typename boost::multiprecision::detail::canonical<exp_type, T>::type canonical_exp_type;
+       typedef typename mpl::front<typename T::float_types>::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<boost::int32_t, T>::type si_type;
+    typedef typename boost::multiprecision::detail::canonical<boost::uint32_t, T>::type ui_type;
+-   typedef typename T::exponent_type exp_type;
+-   typedef typename boost::multiprecision::detail::canonical<exp_type, T>::type canonical_exp_type;
+-   typedef typename mpl::front<typename T::float_types>::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<boost::int32_t, T>::type si_type;
+    typedef typename boost::multiprecision::detail::canonical<boost::uint32_t, T>::type ui_type;
+-   typedef typename T::exponent_type exp_type;
+-   typedef typename boost::multiprecision::detail::canonical<exp_type, T>::type canonical_exp_type;
+    typedef typename mpl::front<typename T::float_types>::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<boost::int32_t, T>::type si_type;
+    typedef typename boost::multiprecision::detail::canonical<boost::uint32_t, T>::type ui_type;
+-   typedef typename T::exponent_type exp_type;
+-   typedef typename boost::multiprecision::detail::canonical<exp_type, T>::type canonical_exp_type;
+    typedef typename mpl::front<typename T::float_types>::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<boost::int32_t, T>::type si_type;
+    typedef typename boost::multiprecision::detail::canonical<boost::uint32_t, T>::type ui_type;
+-   typedef typename T::exponent_type exp_type;
+-   typedef typename boost::multiprecision::detail::canonical<exp_type, T>::type canonical_exp_type;
+-   typedef typename mpl::front<typename T::float_types>::type fp_type;
+ 
+    T x_pow_n_div_n_fact(x);
+    T pochham_a         (a);
+@@ -443,10 +432,7 @@ template <class T>
+ void eval_asin(T& result, const T& x)
+ {
+    BOOST_STATIC_ASSERT_MSG(number_category<T>::value == number_kind_floating_point, "The asin function is only valid for floating point types.");
+-   typedef typename boost::multiprecision::detail::canonical<boost::int32_t, T>::type si_type;
+    typedef typename boost::multiprecision::detail::canonical<boost::uint32_t, T>::type ui_type;
+-   typedef typename T::exponent_type exp_type;
+-   typedef typename boost::multiprecision::detail::canonical<exp_type, T>::type canonical_exp_type;
+    typedef typename mpl::front<typename T::float_types>::type fp_type;
+ 
+    if(&result == &x)
+@@ -597,8 +583,6 @@ void eval_atan(T& result, const T& x)
+    BOOST_STATIC_ASSERT_MSG(number_category<T>::value == number_kind_floating_point, "The atan function is only valid for floating point types.");
+    typedef typename boost::multiprecision::detail::canonical<boost::int32_t, T>::type si_type;
+    typedef typename boost::multiprecision::detail::canonical<boost::uint32_t, T>::type ui_type;
+-   typedef typename T::exponent_type exp_type;
+-   typedef typename boost::multiprecision::detail::canonical<exp_type, T>::type canonical_exp_type;
+    typedef typename mpl::front<typename T::float_types>::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<boost::int32_t, T>::type si_type;
+    typedef typename boost::multiprecision::detail::canonical<boost::uint32_t, T>::type ui_type;
+-   typedef typename T::exponent_type exp_type;
+-   typedef typename boost::multiprecision::detail::canonical<exp_type, T>::type canonical_exp_type;
+-   typedef typename mpl::front<typename T::float_types>::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 <class To, class From>
+ void generic_interconvert(To& to, const From& from, const mpl::int_<number_kind_rational>& /*to_type*/, const mpl::int_<number_kind_rational>& /*from_type*/)
+ {
+-   typedef typename component_type<number<From> >::type   from_component_type;
+    typedef typename component_type<number<To> >::type     to_component_type;
+ 
+    number<From> t(from);
diff --git a/boost-1.54.0-numeric-unused_typedef.patch b/boost-1.54.0-numeric-unused_typedef.patch
new file mode 100644
index 0000000..b391725
--- /dev/null
+++ b/boost-1.54.0-numeric-unused_typedef.patch
@@ -0,0 +1,250 @@
+diff -up boost_1_54_0/boost/numeric/ublas/detail/matrix_assign.hpp~ boost_1_54_0/boost/numeric/ublas/detail/matrix_assign.hpp
+--- boost_1_54_0/boost/numeric/ublas/detail/matrix_assign.hpp~	2010-10-19 00:01:35.000000000 -0700
++++ boost_1_54_0/boost/numeric/ublas/detail/matrix_assign.hpp	2013-07-22 04:33:26.399038120 -0700
+@@ -1303,7 +1303,6 @@ namespace detail {
+     void matrix_swap (M &m, matrix_expression<E> &e, packed_proxy_tag, row_major_tag) {
+         typedef F<typename M::iterator2::reference, typename E::reference> functor_type;
+         // R unnecessary, make_conformant not required
+-        typedef typename M::size_type size_type;
+         typedef typename M::difference_type difference_type;
+         typename M::iterator1 it1 (m.begin1 ());
+         typename E::iterator1 it1e (e ().begin1 ());
+@@ -1329,7 +1328,6 @@ namespace detail {
+     void matrix_swap (M &m, matrix_expression<E> &e, packed_proxy_tag, column_major_tag) {
+         typedef F<typename M::iterator1::reference, typename E::reference> functor_type;
+         // R unnecessary, make_conformant not required
+-        typedef typename M::size_type size_type;
+         typedef typename M::difference_type difference_type;
+         typename M::iterator2 it2 (m.begin2 ());
+         typename E::iterator2 it2e (e ().begin2 ());
+@@ -1357,7 +1355,6 @@ namespace detail {
+         typedef R conformant_restrict_type;
+         typedef typename M::size_type size_type;
+         typedef typename M::difference_type difference_type;
+-        typedef typename M::value_type value_type;
+         BOOST_UBLAS_CHECK (m.size1 () == e ().size1 (), bad_size ());
+         BOOST_UBLAS_CHECK (m.size2 () == e ().size2 (), bad_size ());
+ 
+@@ -1482,7 +1479,6 @@ namespace detail {
+         typedef R conformant_restrict_type;
+         typedef typename M::size_type size_type;
+         typedef typename M::difference_type difference_type;
+-        typedef typename M::value_type value_type;
+         BOOST_UBLAS_CHECK (m.size1 () == e ().size1 (), bad_size ());
+         BOOST_UBLAS_CHECK (m.size2 () == e ().size2 (), bad_size ());
+ 
+diff -up boost_1_54_0/boost/numeric/ublas/detail/vector_assign.hpp~ boost_1_54_0/boost/numeric/ublas/detail/vector_assign.hpp
+--- boost_1_54_0/boost/numeric/ublas/detail/vector_assign.hpp~	2007-11-25 10:07:19.000000000 -0800
++++ boost_1_54_0/boost/numeric/ublas/detail/vector_assign.hpp	2013-07-22 04:32:21.774650296 -0700
+@@ -379,7 +379,6 @@ namespace detail {
+         typedef typename V::size_type size_type;
+         typedef typename V::difference_type difference_type;
+         typedef typename V::value_type value_type;
+-        typedef typename V::reference reference;
+ #if BOOST_UBLAS_TYPE_CHECK
+         vector<value_type> cv (v.size ());
+         indexing_vector_assign<scalar_assign> (cv, v);
+@@ -513,7 +512,6 @@ namespace detail {
+         typedef F<typename V::iterator::reference, typename E::iterator::reference> functor_type;
+         typedef typename V::size_type size_type;
+         typedef typename V::difference_type difference_type;
+-        typedef typename V::value_type value_type;
+ 
+         detail::make_conformant (v, e);
+         // FIXME should be a seperate restriction for E
+diff -up boost_1_54_0/boost/numeric/ublas/lu.hpp~ boost_1_54_0/boost/numeric/ublas/lu.hpp
+--- boost_1_54_0/boost/numeric/ublas/lu.hpp~	2010-07-04 23:06:24.000000000 -0700
++++ boost_1_54_0/boost/numeric/ublas/lu.hpp	2013-07-22 04:40:06.634440205 -0700
+@@ -63,7 +63,6 @@ namespace boost { namespace numeric { na
+     BOOST_UBLAS_INLINE
+     void swap_rows (const PM &pm, MV &mv, vector_tag) {
+         typedef typename PM::size_type size_type;
+-        typedef typename MV::value_type value_type;
+ 
+         size_type size = pm.size ();
+         for (size_type i = 0; i < size; ++ i) {
+@@ -75,7 +74,6 @@ namespace boost { namespace numeric { na
+     BOOST_UBLAS_INLINE
+     void swap_rows (const PM &pm, MV &mv, matrix_tag) {
+         typedef typename PM::size_type size_type;
+-        typedef typename MV::value_type value_type;
+ 
+         size_type size = pm.size ();
+         for (size_type i = 0; i < size; ++ i) {
+diff -up boost_1_54_0/boost/numeric/ublas/operation.hpp~ boost_1_54_0/boost/numeric/ublas/operation.hpp
+--- boost_1_54_0/boost/numeric/ublas/operation.hpp~	2007-11-25 10:07:19.000000000 -0800
++++ boost_1_54_0/boost/numeric/ublas/operation.hpp	2013-07-22 04:42:19.436046788 -0700
+@@ -129,7 +129,6 @@ namespace boost { namespace numeric { na
+                const vector_expression<E2> &e2,
+                V &v, packed_random_access_iterator_tag, row_major_tag) {
+         typedef const E1 expression1_type;
+-        typedef const E2 expression2_type;
+         typedef typename V::size_type size_type;
+ 
+         typename expression1_type::const_iterator1 it1 (e1 ().begin1 ());
+@@ -159,7 +158,6 @@ namespace boost { namespace numeric { na
+                const vector_expression<E2> &e2,
+                V &v, packed_random_access_iterator_tag, column_major_tag) {
+         typedef const E1 expression1_type;
+-        typedef const E2 expression2_type;
+         typedef typename V::size_type size_type;
+ 
+         typename expression1_type::const_iterator2 it2 (e1 ().begin2 ());
+@@ -188,9 +186,7 @@ namespace boost { namespace numeric { na
+     axpy_prod (const matrix_expression<E1> &e1,
+                const vector_expression<E2> &e2,
+                V &v, sparse_bidirectional_iterator_tag) {
+-        typedef const E1 expression1_type;
+         typedef const E2 expression2_type;
+-        typedef typename V::size_type size_type;
+ 
+         typename expression2_type::const_iterator it (e2 ().begin ());
+         typename expression2_type::const_iterator it_end (e2 ().end ());
+@@ -350,7 +346,6 @@ namespace boost { namespace numeric { na
+     axpy_prod (const vector_expression<E1> &e1,
+                const matrix_expression<E2> &e2,
+                V &v, packed_random_access_iterator_tag, column_major_tag) {
+-        typedef const E1 expression1_type;
+         typedef const E2 expression2_type;
+         typedef typename V::size_type size_type;
+ 
+@@ -380,7 +375,6 @@ namespace boost { namespace numeric { na
+     axpy_prod (const vector_expression<E1> &e1,
+                const matrix_expression<E2> &e2,
+                V &v, packed_random_access_iterator_tag, row_major_tag) {
+-        typedef const E1 expression1_type;
+         typedef const E2 expression2_type;
+         typedef typename V::size_type size_type;
+ 
+@@ -411,8 +405,6 @@ namespace boost { namespace numeric { na
+                const matrix_expression<E2> &e2,
+                V &v, sparse_bidirectional_iterator_tag) {
+         typedef const E1 expression1_type;
+-        typedef const E2 expression2_type;
+-        typedef typename V::size_type size_type;
+ 
+         typename expression1_type::const_iterator it (e1 ().begin ());
+         typename expression1_type::const_iterator it_end (e1 ().end ());
+@@ -501,9 +493,6 @@ namespace boost { namespace numeric { na
+                const matrix_expression<E2> &e2,
+                M &m, TRI,
+                dense_proxy_tag, row_major_tag) {
+-        typedef M matrix_type;
+-        typedef const E1 expression1_type;
+-        typedef const E2 expression2_type;
+         typedef typename M::size_type size_type;
+         typedef typename M::value_type value_type;
+ 
+@@ -530,11 +519,9 @@ namespace boost { namespace numeric { na
+                const matrix_expression<E2> &e2,
+                M &m, TRI,
+                sparse_proxy_tag, row_major_tag) {
+-        typedef M matrix_type;
+         typedef TRI triangular_restriction;
+         typedef const E1 expression1_type;
+         typedef const E2 expression2_type;
+-        typedef typename M::size_type size_type;
+         typedef typename M::value_type value_type;
+ 
+ #if BOOST_UBLAS_TYPE_CHECK
+@@ -580,9 +567,6 @@ namespace boost { namespace numeric { na
+                const matrix_expression<E2> &e2,
+                M &m, TRI,
+                dense_proxy_tag, column_major_tag) {
+-        typedef M matrix_type;
+-        typedef const E1 expression1_type;
+-        typedef const E2 expression2_type;
+         typedef typename M::size_type size_type;
+         typedef typename M::value_type value_type;
+ 
+@@ -609,11 +593,9 @@ namespace boost { namespace numeric { na
+                const matrix_expression<E2> &e2,
+                M &m, TRI,
+                sparse_proxy_tag, column_major_tag) {
+-        typedef M matrix_type;
+         typedef TRI triangular_restriction;
+         typedef const E1 expression1_type;
+         typedef const E2 expression2_type;
+-        typedef typename M::size_type size_type;
+         typedef typename M::value_type value_type;
+ 
+ #if BOOST_UBLAS_TYPE_CHECK
+@@ -738,9 +720,6 @@ namespace boost { namespace numeric { na
+               const matrix_expression<E2> &e2,
+               M &m,
+               dense_proxy_tag, row_major_tag) {
+-        typedef M matrix_type;
+-        typedef const E1 expression1_type;
+-        typedef const E2 expression2_type;
+         typedef typename M::size_type size_type;
+         typedef typename M::value_type value_type;
+ 
+@@ -769,9 +748,6 @@ namespace boost { namespace numeric { na
+               const matrix_expression<E2> &e2,
+               M &m,
+               dense_proxy_tag, column_major_tag) {
+-        typedef M matrix_type;
+-        typedef const E1 expression1_type;
+-        typedef const E2 expression2_type;
+         typedef typename M::size_type size_type;
+         typedef typename M::value_type value_type;
+ 
+diff -up boost_1_54_0/boost/numeric/ublas/triangular.hpp~ boost_1_54_0/boost/numeric/ublas/triangular.hpp
+--- boost_1_54_0/boost/numeric/ublas/triangular.hpp~	2012-09-18 14:07:07.000000000 -0700
++++ boost_1_54_0/boost/numeric/ublas/triangular.hpp	2013-07-22 04:39:31.667230329 -0700
+@@ -1859,7 +1859,6 @@ namespace boost { namespace numeric { na
+     void inplace_solve (const matrix_expression<E1> &e1, vector_expression<E2> &e2,
+                         lower_tag, column_major_tag, dense_proxy_tag) {
+         typedef typename E2::size_type size_type;
+-        typedef typename E2::difference_type difference_type;
+         typedef typename E2::value_type value_type;
+ 
+         BOOST_UBLAS_CHECK (e1 ().size1 () == e1 ().size2 (), bad_size ());
+@@ -1914,7 +1913,6 @@ namespace boost { namespace numeric { na
+     void inplace_solve (const matrix_expression<E1> &e1, vector_expression<E2> &e2,
+                         lower_tag, column_major_tag, unknown_storage_tag) {
+         typedef typename E2::size_type size_type;
+-        typedef typename E2::difference_type difference_type;
+         typedef typename E2::value_type value_type;
+ 
+         BOOST_UBLAS_CHECK (e1 ().size1 () == e1 ().size2 (), bad_size ());
+@@ -1943,7 +1941,6 @@ namespace boost { namespace numeric { na
+     void inplace_solve (const matrix_expression<E1> &e1, vector_expression<E2> &e2,
+                         lower_tag, row_major_tag, dense_proxy_tag) {
+         typedef typename E2::size_type size_type;
+-        typedef typename E2::difference_type difference_type;
+         typedef typename E2::value_type value_type;
+ 
+         BOOST_UBLAS_CHECK (e1 ().size1 () == e1 ().size2 (), bad_size ());
+@@ -1969,7 +1966,6 @@ namespace boost { namespace numeric { na
+     void inplace_solve (const matrix_expression<E1> &e1, vector_expression<E2> &e2,
+                         lower_tag, row_major_tag, packed_proxy_tag) {
+         typedef typename E2::size_type size_type;
+-        typedef typename E2::difference_type difference_type;
+         typedef typename E2::value_type value_type;
+ 
+         BOOST_UBLAS_CHECK (e1 ().size1 () == e1 ().size2 (), bad_size ());
+@@ -1998,7 +1994,6 @@ namespace boost { namespace numeric { na
+     void inplace_solve (const matrix_expression<E1> &e1, vector_expression<E2> &e2,
+                         lower_tag, row_major_tag, unknown_storage_tag) {
+         typedef typename E2::size_type size_type;
+-        typedef typename E2::difference_type difference_type;
+         typedef typename E2::value_type value_type;
+ 
+         BOOST_UBLAS_CHECK (e1 ().size1 () == e1 ().size2 (), bad_size ());
+@@ -2374,7 +2369,6 @@ namespace boost { namespace numeric { na
+     void inplace_solve (const matrix_expression<E1> &e1, matrix_expression<E2> &e2,
+                         lower_tag, dense_proxy_tag) {
+         typedef typename E2::size_type size_type;
+-        typedef typename E2::difference_type difference_type;
+         typedef typename E2::value_type value_type;
+ 
+         BOOST_UBLAS_CHECK (e1 ().size1 () == e1 ().size2 (), bad_size ());
+@@ -2435,7 +2429,6 @@ namespace boost { namespace numeric { na
+     void inplace_solve (const matrix_expression<E1> &e1, matrix_expression<E2> &e2,
+                         lower_tag, unknown_storage_tag) {
+         typedef typename E2::size_type size_type;
+-        typedef typename E2::difference_type difference_type;
+         typedef typename E2::value_type value_type;
+ 
+         BOOST_UBLAS_CHECK (e1 ().size1 () == e1 ().size2 (), bad_size ());
diff --git a/boost-1.54.0-pool-test_linking.patch b/boost-1.54.0-pool-test_linking.patch
new file mode 100644
index 0000000..0f749f7
--- /dev/null
+++ b/boost-1.54.0-pool-test_linking.patch
@@ -0,0 +1,31 @@
+diff -up ./libs/pool/test/Jamfile.v2~ ./libs/pool/test/Jamfile.v2
+--- ./libs/pool/test/Jamfile.v2~	2011-08-02 19:04:07.000000000 +0200
++++ ./libs/pool/test/Jamfile.v2	2013-08-22 11:48:34.907287286 +0200
+@@ -24,17 +24,17 @@ run valgrind_config_check.cpp : : : <tes
+ explicit valgrind_config_check ;
+ 
+ test-suite pool :
+-    [ run test_simple_seg_storage.cpp ]
+-    [ run test_pool_alloc.cpp ]
+-    [ run pool_msvc_compiler_bug_test.cpp ]
+-    [ run test_msvc_mem_leak_detect.cpp ]
+-    [ run test_bug_3349.cpp ]
+-    [ run test_bug_4960.cpp ]
+-    [ run test_bug_1252.cpp ]
+-    [ run test_bug_2696.cpp ]
+-    [ run test_bug_5526.cpp ]
++    [ run test_simple_seg_storage.cpp : : : <library>/boost/system//boost_system ]
++    [ run test_pool_alloc.cpp : : : <library>/boost/system//boost_system ]
++    [ run pool_msvc_compiler_bug_test.cpp : : : <library>/boost/system//boost_system ]
++    [ run test_msvc_mem_leak_detect.cpp : : : <library>/boost/system//boost_system ]
++    [ run test_bug_3349.cpp : : : <library>/boost/system//boost_system ]
++    [ run test_bug_4960.cpp : : : <library>/boost/system//boost_system ]
++    [ run test_bug_1252.cpp : : : <library>/boost/system//boost_system ]
++    [ run test_bug_2696.cpp : : : <library>/boost/system//boost_system ]
++    [ run test_bug_5526.cpp : : : <library>/boost/system//boost_system ]
+     [ run test_threading.cpp : : : <threading>multi <library>/boost/thread//boost_thread <toolset>gcc:<cxxflags>-Wno-attributes <toolset>gcc:<cxxflags>-Wno-missing-field-initializers ]
+-    [ run  ../example/time_pool_alloc.cpp ]
++    [ run  ../example/time_pool_alloc.cpp : : : <library>/boost/system//boost_system ]
+     [ compile test_poisoned_macros.cpp ]
+ 
+ #
diff --git a/boost-1.54.0-property_tree-unused_typedef.patch b/boost-1.54.0-property_tree-unused_typedef.patch
new file mode 100644
index 0000000..05158ef
--- /dev/null
+++ b/boost-1.54.0-property_tree-unused_typedef.patch
@@ -0,0 +1,19 @@
+diff -urp boost_1_54_0-orig/boost/property_tree/detail/xml_parser_write.hpp boost_1_54_0/boost/property_tree/detail/xml_parser_write.hpp
+--- boost_1_54_0-orig/boost/property_tree/detail/xml_parser_write.hpp	2013-07-23 00:47:43.731888449 +0200
++++ boost_1_54_0/boost/property_tree/detail/xml_parser_write.hpp	2013-07-23 00:50:40.597960319 +0200
+@@ -35,7 +35,6 @@ namespace boost { namespace property_tre
+                            const xml_writer_settings<Ch> & settings
+                            )
+     {
+-        typedef typename std::basic_string<Ch> Str;
+         if (separate_line)
+             write_xml_indent(stream,indent,settings);
+         stream << Ch('<') << Ch('!') << Ch('-') << Ch('-');
+@@ -69,7 +68,6 @@ namespace boost { namespace property_tre
+     {
+ 
+         typedef typename Ptree::key_type::value_type Ch;
+-        typedef typename std::basic_string<Ch> Str;
+         typedef typename Ptree::const_iterator It;
+ 
+         bool want_pretty = settings.indent_count > 0;
diff --git a/boost-1.54.0-python-unused_typedef.patch b/boost-1.54.0-python-unused_typedef.patch
new file mode 100644
index 0000000..8adf8ed
--- /dev/null
+++ b/boost-1.54.0-python-unused_typedef.patch
@@ -0,0 +1,15 @@
+diff -up boost_1_53_0/boost/python/to_python_value.hpp\~ boost_1_53_0/boost/python/to_python_value.hpp
+--- boost_1_53_0/boost/python/to_python_value.hpp~	2007-12-16 11:12:07.000000000 +0100
++++ boost_1_53_0/boost/python/to_python_value.hpp	2013-07-23 16:19:02.518904596 +0200
+@@ -147,8 +147,8 @@ namespace detail
+   template <class T>
+   inline PyObject* registry_to_python_value<T>::operator()(argument_type x) const
+   {
+-      typedef converter::registered<argument_type> r;
+ # if BOOST_WORKAROUND(__GNUC__, < 3)
++      typedef converter::registered<argument_type> r;
+       // suppresses an ICE, somehow
+       (void)r::converters;
+ # endif 
+
+Diff finished.  Tue Jul 23 16:19:05 2013
diff --git a/boost-1.54.0-random-unused_typedef.patch b/boost-1.54.0-random-unused_typedef.patch
new file mode 100644
index 0000000..fff4226
--- /dev/null
+++ b/boost-1.54.0-random-unused_typedef.patch
@@ -0,0 +1,24 @@
+Index: boost/random/generate_canonical.hpp
+===================================================================
+--- boost/random/generate_canonical.hpp	(revision 85073)
++++ boost/random/generate_canonical.hpp	(working copy)
+@@ -54,7 +54,6 @@
+     using std::floor;
+     BOOST_ASSERT((g.min)() == 0);
+     BOOST_ASSERT((g.max)() == 1);
+-    typedef typename URNG::result_type base_result;
+     std::size_t digits = std::numeric_limits<RealType>::digits;
+     std::size_t engine_bits = detail::generator_bits<URNG>::value();
+     std::size_t b = (std::min)(bits, digits);
+Index: boost/random/uniform_real_distribution.hpp
+===================================================================
+--- boost/random/uniform_real_distribution.hpp	(revision 85073)
++++ boost/random/uniform_real_distribution.hpp	(working copy)
+@@ -36,7 +36,6 @@
+ {
+     for(;;) {
+         typedef T result_type;
+-        typedef typename Engine::result_type base_result;
+         result_type numerator = static_cast<T>(eng() - (eng.min)());
+         result_type divisor = static_cast<T>((eng.max)() - (eng.min)());
+         BOOST_ASSERT(divisor > 0);
diff --git a/boost-1.54.0-spirit-unused_typedef-2.patch b/boost-1.54.0-spirit-unused_typedef-2.patch
new file mode 100644
index 0000000..fdc9849
--- /dev/null
+++ b/boost-1.54.0-spirit-unused_typedef-2.patch
@@ -0,0 +1,22 @@
+diff -urp boost_1_54_0-orig/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp boost_1_54_0/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp
+--- boost_1_54_0-orig/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp	2013-07-23 00:47:37.497850668 +0200
++++ boost_1_54_0/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp	2013-07-23 00:50:40.662960713 +0200
+@@ -307,7 +307,6 @@ struct grammar_definition
+ #if !defined(BOOST_SPIRIT_SINGLE_GRAMMAR_INSTANCE)
+         typedef impl::grammar_helper_base<GrammarT> helper_base_t;
+         typedef grammar_helper_list<GrammarT> helper_list_t;
+-        typedef typename helper_list_t::vector_t::reverse_iterator iterator_t;
+ 
+         helper_list_t&  helpers =
+ # if !defined(__GNUC__) || (__GNUC__ > 2)
+diff -urp boost_1_54_0-orig/boost/spirit/home/classic/tree/parse_tree.hpp boost_1_54_0/boost/spirit/home/classic/tree/parse_tree.hpp
+--- boost_1_54_0-orig/boost/spirit/home/classic/tree/parse_tree.hpp	2013-07-23 00:47:37.407850122 +0200
++++ boost_1_54_0/boost/spirit/home/classic/tree/parse_tree.hpp	2013-07-23 00:50:40.674960786 +0200
+@@ -76,7 +76,6 @@ struct pt_tree_policy :
+     template<typename MatchAT, typename MatchBT>
+     static void concat(MatchAT& a, MatchBT const& b)
+     {
+-        typedef typename match_t::attr_t attr_t;
+         BOOST_SPIRIT_ASSERT(a && b);
+ 
+         std::copy(b.trees.begin(), b.trees.end(),
diff --git a/boost-1.54.0-spirit-unused_typedef.patch b/boost-1.54.0-spirit-unused_typedef.patch
new file mode 100644
index 0000000..830e418
--- /dev/null
+++ b/boost-1.54.0-spirit-unused_typedef.patch
@@ -0,0 +1,11 @@
+diff -up boost_1_54_0/boost/spirit/home/classic/core/primitives/primitives.hpp~ boost_1_54_0/boost/spirit/home/classic/core/primitives/primitives.hpp
+--- boost_1_54_0/boost/spirit/home/classic/core/primitives/primitives.hpp~	2008-06-22 08:05:38.000000000 -0700
++++ boost_1_54_0/boost/spirit/home/classic/core/primitives/primitives.hpp	2013-07-22 06:35:38.417914083 -0700
+@@ -47,7 +47,6 @@ BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN
+         typename parser_result<self_t, ScannerT>::type
+         parse(ScannerT const& scan) const
+         {
+-            typedef typename parser_result<self_t, ScannerT>::type result_t;
+             typedef typename ScannerT::value_t value_t;
+             typedef typename ScannerT::iterator_t iterator_t;
+ 
diff --git a/boost-1.54.0-static_warning-unused_typedef.patch b/boost-1.54.0-static_warning-unused_typedef.patch
new file mode 100644
index 0000000..9418a17
--- /dev/null
+++ b/boost-1.54.0-static_warning-unused_typedef.patch
@@ -0,0 +1,23 @@
+diff -up boost_1_54_0/boost/serialization/static_warning.hpp\~ boost_1_54_0/boost/serialization/static_warning.hpp
+--- boost_1_54_0/boost/serialization/static_warning.hpp~	2013-07-15 23:36:08.224983552 +0200
++++ boost_1_54_0/boost/serialization/static_warning.hpp	2013-07-18 19:33:36.163463409 +0200
+@@ -72,6 +72,7 @@
+ #include <boost/mpl/bool.hpp>
+ #include <boost/mpl/print.hpp>
+ #include <boost/mpl/eval_if.hpp>
++#include <boost/static_assert.hpp>
+ 
+ namespace boost {
+ namespace serialization {
+@@ -101,7 +102,8 @@ struct BOOST_SERIALIZATION_SS {};
+ #define BOOST_SERIALIZATION_BSW(B, L) \
+     typedef boost::serialization::BOOST_SERIALIZATION_SS< \
+         sizeof( boost::serialization::static_warning_test< B, L > ) \
+-    > BOOST_JOIN(STATIC_WARNING_LINE, L);
++    > BOOST_JOIN(STATIC_WARNING_LINE, L) \
++    BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE;
+ 
+ #define BOOST_STATIC_WARNING(B) BOOST_SERIALIZATION_BSW(B, __LINE__)
+ 
+
+Diff finished.  Fri Jul 19 01:38:59 2013
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<typename lock_type>
+-        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<typename lock_type>
+-        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<typename lock_type,typename duration_type>
+@@ -218,20 +218,20 @@ namespace boost
+         }
+ 
+         template<typename lock_type,typename predicate_type>
+-        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<typename lock_type,typename predicate_type>
+-        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<typename lock_type,typename duration_type,typename predicate_type>
+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<mutex>& 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<mutex>& 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<typename duration_type>
+@@ -126,11 +126,11 @@ namespace boost
+         template<typename predicate_type>
+         bool timed_wait(
+             unique_lock<mutex>& 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<typename predicate_type>
+         bool timed_wait(
+             unique_lock<mutex>& 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<typename duration_type,typename predicate_type>
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 += <library>/boost/atomic//boost_atomic ;
++    }
++
+     if <threadapi>pthread in $(properties)
+     {
+         result += <define>BOOST_THREAD_POSIX ;
diff --git a/boost-1.54.0-tuple-unused_typedef.patch b/boost-1.54.0-tuple-unused_typedef.patch
new file mode 100644
index 0000000..51481c2
--- /dev/null
+++ b/boost-1.54.0-tuple-unused_typedef.patch
@@ -0,0 +1,12 @@
+Index: boost/tuple/detail/tuple_basic.hpp
+===================================================================
+--- boost/tuple/detail/tuple_basic.hpp	(revision 85075)
++++ boost/tuple/detail/tuple_basic.hpp	(working copy)
+@@ -225,7 +225,6 @@
+ get(const cons<HT, TT>& c BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int, N)) {
+   typedef BOOST_DEDUCED_TYPENAME detail::drop_front<N>::BOOST_NESTED_TEMPLATE
+       apply<cons<HT, TT> > impl;
+-  typedef BOOST_DEDUCED_TYPENAME impl::type cons_element;
+   return impl::call(c).head;
+ }
+ 
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<BidiIter> access;
+-        typedef typename iterator_value<BidiIter>::type char_type;
+         match_results<BidiIter> &what = *state.context_.results_ptr_;
+         BOOST_ASSERT(0 != re.regex_id());
+ 
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/boost.git/commitdiff/647f39b293bde17ba3cf3a5d5ff661a6acff71fd



More information about the pld-cvs-commit mailing list