[Libreoffice-commits] core.git: Branch 'aoo/trunk' - 3 commits - boost/boost_1_55_0.patch

Don Lewis truckman at apache.org
Mon Jun 6 16:08:49 UTC 2016


 boost/boost_1_55_0.patch |  225 +++++++++++++++++++++++++++++++++++------------
 1 file changed, 170 insertions(+), 55 deletions(-)

New commits:
commit 34aa1d4ae4620182702659d3461739d666d2d63d
Author: Don Lewis <truckman at apache.org>
Date:   Mon Jun 6 14:32:23 2016 +0000

    #i126888#:  bundled boost headers generate an excessive number of
    
    warnings when building with modern compilers
    
    When building OpenOffice with modern compilers, the bundled boost
    headers generate an excessive number of warnings.  This is especially
    bad with recent versions of clang, which generates very verbose
    warning messages.
    
    The attached patch updates the current boost_1_55_0.patch with
    additional changes cherry picked from upstream boost, up through
    version 1.60.  These additional changes have been used with the
    FreeBSD boost 1.55.0 port for a while.
    
    This patch greatly reduces the number of warnings and size of the
    OpenOffice build log.  Compiling trunk r1735889 on FreeBSD 11.0
    with clang 3.8, the number of warnings is reduced from 53260 to
    13741, and the size of the build log is reduced from 117 MB to 44
    MB.
    
    Tested by:	kschenk

