[boost/f19] Add many patches for unused typedefs, and an execstack patch

Petr Machata pmachata at fedoraproject.org
Mon Jul 22 15:48:34 UTC 2013


commit 0494a65cc90cfbf35de09bbea43c9bac4274b367
Author: Petr Machata <pmachata at redhat.com>
Date:   Mon Jul 22 17:47:20 2013 +0200

    Add many patches for unused typedefs, and an execstack patch

 boost-1.53.0-static_assert-unused_typedef.patch  |   30 +++
 boost-1.54.0-bind-static_assert.patch            |   21 ++
 boost-1.54.0-concept-unused_typedef.patch        |   21 ++
 boost-1.54.0-date_time-unused_typedef.patch      |  100 +++++++++
 boost-1.54.0-math-unused_typedef-2.patch         |   20 ++
 boost-1.54.0-math-unused_typedef.patch           |   15 ++
 boost-1.54.0-multiprecision-unused_typedef.patch |  148 +++++++++++++
 boost-1.54.0-numeric-unused_typedef.patch        |  250 ++++++++++++++++++++++
 boost-1.54.0-random-unused_typedef.patch         |   24 ++
 boost-1.54.0-spirit-unused_typedef.patch         |   11 +
 boost-1.54.0-static_warning-unused_typedef.patch |   23 ++
 boost-1.54.0-tuple-unused_typedef.patch          |   12 +
 boost.spec                                       |   74 +++++++
 13 files changed, 749 insertions(+), 0 deletions(-)
---
diff --git a/boost-1.53.0-static_assert-unused_typedef.patch b/boost-1.53.0-static_assert-unused_typedef.patch
new file mode 100644
index 0000000..c4157d1
--- /dev/null
+++ b/boost-1.53.0-static_assert-unused_typedef.patch
@@ -0,0 +1,30 @@
+diff -up boost_1_53_0/boost/static_assert.hpp\~ boost_1_53_0/boost/static_assert.hpp
+--- boost_1_53_0/boost/static_assert.hpp~	2012-12-11 15:42:26.000000000 +0100
++++ boost_1_53_0/boost/static_assert.hpp	2013-07-19 14:15:59.504039071 +0200
+@@ -43,6 +43,14 @@
+ #else
+ #  define BOOST_STATIC_ASSERT_BOOL_CAST(x) (bool)(x)
+ #endif
++//
++// If the compiler warns about unused typedefs then enable this:
++//
++#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)))
++#  define BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE __attribute__((unused))
++#else
++#  define BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE
++#endif
+ 
+ #ifndef BOOST_NO_CXX11_STATIC_ASSERT
+ #  define BOOST_STATIC_ASSERT( B ) static_assert(B, #B)
+@@ -122,7 +130,8 @@ template<int x> struct static_assert_tes
+ #define BOOST_STATIC_ASSERT( B ) \
+    typedef ::boost::static_assert_test<\
+       sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >)>\
+-         BOOST_JOIN(boost_static_assert_typedef_, __LINE__)
++         BOOST_JOIN(boost_static_assert_typedef_, __LINE__) \
++         BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE
+ #endif
+ 
+ #else
+
+Diff finished.  Fri Jul 19 14:16:04 2013
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-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-math-unused_typedef-2.patch b/boost-1.54.0-math-unused_typedef-2.patch
new file mode 100644
index 0000000..75d07ce
--- /dev/null
+++ b/boost-1.54.0-math-unused_typedef-2.patch
@@ -0,0 +1,20 @@
+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-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-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.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-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.spec b/boost.spec
index fdf456d..741b26f 100644
--- a/boost.spec
+++ b/boost.spec
@@ -115,6 +115,48 @@ Patch15: boost-1.50.0-pool.patch
 # https://bugzilla.redhat.com/show_bug.cgi?id=909888
 Patch16: boost-1.53.0-context.patch
 
+# https://bugzilla.redhat.com/show_bug.cgi?id=984346
+# https://svn.boost.org/trac/boost/ticket/7242
+Patch17: boost-1.53.0-static_assert-unused_typedef.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
+
+# https://svn.boost.org/trac/boost/ticket/8847
+Patch24: boost-1.54.0-concept-unused_typedef.patch
+
+# https://svn.boost.org/trac/boost/ticket/5637
+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
+Patch29: boost-1.53.0-fpclassify-unused_typedef.patch
+
+# https://svn.boost.org/trac/boost/ticket/8853
+Patch30: boost-1.54.0-tuple-unused_typedef.patch
+
+# https://svn.boost.org/trac/boost/ticket/8854
+Patch31: boost-1.54.0-random-unused_typedef.patch
+
+# https://svn.boost.org/trac/boost/ticket/8856
+Patch32: boost-1.54.0-date_time-unused_typedef.patch
+
+# https://svn.boost.org/trac/boost/ticket/8870
+Patch33: boost-1.54.0-spirit-unused_typedef.patch
+
+# https://svn.boost.org/trac/boost/ticket/8871
+Patch34: boost-1.54.0-numeric-unused_typedef.patch
+
+# https://svn.boost.org/trac/boost/ticket/8872
+Patch35: boost-1.54.0-multiprecision-unused_typedef.patch
+
 %bcond_with tests
 %bcond_with docs_generated
 
@@ -523,6 +565,21 @@ a number of significant features and is now developed independently
 %patch10 -p1
 %patch15 -p0
 %patch16 -p1
+%patch17 -p1
+%patch22 -p1
+%patch23 -p1
+%patch24 -p1
+%patch25 -p0
+%patch26 -p1
+%patch27 -p1
+%patch28 -p0
+%patch29 -p1
+%patch30 -p0
+%patch31 -p0
+%patch32 -p0
+%patch33 -p1
+%patch34 -p1
+%patch35 -p1
 
 # At least python2_version needs to be a macro so that it's visible in
 # %%install as well.
@@ -1097,6 +1154,23 @@ rm -rf $RPM_BUILD_ROOT
 * Fri Jul 19 2013 Petr Machata <pmachata at redhat.com> - 1.53.0-8
 - Install supporting files (images etc.) for documentation
   (courtesy Marcel Metz, bug 985593)
+- Add several patches for silencing unused local typedef warnings
+  (boost-1.53.0-static_assert-unused_typedef.patch,
+  boost-1.54.0-bind-static_assert.patch,
+  boost-1.54.0-concept-unused_typedef.patch,
+  boost-1.54.0-static_warning-unused_typedef.patch,
+  boost-1.54.0-math-unused_typedef.patch,
+  boost-1.54.0-math-unused_typedef-2.patch,
+  boost-1.53.0-fpclassify-unused_typedef.patch,
+  boost-1.54.0-tuple-unused_typedef.patch,
+  boost-1.54.0-random-unused_typedef.patch,
+  boost-1.54.0-date_time-unused_typedef.patch,
+  boost-1.54.0-spirit-unused_typedef.patch,
+  boost-1.54.0-numeric-unused_typedef.patch,
+  boost-1.54.0-multiprecision-unused_typedef.patch)
+- Add a patch to turn off execstack in Boost.Context
+  (boost-1.54.0-context-execstack.patch)
+- Fix boost::mpl::print on GCC (boost-1.54.0-mpl-print.patch)
 
 * Thu Jun 27 2013 Petr Machata <pmachata at redhat.com> - 1.53.0-7
 - Add symlinks for /usr/lib/libboost_{thread,locale}.so -> *-mt.so


More information about the scm-commits mailing list