diff --git a/boost/boost_1_55_0.patch b/boost/boost_1_55_0.patch
index 3f7f6f6..a4ef939 100644
--- a/boost/boost_1_55_0.patch
+++ b/boost/boost_1_55_0.patch
@@ -1,5 +1,167 @@
---- misc/boost_1_55_0/boost/unordered/detail/equivalent.hpp	2012-12-05 23:06:57.000000000 +0100
-+++ misc/build/boost_1_55_0/boost/unordered/detail/equivalent.hpp	2014-01-07 10:33:59.550621750 +0100
+diff -ur misc/boost_1_55_0/boost/asio/ssl/impl/context.ipp misc/build/boost_1_55_0/boost/asio/ssl/impl/context.ipp
+--- misc/boost_1_55_0/boost/asio/ssl/impl/context.ipp	2013-10-26 16:25:53.000000000 -0700
++++ misc/build/boost_1_55_0/boost/asio/ssl/impl/context.ipp	2016-03-23 01:11:12.425434000 -0700
+@@ -87,6 +87,14 @@
+     handle_ = ::SSL_CTX_new(::SSLv2_server_method());
+     break;
+ #endif // defined(OPENSSL_NO_SSL2)
++#if defined(OPENSSL_NO_SSL3)
++  case context::sslv3:
++  case context::sslv3_client:
++  case context::sslv3_server:
++    boost::asio::detail::throw_error(
++        boost::asio::error::invalid_argument, "context");
++    break;
++#else // defined(OPENSSL_NO_SSL3)
+   case context::sslv3:
+     handle_ = ::SSL_CTX_new(::SSLv3_method());
+     break;
+@@ -96,6 +104,7 @@
+   case context::sslv3_server:
+     handle_ = ::SSL_CTX_new(::SSLv3_server_method());
+     break;
++#endif // defined(OPENSSL_NO_SSL3)
+   case context::tlsv1:
+     handle_ = ::SSL_CTX_new(::TLSv1_method());
+     break;
+diff -ur misc/boost_1_55_0/boost/asio/ssl/old/detail/openssl_context_service.hpp misc/build/boost_1_55_0/boost/asio/ssl/old/detail/openssl_context_service.hpp
+--- misc/boost_1_55_0/boost/asio/ssl/old/detail/openssl_context_service.hpp	2013-05-20 05:32:20.000000000 -0700
++++ misc/build/boost_1_55_0/boost/asio/ssl/old/detail/openssl_context_service.hpp	2016-03-23 01:11:12.426497000 -0700
+@@ -85,6 +85,13 @@
+       impl = ::SSL_CTX_new(::SSLv2_server_method());
+       break;
+ #endif // defined(OPENSSL_NO_SSL2)
++#if defined(OPENSSL_NO_SSL3)
++    case context_base::sslv3:
++    case context_base::sslv3_client:
++    case context_base::sslv3_server:
++      boost::asio::detail::throw_error(boost::asio::error::invalid_argument);
++      break;
++#else // defined(OPENSSL_NO_SSL3)
+     case context_base::sslv3:
+       impl = ::SSL_CTX_new(::SSLv3_method());
+       break;
+@@ -94,6 +101,7 @@
+     case context_base::sslv3_server:
+       impl = ::SSL_CTX_new(::SSLv3_server_method());
+       break;
++#endif // defined(OPENSSL_NO_SSL3)
+     case context_base::tlsv1:
+       impl = ::SSL_CTX_new(::TLSv1_method());
+       break;
+diff -ur misc/boost_1_55_0/boost/bind/arg.hpp misc/build/boost_1_55_0/boost/bind/arg.hpp
+--- misc/boost_1_55_0/boost/bind/arg.hpp	2007-11-25 10:07:19.000000000 -0800
++++ misc/build/boost_1_55_0/boost/bind/arg.hpp	2016-03-23 01:11:12.421530000 -0700
+@@ -33,8 +33,7 @@
+ 
+     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 -ur misc/boost_1_55_0/boost/concept/detail/general.hpp misc/build/boost_1_55_0/boost/concept/detail/general.hpp
+--- misc/boost_1_55_0/boost/concept/detail/general.hpp	2010-06-08 12:31:13.000000000 -0700
++++ misc/build/boost_1_55_0/boost/concept/detail/general.hpp	2016-03-23 01:11:12.388374000 -0700
+@@ -65,10 +65,19 @@
+   
+ # endif
+ 
++// Version check from https://svn.boost.org/trac/boost/changeset/82886
++// (boost/static_assert.hpp)
++#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7))) || defined(__clang__)
++#define BOOST_CONCEPT_UNUSED_TYPEDEF __attribute__((unused))
++#else
++#define BOOST_CONCEPT_UNUSED_TYPEDEF /**/
++#endif
++
+ #  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_CONCEPT_UNUSED_TYPEDEF
+ 
+ }}
+ 
+diff -ur misc/boost_1_55_0/boost/math/special_functions/fpclassify.hpp misc/build/boost_1_55_0/boost/math/special_functions/fpclassify.hpp
+--- misc/boost_1_55_0/boost/math/special_functions/fpclassify.hpp	2013-09-28 09:19:47.000000000 -0700
++++ misc/build/boost_1_55_0/boost/math/special_functions/fpclassify.hpp	2016-03-23 01:11:12.392773000 -0700
+@@ -348,7 +348,7 @@
+ { //!< \brief return true if floating-point type t is finite.
+    typedef detail::fp_traits<long double>::type traits;
+    typedef traits::method method;
+-   typedef boost::is_floating_point<long double>::type fp_tag;
++   //typedef boost::is_floating_point<long double>::type fp_tag;
+    typedef long double value_type;
+    return detail::isfinite_impl(static_cast<value_type>(x), method());
+ }
+@@ -419,7 +419,7 @@
+ {
+    typedef detail::fp_traits<long double>::type traits;
+    typedef traits::method method;
+-   typedef boost::is_floating_point<long double>::type fp_tag;
++   //typedef boost::is_floating_point<long double>::type fp_tag;
+    typedef long double value_type;
+    return detail::isnormal_impl(static_cast<value_type>(x), method());
+ }
+@@ -508,7 +508,7 @@
+ {
+    typedef detail::fp_traits<long double>::type traits;
+    typedef traits::method method;
+-   typedef boost::is_floating_point<long double>::type fp_tag;
++   //typedef boost::is_floating_point<long double>::type fp_tag;
+    typedef long double value_type;
+    return detail::isinf_impl(static_cast<value_type>(x), method());
+ }
+@@ -594,7 +594,7 @@
+ { //!< \brief return true if floating-point type t is NaN (Not A Number).
+    typedef detail::fp_traits<long double>::type traits;
+    typedef traits::method method;
+-   typedef boost::is_floating_point<long double>::type fp_tag;
++   //typedef boost::is_floating_point<long double>::type fp_tag;
+    return detail::isnan_impl(x, method());
+ }
+ #endif
+diff -ur misc/boost_1_55_0/boost/spirit/home/classic/core/primitives/primitives.hpp misc/build/boost_1_55_0/boost/spirit/home/classic/core/primitives/primitives.hpp
+--- misc/boost_1_55_0/boost/spirit/home/classic/core/primitives/primitives.hpp	2008-06-22 08:05:38.000000000 -0700
++++ misc/build/boost_1_55_0/boost/spirit/home/classic/core/primitives/primitives.hpp	2016-03-23 01:11:12.407415000 -0700
+@@ -47,7 +47,6 @@
+         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 -ur misc/boost_1_55_0/boost/static_assert.hpp misc/build/boost_1_55_0/boost/static_assert.hpp
+--- misc/boost_1_55_0/boost/static_assert.hpp	2013-09-21 13:17:00.000000000 -0700
++++ misc/build/boost_1_55_0/boost/static_assert.hpp	2016-03-23 01:11:12.430683000 -0700
+@@ -67,7 +67,7 @@
+ //
+ // If the compiler warns about unused typedefs then enable this:
+ //
+-#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)))
++#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7))) || defined(__clang__)
+ #  define BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE __attribute__((unused))
+ #else
+ #  define BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE
+diff -ur misc/boost_1_55_0/boost/tuple/detail/tuple_basic.hpp misc/build/boost_1_55_0/boost/tuple/detail/tuple_basic.hpp
+--- misc/boost_1_55_0/boost/tuple/detail/tuple_basic.hpp	2011-01-02 12:25:11.000000000 -0800
++++ misc/build/boost_1_55_0/boost/tuple/detail/tuple_basic.hpp	2016-03-23 01:11:12.435344000 -0700
+@@ -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 -ur misc/boost_1_55_0/boost/unordered/detail/equivalent.hpp misc/build/boost_1_55_0/boost/unordered/detail/equivalent.hpp
+--- misc/boost_1_55_0/boost/unordered/detail/equivalent.hpp	2012-12-05 14:06:57.000000000 -0800
++++ misc/build/boost_1_55_0/boost/unordered/detail/equivalent.hpp	2016-03-23 01:04:46.934774000 -0700
 @@ -534,11 +534,11 @@
              }
  
@@ -86,8 +248,9 @@
              }
  
              return prev;
---- misc/boost_1_55_0/boost/unordered/detail/table.hpp	2013-08-18 11:44:14.000000000 +0200
-+++ misc/build/boost_1_55_0/boost/unordered/detail/table.hpp	2014-01-07 10:18:27.862432325 +0100
+diff -ur misc/boost_1_55_0/boost/unordered/detail/table.hpp misc/build/boost_1_55_0/boost/unordered/detail/table.hpp
+--- misc/boost_1_55_0/boost/unordered/detail/table.hpp	2013-08-18 02:44:14.000000000 -0700
++++ misc/build/boost_1_55_0/boost/unordered/detail/table.hpp	2016-03-23 01:04:46.936005000 -0700
 @@ -257,9 +257,9 @@
              return prev ? iterator(prev->next_) : iterator();
          }
@@ -123,8 +286,9 @@
              }
          }
          
---- misc/boost_1_55_0/boost/unordered/detail/unique.hpp	2013-08-18 11:44:14.000000000 +0200
-+++ misc/build/boost_1_55_0/boost/unordered/detail/unique.hpp	2014-01-07 10:18:27.865432217 +0100
+diff -ur misc/boost_1_55_0/boost/unordered/detail/unique.hpp misc/build/boost_1_55_0/boost/unordered/detail/unique.hpp
+--- misc/boost_1_55_0/boost/unordered/detail/unique.hpp	2013-08-18 02:44:14.000000000 -0700
++++ misc/build/boost_1_55_0/boost/unordered/detail/unique.hpp	2016-03-23 01:04:46.937066000 -0700
 @@ -529,9 +529,9 @@
  
              link_pointer end = static_cast<node_pointer>(prev->next_)->next_;
@@ -162,52 +326,3 @@
          }
  
          ////////////////////////////////////////////////////////////////////////
---- misc/build/boost_1_55_0/boost/bind/arg.hpp	2011-02-02 14:56:49 +0100
-+++ misc/build/boost_1_55_0/boost/bind/arg.hpp	2014-02-10 14:56:49 +0100
-@@ -34,7 +34,8 @@
-     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 ];
-+        char X_must_be_placeholder[ I == is_placeholder<T>::value? 1: -1 ];
-+        (void)&X_must_be_placeholder[0];
-     }
- };
- 
---- misc/boost_1_55_0/boost/tuple/detail/tuple_basic.hpp	2011-01-02 21:25:11 +0100
-+++ misc/build/boost_1_55_0/boost/tuple/detail/tuple_basic.hpp	2014-02-10 14:56:13 +0100
-@@ -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;
- }
- 
---- misc/boost_1_55_0/boost/concept/detail/general.hpp	2010-06-08 21:31:13 +0200
-+++ misc/build/boost_1_55_0/boost/concept/detail/general.hpp	2014-03-13 17:20:13 +0100
-@@ -65,10 +65,10 @@
-   
- # endif
- 
--#  define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr )             \
--    typedef ::boost::concepts::detail::instantiate<          \
--    &::boost::concepts::requirement_<ModelFnPtr>::failed>    \
--      BOOST_PP_CAT(boost_concept_check,__LINE__)
-+#define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr )             \
-+    ::boost::concepts::detail::instantiate<               \
-+    &::boost::concepts::requirement_<ModelFnPtr>::failed> \
-+      BOOST_PP_CAT(boost_concept_check,__LINE__)()
- 
- }}
- 
---- misc/boost_1_55_0/boost/spirit/home/classic/core/primitives/primitives.hpp	2014-03-12 14:02:51 +0100
-+++ misc/build/boost_1_55_0/boost/spirit/home/classic/core/primitives/primitives.hpp	2008-06-22 17:05:38 +0200
-@@ -47,7 +47,6 @@
-         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;
- 
commit b3e1789692ff7db6cc86155558eb920f3e4285d8
Author: Don Lewis <truckman at apache.org>
Date:   Mon Jun 6 14:24:36 2016 +0000

    Revert previous change, incorrect commit message

diff --git a/boost/boost_1_55_0.patch b/boost/boost_1_55_0.patch
index a4ef939..3f7f6f6 100644
--- a/boost/boost_1_55_0.patch
+++ b/boost/boost_1_55_0.patch
@@ -1,167 +1,5 @@
-diff -ur misc/boost_1_55_0/boost/asio/ssl/impl/context.ipp misc/build/boost_1_55_0/boost/asio/ssl/impl/context.ipp
---- misc/boost_1_55_0/boost/asio/ssl/impl/context.ipp	2013-10-26 16:25:53.000000000 -0700
-+++ misc/build/boost_1_55_0/boost/asio/ssl/impl/context.ipp	2016-03-23 01:11:12.425434000 -0700
-@@ -87,6 +87,14 @@
-     handle_ = ::SSL_CTX_new(::SSLv2_server_method());
-     break;
- #endif // defined(OPENSSL_NO_SSL2)
-+#if defined(OPENSSL_NO_SSL3)
-+  case context::sslv3:
-+  case context::sslv3_client:
-+  case context::sslv3_server:
-+    boost::asio::detail::throw_error(
-+        boost::asio::error::invalid_argument, "context");
-+    break;
-+#else // defined(OPENSSL_NO_SSL3)
-   case context::sslv3:
-     handle_ = ::SSL_CTX_new(::SSLv3_method());
-     break;
-@@ -96,6 +104,7 @@
-   case context::sslv3_server:
-     handle_ = ::SSL_CTX_new(::SSLv3_server_method());
-     break;
-+#endif // defined(OPENSSL_NO_SSL3)
-   case context::tlsv1:
-     handle_ = ::SSL_CTX_new(::TLSv1_method());
-     break;
-diff -ur misc/boost_1_55_0/boost/asio/ssl/old/detail/openssl_context_service.hpp misc/build/boost_1_55_0/boost/asio/ssl/old/detail/openssl_context_service.hpp
---- misc/boost_1_55_0/boost/asio/ssl/old/detail/openssl_context_service.hpp	2013-05-20 05:32:20.000000000 -0700
-+++ misc/build/boost_1_55_0/boost/asio/ssl/old/detail/openssl_context_service.hpp	2016-03-23 01:11:12.426497000 -0700
-@@ -85,6 +85,13 @@
-       impl = ::SSL_CTX_new(::SSLv2_server_method());
-       break;
- #endif // defined(OPENSSL_NO_SSL2)
-+#if defined(OPENSSL_NO_SSL3)
-+    case context_base::sslv3:
-+    case context_base::sslv3_client:
-+    case context_base::sslv3_server:
-+      boost::asio::detail::throw_error(boost::asio::error::invalid_argument);
-+      break;
-+#else // defined(OPENSSL_NO_SSL3)
-     case context_base::sslv3:
-       impl = ::SSL_CTX_new(::SSLv3_method());
-       break;
-@@ -94,6 +101,7 @@
-     case context_base::sslv3_server:
-       impl = ::SSL_CTX_new(::SSLv3_server_method());
-       break;
-+#endif // defined(OPENSSL_NO_SSL3)
-     case context_base::tlsv1:
-       impl = ::SSL_CTX_new(::TLSv1_method());
-       break;
-diff -ur misc/boost_1_55_0/boost/bind/arg.hpp misc/build/boost_1_55_0/boost/bind/arg.hpp
---- misc/boost_1_55_0/boost/bind/arg.hpp	2007-11-25 10:07:19.000000000 -0800
-+++ misc/build/boost_1_55_0/boost/bind/arg.hpp	2016-03-23 01:11:12.421530000 -0700
-@@ -33,8 +33,7 @@
- 
-     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 -ur misc/boost_1_55_0/boost/concept/detail/general.hpp misc/build/boost_1_55_0/boost/concept/detail/general.hpp
---- misc/boost_1_55_0/boost/concept/detail/general.hpp	2010-06-08 12:31:13.000000000 -0700
-+++ misc/build/boost_1_55_0/boost/concept/detail/general.hpp	2016-03-23 01:11:12.388374000 -0700
-@@ -65,10 +65,19 @@
-   
- # endif
- 
-+// Version check from https://svn.boost.org/trac/boost/changeset/82886
-+// (boost/static_assert.hpp)
-+#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7))) || defined(__clang__)
-+#define BOOST_CONCEPT_UNUSED_TYPEDEF __attribute__((unused))
-+#else
-+#define BOOST_CONCEPT_UNUSED_TYPEDEF /**/
-+#endif
-+
- #  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_CONCEPT_UNUSED_TYPEDEF
- 
- }}
- 
-diff -ur misc/boost_1_55_0/boost/math/special_functions/fpclassify.hpp misc/build/boost_1_55_0/boost/math/special_functions/fpclassify.hpp
---- misc/boost_1_55_0/boost/math/special_functions/fpclassify.hpp	2013-09-28 09:19:47.000000000 -0700
-+++ misc/build/boost_1_55_0/boost/math/special_functions/fpclassify.hpp	2016-03-23 01:11:12.392773000 -0700
-@@ -348,7 +348,7 @@
- { //!< \brief return true if floating-point type t is finite.
-    typedef detail::fp_traits<long double>::type traits;
-    typedef traits::method method;
--   typedef boost::is_floating_point<long double>::type fp_tag;
-+   //typedef boost::is_floating_point<long double>::type fp_tag;
-    typedef long double value_type;
-    return detail::isfinite_impl(static_cast<value_type>(x), method());
- }
-@@ -419,7 +419,7 @@
- {
-    typedef detail::fp_traits<long double>::type traits;
-    typedef traits::method method;
--   typedef boost::is_floating_point<long double>::type fp_tag;
-+   //typedef boost::is_floating_point<long double>::type fp_tag;
-    typedef long double value_type;
-    return detail::isnormal_impl(static_cast<value_type>(x), method());
- }
-@@ -508,7 +508,7 @@
- {
-    typedef detail::fp_traits<long double>::type traits;
-    typedef traits::method method;
--   typedef boost::is_floating_point<long double>::type fp_tag;
-+   //typedef boost::is_floating_point<long double>::type fp_tag;
-    typedef long double value_type;
-    return detail::isinf_impl(static_cast<value_type>(x), method());
- }
-@@ -594,7 +594,7 @@
- { //!< \brief return true if floating-point type t is NaN (Not A Number).
-    typedef detail::fp_traits<long double>::type traits;
-    typedef traits::method method;
--   typedef boost::is_floating_point<long double>::type fp_tag;
-+   //typedef boost::is_floating_point<long double>::type fp_tag;
-    return detail::isnan_impl(x, method());
- }
- #endif
-diff -ur misc/boost_1_55_0/boost/spirit/home/classic/core/primitives/primitives.hpp misc/build/boost_1_55_0/boost/spirit/home/classic/core/primitives/primitives.hpp
---- misc/boost_1_55_0/boost/spirit/home/classic/core/primitives/primitives.hpp	2008-06-22 08:05:38.000000000 -0700
-+++ misc/build/boost_1_55_0/boost/spirit/home/classic/core/primitives/primitives.hpp	2016-03-23 01:11:12.407415000 -0700
-@@ -47,7 +47,6 @@
-         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 -ur misc/boost_1_55_0/boost/static_assert.hpp misc/build/boost_1_55_0/boost/static_assert.hpp
---- misc/boost_1_55_0/boost/static_assert.hpp	2013-09-21 13:17:00.000000000 -0700
-+++ misc/build/boost_1_55_0/boost/static_assert.hpp	2016-03-23 01:11:12.430683000 -0700
-@@ -67,7 +67,7 @@
- //
- // If the compiler warns about unused typedefs then enable this:
- //
--#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)))
-+#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7))) || defined(__clang__)
- #  define BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE __attribute__((unused))
- #else
- #  define BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE
-diff -ur misc/boost_1_55_0/boost/tuple/detail/tuple_basic.hpp misc/build/boost_1_55_0/boost/tuple/detail/tuple_basic.hpp
---- misc/boost_1_55_0/boost/tuple/detail/tuple_basic.hpp	2011-01-02 12:25:11.000000000 -0800
-+++ misc/build/boost_1_55_0/boost/tuple/detail/tuple_basic.hpp	2016-03-23 01:11:12.435344000 -0700
-@@ -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 -ur misc/boost_1_55_0/boost/unordered/detail/equivalent.hpp misc/build/boost_1_55_0/boost/unordered/detail/equivalent.hpp
---- misc/boost_1_55_0/boost/unordered/detail/equivalent.hpp	2012-12-05 14:06:57.000000000 -0800
-+++ misc/build/boost_1_55_0/boost/unordered/detail/equivalent.hpp	2016-03-23 01:04:46.934774000 -0700
+--- misc/boost_1_55_0/boost/unordered/detail/equivalent.hpp	2012-12-05 23:06:57.000000000 +0100
++++ misc/build/boost_1_55_0/boost/unordered/detail/equivalent.hpp	2014-01-07 10:33:59.550621750 +0100
 @@ -534,11 +534,11 @@
              }
  
@@ -248,9 +86,8 @@ diff -ur misc/boost_1_55_0/boost/unordered/detail/equivalent.hpp misc/build/boos
              }
  
              return prev;
-diff -ur misc/boost_1_55_0/boost/unordered/detail/table.hpp misc/build/boost_1_55_0/boost/unordered/detail/table.hpp
---- misc/boost_1_55_0/boost/unordered/detail/table.hpp	2013-08-18 02:44:14.000000000 -0700
-+++ misc/build/boost_1_55_0/boost/unordered/detail/table.hpp	2016-03-23 01:04:46.936005000 -0700
+--- misc/boost_1_55_0/boost/unordered/detail/table.hpp	2013-08-18 11:44:14.000000000 +0200
++++ misc/build/boost_1_55_0/boost/unordered/detail/table.hpp	2014-01-07 10:18:27.862432325 +0100
 @@ -257,9 +257,9 @@
              return prev ? iterator(prev->next_) : iterator();
          }
@@ -286,9 +123,8 @@ diff -ur misc/boost_1_55_0/boost/unordered/detail/table.hpp misc/build/boost_1_5
              }
          }
          
-diff -ur misc/boost_1_55_0/boost/unordered/detail/unique.hpp misc/build/boost_1_55_0/boost/unordered/detail/unique.hpp
---- misc/boost_1_55_0/boost/unordered/detail/unique.hpp	2013-08-18 02:44:14.000000000 -0700
-+++ misc/build/boost_1_55_0/boost/unordered/detail/unique.hpp	2016-03-23 01:04:46.937066000 -0700
+--- misc/boost_1_55_0/boost/unordered/detail/unique.hpp	2013-08-18 11:44:14.000000000 +0200
++++ misc/build/boost_1_55_0/boost/unordered/detail/unique.hpp	2014-01-07 10:18:27.865432217 +0100
 @@ -529,9 +529,9 @@
  
              link_pointer end = static_cast<node_pointer>(prev->next_)->next_;
@@ -326,3 +162,52 @@ diff -ur misc/boost_1_55_0/boost/unordered/detail/unique.hpp misc/build/boost_1_
          }
  
          ////////////////////////////////////////////////////////////////////////
+--- misc/build/boost_1_55_0/boost/bind/arg.hpp	2011-02-02 14:56:49 +0100
++++ misc/build/boost_1_55_0/boost/bind/arg.hpp	2014-02-10 14:56:49 +0100
+@@ -34,7 +34,8 @@
+     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 ];
++        char X_must_be_placeholder[ I == is_placeholder<T>::value? 1: -1 ];
++        (void)&X_must_be_placeholder[0];
+     }
+ };
+ 
+--- misc/boost_1_55_0/boost/tuple/detail/tuple_basic.hpp	2011-01-02 21:25:11 +0100
++++ misc/build/boost_1_55_0/boost/tuple/detail/tuple_basic.hpp	2014-02-10 14:56:13 +0100
+@@ -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;
+ }
+ 
+--- misc/boost_1_55_0/boost/concept/detail/general.hpp	2010-06-08 21:31:13 +0200
++++ misc/build/boost_1_55_0/boost/concept/detail/general.hpp	2014-03-13 17:20:13 +0100
+@@ -65,10 +65,10 @@
+   
+ # endif
+ 
+-#  define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr )             \
+-    typedef ::boost::concepts::detail::instantiate<          \
+-    &::boost::concepts::requirement_<ModelFnPtr>::failed>    \
+-      BOOST_PP_CAT(boost_concept_check,__LINE__)
++#define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr )             \
++    ::boost::concepts::detail::instantiate<               \
++    &::boost::concepts::requirement_<ModelFnPtr>::failed> \
++      BOOST_PP_CAT(boost_concept_check,__LINE__)()
+ 
+ }}
+ 
+--- misc/boost_1_55_0/boost/spirit/home/classic/core/primitives/primitives.hpp	2014-03-12 14:02:51 +0100
++++ misc/build/boost_1_55_0/boost/spirit/home/classic/core/primitives/primitives.hpp	2008-06-22 17:05:38 +0200
+@@ -47,7 +47,6 @@
+         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;
+ 
commit b8c138916ac725f4c1ae974e51d7366c706e2ca3
Author: Don Lewis <truckman at apache.org>
Date:   Mon Jun 6 14:16:02 2016 +0000

    #i124867#:  bundled boost headers generate an excessive number of
    
    warnings when building with modern compilers
    
    When building OpenOffice with modern compilers, the bundled boost
    headers generate an excessive number of warnings.  This is especially
    bad with recent versions of clang, which generates very verbose
    warning messages.
    
    The attached patch updates the current boost_1_55_0.patch with
    additional changes cherry picked from upstream boost, up through
    version 1.60.  These additional changes have been used with the
    FreeBSD boost 1.55.0 port for a while.
    
    This patch greatly reduces the number of warnings and size of the
    OpenOffice build log.  Compiling trunk r1735889 on FreeBSD 11.0
    with clang 3.8, the number of warnings is reduced from 53260 to
    13741, and the size of the build log is reduced from 117 MB to 44
    MB.
    
    Tested by:	kschenk

diff --git a/boost/boost_1_55_0.patch b/boost/boost_1_55_0.patch
index 3f7f6f6..a4ef939 100644
--- a/boost/boost_1_55_0.patch
+++ b/boost/boost_1_55_0.patch
@@ -1,5 +1,167 @@
---- misc/boost_1_55_0/boost/unordered/detail/equivalent.hpp	2012-12-05 23:06:57.000000000 +0100
-+++ misc/build/boost_1_55_0/boost/unordered/detail/equivalent.hpp	2014-01-07 10:33:59.550621750 +0100
+diff -ur misc/boost_1_55_0/boost/asio/ssl/impl/context.ipp misc/build/boost_1_55_0/boost/asio/ssl/impl/context.ipp
+--- misc/boost_1_55_0/boost/asio/ssl/impl/context.ipp	2013-10-26 16:25:53.000000000 -0700
++++ misc/build/boost_1_55_0/boost/asio/ssl/impl/context.ipp	2016-03-23 01:11:12.425434000 -0700
+@@ -87,6 +87,14 @@
+     handle_ = ::SSL_CTX_new(::SSLv2_server_method());
+     break;
+ #endif // defined(OPENSSL_NO_SSL2)
++#if defined(OPENSSL_NO_SSL3)
++  case context::sslv3:
++  case context::sslv3_client:
++  case context::sslv3_server:
++    boost::asio::detail::throw_error(
++        boost::asio::error::invalid_argument, "context");
++    break;
++#else // defined(OPENSSL_NO_SSL3)
+   case context::sslv3:
+     handle_ = ::SSL_CTX_new(::SSLv3_method());
+     break;
+@@ -96,6 +104,7 @@
+   case context::sslv3_server:
+     handle_ = ::SSL_CTX_new(::SSLv3_server_method());
+     break;
++#endif // defined(OPENSSL_NO_SSL3)
+   case context::tlsv1:
+     handle_ = ::SSL_CTX_new(::TLSv1_method());
+     break;
+diff -ur misc/boost_1_55_0/boost/asio/ssl/old/detail/openssl_context_service.hpp misc/build/boost_1_55_0/boost/asio/ssl/old/detail/openssl_context_service.hpp
+--- misc/boost_1_55_0/boost/asio/ssl/old/detail/openssl_context_service.hpp	2013-05-20 05:32:20.000000000 -0700
++++ misc/build/boost_1_55_0/boost/asio/ssl/old/detail/openssl_context_service.hpp	2016-03-23 01:11:12.426497000 -0700
+@@ -85,6 +85,13 @@
+       impl = ::SSL_CTX_new(::SSLv2_server_method());
+       break;
+ #endif // defined(OPENSSL_NO_SSL2)
++#if defined(OPENSSL_NO_SSL3)
++    case context_base::sslv3:
++    case context_base::sslv3_client:
++    case context_base::sslv3_server:
++      boost::asio::detail::throw_error(boost::asio::error::invalid_argument);
++      break;
++#else // defined(OPENSSL_NO_SSL3)
+     case context_base::sslv3:
+       impl = ::SSL_CTX_new(::SSLv3_method());
+       break;
+@@ -94,6 +101,7 @@
+     case context_base::sslv3_server:
+       impl = ::SSL_CTX_new(::SSLv3_server_method());
+       break;
++#endif // defined(OPENSSL_NO_SSL3)
+     case context_base::tlsv1:
+       impl = ::SSL_CTX_new(::TLSv1_method());
+       break;
+diff -ur misc/boost_1_55_0/boost/bind/arg.hpp misc/build/boost_1_55_0/boost/bind/arg.hpp
+--- misc/boost_1_55_0/boost/bind/arg.hpp	2007-11-25 10:07:19.000000000 -0800
++++ misc/build/boost_1_55_0/boost/bind/arg.hpp	2016-03-23 01:11:12.421530000 -0700
+@@ -33,8 +33,7 @@
+ 
+     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 -ur misc/boost_1_55_0/boost/concept/detail/general.hpp misc/build/boost_1_55_0/boost/concept/detail/general.hpp
+--- misc/boost_1_55_0/boost/concept/detail/general.hpp	2010-06-08 12:31:13.000000000 -0700
++++ misc/build/boost_1_55_0/boost/concept/detail/general.hpp	2016-03-23 01:11:12.388374000 -0700
+@@ -65,10 +65,19 @@
+   
+ # endif
+ 
++// Version check from https://svn.boost.org/trac/boost/changeset/82886
++// (boost/static_assert.hpp)
++#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7))) || defined(__clang__)
++#define BOOST_CONCEPT_UNUSED_TYPEDEF __attribute__((unused))
++#else
++#define BOOST_CONCEPT_UNUSED_TYPEDEF /**/
++#endif
++
+ #  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_CONCEPT_UNUSED_TYPEDEF
+ 
+ }}
+ 
+diff -ur misc/boost_1_55_0/boost/math/special_functions/fpclassify.hpp misc/build/boost_1_55_0/boost/math/special_functions/fpclassify.hpp
+--- misc/boost_1_55_0/boost/math/special_functions/fpclassify.hpp	2013-09-28 09:19:47.000000000 -0700
++++ misc/build/boost_1_55_0/boost/math/special_functions/fpclassify.hpp	2016-03-23 01:11:12.392773000 -0700
+@@ -348,7 +348,7 @@
+ { //!< \brief return true if floating-point type t is finite.
+    typedef detail::fp_traits<long double>::type traits;
+    typedef traits::method method;
+-   typedef boost::is_floating_point<long double>::type fp_tag;
++   //typedef boost::is_floating_point<long double>::type fp_tag;
+    typedef long double value_type;
+    return detail::isfinite_impl(static_cast<value_type>(x), method());
+ }
+@@ -419,7 +419,7 @@
+ {
+    typedef detail::fp_traits<long double>::type traits;
+    typedef traits::method method;
+-   typedef boost::is_floating_point<long double>::type fp_tag;
++   //typedef boost::is_floating_point<long double>::type fp_tag;
+    typedef long double value_type;
+    return detail::isnormal_impl(static_cast<value_type>(x), method());
+ }
+@@ -508,7 +508,7 @@
+ {
+    typedef detail::fp_traits<long double>::type traits;
+    typedef traits::method method;
+-   typedef boost::is_floating_point<long double>::type fp_tag;
++   //typedef boost::is_floating_point<long double>::type fp_tag;
+    typedef long double value_type;
+    return detail::isinf_impl(static_cast<value_type>(x), method());
+ }
+@@ -594,7 +594,7 @@
+ { //!< \brief return true if floating-point type t is NaN (Not A Number).
+    typedef detail::fp_traits<long double>::type traits;
+    typedef traits::method method;
+-   typedef boost::is_floating_point<long double>::type fp_tag;
++   //typedef boost::is_floating_point<long double>::type fp_tag;
+    return detail::isnan_impl(x, method());
+ }
+ #endif
+diff -ur misc/boost_1_55_0/boost/spirit/home/classic/core/primitives/primitives.hpp misc/build/boost_1_55_0/boost/spirit/home/classic/core/primitives/primitives.hpp
+--- misc/boost_1_55_0/boost/spirit/home/classic/core/primitives/primitives.hpp	2008-06-22 08:05:38.000000000 -0700
++++ misc/build/boost_1_55_0/boost/spirit/home/classic/core/primitives/primitives.hpp	2016-03-23 01:11:12.407415000 -0700
+@@ -47,7 +47,6 @@
+         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 -ur misc/boost_1_55_0/boost/static_assert.hpp misc/build/boost_1_55_0/boost/static_assert.hpp
+--- misc/boost_1_55_0/boost/static_assert.hpp	2013-09-21 13:17:00.000000000 -0700
++++ misc/build/boost_1_55_0/boost/static_assert.hpp	2016-03-23 01:11:12.430683000 -0700
+@@ -67,7 +67,7 @@
+ //
+ // If the compiler warns about unused typedefs then enable this:
+ //
+-#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)))
++#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7))) || defined(__clang__)
+ #  define BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE __attribute__((unused))
+ #else
+ #  define BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE
+diff -ur misc/boost_1_55_0/boost/tuple/detail/tuple_basic.hpp misc/build/boost_1_55_0/boost/tuple/detail/tuple_basic.hpp
+--- misc/boost_1_55_0/boost/tuple/detail/tuple_basic.hpp	2011-01-02 12:25:11.000000000 -0800
++++ misc/build/boost_1_55_0/boost/tuple/detail/tuple_basic.hpp	2016-03-23 01:11:12.435344000 -0700
+@@ -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 -ur misc/boost_1_55_0/boost/unordered/detail/equivalent.hpp misc/build/boost_1_55_0/boost/unordered/detail/equivalent.hpp
+--- misc/boost_1_55_0/boost/unordered/detail/equivalent.hpp	2012-12-05 14:06:57.000000000 -0800
++++ misc/build/boost_1_55_0/boost/unordered/detail/equivalent.hpp	2016-03-23 01:04:46.934774000 -0700
 @@ -534,11 +534,11 @@
              }
  
@@ -86,8 +248,9 @@
              }
  
              return prev;
---- misc/boost_1_55_0/boost/unordered/detail/table.hpp	2013-08-18 11:44:14.000000000 +0200
-+++ misc/build/boost_1_55_0/boost/unordered/detail/table.hpp	2014-01-07 10:18:27.862432325 +0100
+diff -ur misc/boost_1_55_0/boost/unordered/detail/table.hpp misc/build/boost_1_55_0/boost/unordered/detail/table.hpp
+--- misc/boost_1_55_0/boost/unordered/detail/table.hpp	2013-08-18 02:44:14.000000000 -0700
++++ misc/build/boost_1_55_0/boost/unordered/detail/table.hpp	2016-03-23 01:04:46.936005000 -0700
 @@ -257,9 +257,9 @@
              return prev ? iterator(prev->next_) : iterator();
          }
@@ -123,8 +286,9 @@
              }
          }
          
---- misc/boost_1_55_0/boost/unordered/detail/unique.hpp	2013-08-18 11:44:14.000000000 +0200
-+++ misc/build/boost_1_55_0/boost/unordered/detail/unique.hpp	2014-01-07 10:18:27.865432217 +0100
+diff -ur misc/boost_1_55_0/boost/unordered/detail/unique.hpp misc/build/boost_1_55_0/boost/unordered/detail/unique.hpp
+--- misc/boost_1_55_0/boost/unordered/detail/unique.hpp	2013-08-18 02:44:14.000000000 -0700
++++ misc/build/boost_1_55_0/boost/unordered/detail/unique.hpp	2016-03-23 01:04:46.937066000 -0700
 @@ -529,9 +529,9 @@
  
              link_pointer end = static_cast<node_pointer>(prev->next_)->next_;
@@ -162,52 +326,3 @@
          }
  
          ////////////////////////////////////////////////////////////////////////
---- misc/build/boost_1_55_0/boost/bind/arg.hpp	2011-02-02 14:56:49 +0100
-+++ misc/build/boost_1_55_0/boost/bind/arg.hpp	2014-02-10 14:56:49 +0100
-@@ -34,7 +34,8 @@
-     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 ];
-+        char X_must_be_placeholder[ I == is_placeholder<T>::value? 1: -1 ];
-+        (void)&X_must_be_placeholder[0];
-     }
- };
- 
---- misc/boost_1_55_0/boost/tuple/detail/tuple_basic.hpp	2011-01-02 21:25:11 +0100
-+++ misc/build/boost_1_55_0/boost/tuple/detail/tuple_basic.hpp	2014-02-10 14:56:13 +0100
-@@ -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;
- }
- 
---- misc/boost_1_55_0/boost/concept/detail/general.hpp	2010-06-08 21:31:13 +0200
-+++ misc/build/boost_1_55_0/boost/concept/detail/general.hpp	2014-03-13 17:20:13 +0100
-@@ -65,10 +65,10 @@
-   
- # endif
- 
--#  define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr )             \
--    typedef ::boost::concepts::detail::instantiate<          \
--    &::boost::concepts::requirement_<ModelFnPtr>::failed>    \
--      BOOST_PP_CAT(boost_concept_check,__LINE__)
-+#define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr )             \
-+    ::boost::concepts::detail::instantiate<               \
-+    &::boost::concepts::requirement_<ModelFnPtr>::failed> \
-+      BOOST_PP_CAT(boost_concept_check,__LINE__)()
- 
- }}
- 
---- misc/boost_1_55_0/boost/spirit/home/classic/core/primitives/primitives.hpp	2014-03-12 14:02:51 +0100
-+++ misc/build/boost_1_55_0/boost/spirit/home/classic/core/primitives/primitives.hpp	2008-06-22 17:05:38 +0200
-@@ -47,7 +47,6 @@
-         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;
- 


More information about the Libreoffice-commits mailing list