boost: Package Version Update (1.71.0) + bugfixes
This commit updates Boost to version 1.71.0 and disables Boost.Context
for arc and mips64 architectures, since either jump_fcontext or
getcontext are undefined for those architectures.
It also fixes a bug were Boost.Fiber was not properly disabled for
mips32 and mips64 architectures.
Boost.Coroutine2 option was removed since it was redundant. By selecting
the Coroutine package, Coroutine2 is also installed.
Boost.Fiber has been disabled for target brcm47xx_generic and brcm47xx_legacy
due to misssing opcode support from instruction set.
Boost 1.71.0 brings a new header-only library
- Boost.Variant2 [1]
-> A never-valueless, strong guarantee implementation of
std::variant, from Peter Dimov.
More info about Boost 1.71.0 can be found at the usual place [2].
[1]: https://www.boost.org/doc/libs/1_71_0/libs/variant2/doc/html/variant2.html
[2]: https://www.boost.org/users/history/version_1_71_0.html
Signed-off-by: Carlos Miguel Ferreira <carlosmf.pt@gmail.com>
(cherry-picked from 0cd9824623
)
This commit is contained in:
parent
884c89b5e9
commit
e3c1765598
5 changed files with 124 additions and 176 deletions
|
@ -11,13 +11,13 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=boost
|
||||
PKG_VERSION:=1.70.0
|
||||
PKG_SOURCE_VERSION:=1_70_0
|
||||
PKG_RELEASE:=7
|
||||
PKG_VERSION:=1.71.0
|
||||
PKG_SOURCE_VERSION:=1_71_0
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)_$(PKG_SOURCE_VERSION).tar.bz2
|
||||
PKG_SOURCE_URL:=@SF/$(PKG_NAME)/$(PKG_NAME)/$(PKG_VERSION) https://dl.bintray.com/boostorg/release/$(PKG_VERSION)/source/
|
||||
PKG_HASH:=430ae8354789de4fd19ee52f3b1f739e1fba576f0aded0897c3c2bc00fb38778
|
||||
PKG_HASH:=d73a8da01e8bf8c7eda40b4c84915071a8c8a0df4a6734537ddde4a8580524ee
|
||||
|
||||
PKG_MAINTAINER:=Carlos M. Ferreira <carlosmf.pt@gmail.com>
|
||||
PKG_LICENSE:=BSL-1.0
|
||||
|
@ -27,6 +27,7 @@ PKG_CPE_ID:=cpe:/a:boost:boost
|
|||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)_$(PKG_SOURCE_VERSION)
|
||||
HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/$(PKG_NAME)_$(PKG_SOURCE_VERSION)
|
||||
|
||||
HOST_BUILD_PARALLEL:=1
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_USE_MIPS16:=0
|
||||
|
||||
|
@ -42,32 +43,20 @@ define Package/boost/Default
|
|||
endef
|
||||
|
||||
define Package/boost/description
|
||||
This package provides the Boost v1.70.0 libraries.
|
||||
This package provides the Boost v1.71.0 libraries.
|
||||
Boost is a set of free, peer-reviewed, portable C++ source libraries.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
| Warning |
|
||||
| In order to build all of the Boost Libraries, it is necessary |
|
||||
| to use, at least, GCC version 5 (C++14 support) and, it is necessary to |
|
||||
| compile the kernel with Full Language Support. |
|
||||
| Without these requirerements, the following libs will not be available: |
|
||||
| - Boost.Locale |
|
||||
| - Boost.Coroutine2 (header-only library - requires C++11) |
|
||||
| - Boost.Fiber (requires C++14) |
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
This package provides the following run-time libraries:
|
||||
- atomic
|
||||
- chrono
|
||||
- container
|
||||
- context
|
||||
- contract
|
||||
- coroutine (Deprecated - use Coroutine2)
|
||||
- - coroutine2 (Requires GCC v5 and up)
|
||||
- coroutine and coroutine2 (Coroutine is deprecated - use Coroutine2)
|
||||
- date_time
|
||||
- exception
|
||||
- filesystem
|
||||
- fiber (Requires GCC v5 and up)
|
||||
- fiber
|
||||
- graph
|
||||
- - graph-parallel
|
||||
- iostreams
|
||||
|
@ -88,7 +77,7 @@ This package provides the following run-time libraries:
|
|||
- wave
|
||||
|
||||
There are many more header-only libraries supported by Boost.
|
||||
See more at http://www.boost.org/doc/libs/1_70_0/
|
||||
See more at http://www.boost.org/doc/libs/1_71_0/
|
||||
endef
|
||||
|
||||
PKG_BUILD_DEPENDS:=boost/host PACKAGE_python:python PACKAGE_python3:python3
|
||||
|
@ -128,6 +117,22 @@ define Package/boost
|
|||
endef
|
||||
|
||||
define Package/boost/config
|
||||
# Invisible config dependency
|
||||
config boost-context-exclude
|
||||
bool
|
||||
default y if (mips64 || arc || arc700)
|
||||
default n
|
||||
|
||||
config boost-coroutine-exclude
|
||||
bool
|
||||
default y if boost-context-exclude
|
||||
default n
|
||||
|
||||
config boost-fiber-exclude
|
||||
bool
|
||||
default y if (TARGET_brcm47xx_generic || TARGET_brcm47xx_legacy || mips32 || mips64 || boost-coroutine-exclude)
|
||||
default n
|
||||
|
||||
menu "Select Boost Options"
|
||||
depends on PACKAGE_boost
|
||||
comment "Boost compilation options."
|
||||
|
@ -200,11 +205,11 @@ define Package/boost/config
|
|||
bool "Shared"
|
||||
|
||||
config boost-runtime-static
|
||||
depends on !boost-shared-libs&&!boost-static-and-shared-libs
|
||||
depends on (!boost-shared-libs && !boost-static-and-shared-libs)
|
||||
bool "Static"
|
||||
|
||||
config boost-runtime-static-and-shared
|
||||
depends on boost-use-name-tags&&!boost-shared-libs&&!boost-static-and-shared-libs
|
||||
depends on (boost-use-name-tags && !boost-shared-libs && !boost-static-and-shared-libs)
|
||||
bool "Both"
|
||||
endchoice
|
||||
|
||||
|
@ -264,29 +269,17 @@ define Package/boost/config
|
|||
default m if ALL
|
||||
select PACKAGE_boost-libs
|
||||
select boost-test-pkg
|
||||
select boost-coroutine2
|
||||
select boost-graph-parallel
|
||||
|
||||
# Invisible config dependency
|
||||
config boost-fiber-exclude
|
||||
bool
|
||||
default y if (CPU_TYPE=mips32 || CPU_TYPE=mips64)
|
||||
|
||||
config boost-test-pkg
|
||||
bool "Boost test package."
|
||||
default m if ALL
|
||||
select PACKAGE_boost-test
|
||||
|
||||
config boost-coroutine2
|
||||
depends on !GCC_VERSION_4_8
|
||||
bool "Boost couroutine2 support."
|
||||
select PACKAGE_boost-coroutine
|
||||
default n
|
||||
|
||||
config boost-graph-parallel
|
||||
bool "Boost parallel graph support."
|
||||
select PACKAGE_boost-graph
|
||||
default n
|
||||
default m if ALL
|
||||
|
||||
$(foreach lib,$(BOOST_LIBS), \
|
||||
config PACKAGE_boost-$(lib)
|
||||
|
@ -294,10 +287,11 @@ define Package/boost/config
|
|||
default m if ALL
|
||||
$(if $(findstring locale,$(lib)),depends on BUILD_NLS,)\
|
||||
$(if $(findstring python,$(lib)),depends on PACKAGE_$(lib),)\
|
||||
$(if $(findstring fiber,$(lib)),depends on (CPU_TYPE!=mips32 && CPU_TYPE!=mips64),)
|
||||
$(if $(findstring fiber,$(lib)),depends on !boost-fiber-exclude,)\
|
||||
$(if $(findstring context,$(lib)),depends on !boost-context-exclude,)
|
||||
$(if $(findstring coroutine,$(lib)),depends on !boost-coroutine-exclude,)
|
||||
)
|
||||
endmenu
|
||||
|
||||
endef
|
||||
|
||||
PKG_CONFIG_DEPENDS:= CONFIG_PACKAGE_boost-test
|
||||
|
@ -335,35 +329,35 @@ define DefineBoostLibrary
|
|||
endef
|
||||
endef
|
||||
|
||||
$(eval $(call DefineBoostLibrary,atomic,system,))
|
||||
$(eval $(call DefineBoostLibrary,chrono,system,))
|
||||
$(eval $(call DefineBoostLibrary,container,,))
|
||||
$(eval $(call DefineBoostLibrary,context,chrono system thread,))
|
||||
$(eval $(call DefineBoostLibrary,contract,system,))
|
||||
$(eval $(call DefineBoostLibrary,coroutine,system chrono context thread,))
|
||||
$(eval $(call DefineBoostLibrary,date_time,,))
|
||||
$(eval $(call DefineBoostLibrary,atomic,system))
|
||||
$(eval $(call DefineBoostLibrary,chrono,system))
|
||||
$(eval $(call DefineBoostLibrary,container))
|
||||
$(eval $(call DefineBoostLibrary,context,chrono system thread,,!boost-context-exclude))
|
||||
$(eval $(call DefineBoostLibrary,contract,system))
|
||||
$(eval $(call DefineBoostLibrary,coroutine,system chrono context thread,,!boost-coroutine-exclude))
|
||||
$(eval $(call DefineBoostLibrary,date_time))
|
||||
#$(eval $(call DefineBoostLibrary,exception,,))
|
||||
$(eval $(call DefineBoostLibrary,fiber,coroutine filesystem,,!boost-fiber-exclude))
|
||||
$(eval $(call DefineBoostLibrary,filesystem,system,))
|
||||
$(eval $(call DefineBoostLibrary,graph,regex,))
|
||||
$(eval $(call DefineBoostLibrary,filesystem,system))
|
||||
$(eval $(call DefineBoostLibrary,graph,regex))
|
||||
$(eval $(call DefineBoostLibrary,iostreams,,+zlib +liblzma +libbz2 +zstd))
|
||||
$(eval $(call DefineBoostLibrary,locale,system,$(ICONV_DEPENDS),BUILD_NLS))
|
||||
$(eval $(call DefineBoostLibrary,log,system chrono date_time thread filesystem regex,))
|
||||
$(eval $(call DefineBoostLibrary,math,,))
|
||||
$(eval $(call DefineBoostLibrary,log,system chrono date_time thread filesystem regex))
|
||||
$(eval $(call DefineBoostLibrary,math))
|
||||
#$(eval $(call DefineBoostLibrary,mpi,,)) # OpenMPI does no exist in OpenWRT at this time.
|
||||
$(eval $(call DefineBoostLibrary,program_options,,))
|
||||
$(eval $(call DefineBoostLibrary,program_options))
|
||||
$(eval $(call DefineBoostLibrary,python,,,PACKAGE_python))
|
||||
$(eval $(call DefineBoostLibrary,python3,,,PACKAGE_python3))
|
||||
$(eval $(call DefineBoostLibrary,random,system,))
|
||||
$(eval $(call DefineBoostLibrary,regex,,))
|
||||
$(eval $(call DefineBoostLibrary,serialization,,))
|
||||
$(eval $(call DefineBoostLibrary,wserialization,serialization,))
|
||||
$(eval $(call DefineBoostLibrary,stacktrace,,))
|
||||
$(eval $(call DefineBoostLibrary,system,,))
|
||||
$(eval $(call DefineBoostLibrary,thread,system chrono atomic,))
|
||||
$(eval $(call DefineBoostLibrary,random,system))
|
||||
$(eval $(call DefineBoostLibrary,regex))
|
||||
$(eval $(call DefineBoostLibrary,serialization))
|
||||
$(eval $(call DefineBoostLibrary,wserialization,serialization))
|
||||
$(eval $(call DefineBoostLibrary,stacktrace))
|
||||
$(eval $(call DefineBoostLibrary,system))
|
||||
$(eval $(call DefineBoostLibrary,thread,system chrono atomic))
|
||||
$(eval $(call DefineBoostLibrary,timer,chrono))
|
||||
$(eval $(call DefineBoostLibrary,type_erasure,chrono system thread,))
|
||||
$(eval $(call DefineBoostLibrary,wave,date_time thread filesystem,))
|
||||
$(eval $(call DefineBoostLibrary,type_erasure,chrono system thread))
|
||||
$(eval $(call DefineBoostLibrary,wave,date_time thread filesystem))
|
||||
|
||||
include $(INCLUDE_DIR)/host-build.mk
|
||||
|
||||
|
@ -514,7 +508,7 @@ endef
|
|||
|
||||
define Host/Install
|
||||
$(INSTALL_DIR) $(STAGING_DIR_HOSTPKG)/bin
|
||||
$(CP) $(HOST_BUILD_DIR)/tools/build/src/engine/bin.*/b2 $(STAGING_DIR_HOSTPKG)/bin/
|
||||
$(CP) $(HOST_BUILD_DIR)/tools/build/src/engine/b2 $(STAGING_DIR_HOSTPKG)/bin/
|
||||
endef
|
||||
|
||||
define Package/boost/Default/install
|
||||
|
|
71
libs/boost/patches/002-utime-filesystem.patch
Normal file
71
libs/boost/patches/002-utime-filesystem.patch
Normal file
|
@ -0,0 +1,71 @@
|
|||
From 83b989ecee478be083db8dc0cc7a5387615bd3cb Mon Sep 17 00:00:00 2001
|
||||
From: Andrey Semashev <andrey.semashev@gmail.com>
|
||||
Date: Wed, 31 Jul 2019 16:28:05 +0300
|
||||
Subject: [PATCH] Added support for utimensat for better POSIX.1-2008
|
||||
compliance.
|
||||
|
||||
POSIX.1-2008 marks utime as obsolete and replaces it with utimensat.
|
||||
uClibc-ng has an option for removing utime, including the corresponding
|
||||
header.
|
||||
|
||||
Closes https://github.com/boostorg/filesystem/pull/115.
|
||||
---
|
||||
libs/filesystem/src/operations.cpp | 24 ++++++++++++++++++++++--
|
||||
1 file changed, 22 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/operations.cpp b/src/operations.cpp
|
||||
index 9bba1cf7a..038109d35 100644
|
||||
--- a/libs/filesystem/src/operations.cpp
|
||||
+++ b/libs/filesystem/src/operations.cpp
|
||||
@@ -62,7 +62,7 @@
|
||||
#endif
|
||||
|
||||
#ifndef _POSIX_PTHREAD_SEMANTICS
|
||||
-# define _POSIX_PTHREAD_SEMANTICS // Sun readdir_r()needs this
|
||||
+# define _POSIX_PTHREAD_SEMANTICS // Sun readdir_r() needs this
|
||||
#endif
|
||||
|
||||
#include <boost/filesystem/operations.hpp>
|
||||
@@ -119,7 +119,9 @@ using std::wstring;
|
||||
# include <dirent.h>
|
||||
# include <unistd.h>
|
||||
# include <fcntl.h>
|
||||
-# include <utime.h>
|
||||
+# if _POSIX_C_SOURCE < 200809L
|
||||
+# include <utime.h>
|
||||
+# endif
|
||||
# include "limits.h"
|
||||
|
||||
# else // BOOST_WINDOW_API
|
||||
@@ -1451,6 +1453,22 @@ namespace detail
|
||||
system::error_code* ec)
|
||||
{
|
||||
# ifdef BOOST_POSIX_API
|
||||
+# if _POSIX_C_SOURCE >= 200809L
|
||||
+
|
||||
+ struct timespec times[2] = {};
|
||||
+
|
||||
+ // Keep the last access time unchanged
|
||||
+ times[0].tv_nsec = UTIME_OMIT;
|
||||
+
|
||||
+ times[1].tv_sec = new_time;
|
||||
+
|
||||
+ if (BOOST_UNLIKELY(::utimensat(AT_FDCWD, p.c_str(), times, 0) != 0))
|
||||
+ {
|
||||
+ error(BOOST_ERRNO, p, ec, "boost::filesystem::last_write_time");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+# else // _POSIX_C_SOURCE >= 200809L
|
||||
|
||||
struct stat path_stat;
|
||||
if (error(::stat(p.c_str(), &path_stat)!= 0,
|
||||
@@ -1462,6 +1480,8 @@ namespace detail
|
||||
error(::utime(p.c_str(), &buf)!= 0 ? BOOST_ERRNO : 0,
|
||||
p, ec, "boost::filesystem::last_write_time");
|
||||
|
||||
+# endif // _POSIX_C_SOURCE >= 200809L
|
||||
+
|
||||
# else
|
||||
|
||||
handle_wrapper hw(
|
|
@ -1,117 +0,0 @@
|
|||
From cbdb354a274c8ab51a15dd43eafd02c2b6a576f0 Mon Sep 17 00:00:00 2001
|
||||
From: Edward Catmur <edward.catmur@mavensecurities.com>
|
||||
Date: Wed, 17 Apr 2019 15:05:37 +0100
|
||||
Subject: [PATCH 1/2] Copy variant cvref when determining result type
|
||||
|
||||
Ensures that we can e.g. call apply_visitor on a lvalue variant
|
||||
---
|
||||
boost/variant/detail/apply_visitor_unary.hpp | 9 +++++----
|
||||
1 file changed, 5 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/boost/variant/detail/apply_visitor_unary.hpp
|
||||
+++ b/boost/variant/detail/apply_visitor_unary.hpp
|
||||
@@ -23,6 +23,7 @@
|
||||
# include <boost/mpl/size.hpp>
|
||||
# include <boost/utility/declval.hpp>
|
||||
# include <boost/core/enable_if.hpp>
|
||||
+# include <boost/type_traits/copy_cv_ref.hpp>
|
||||
# include <boost/type_traits/remove_reference.hpp>
|
||||
# include <boost/variant/detail/has_result_type.hpp>
|
||||
#endif
|
||||
@@ -85,7 +86,7 @@ namespace detail { namespace variant {
|
||||
// This class serves only metaprogramming purposes. none of its methods must be called at runtime!
|
||||
template <class Visitor, class Variant>
|
||||
struct result_multideduce1 {
|
||||
- typedef typename Variant::types types;
|
||||
+ typedef typename remove_reference<Variant>::type::types types;
|
||||
typedef typename boost::mpl::begin<types>::type begin_it;
|
||||
typedef typename boost::mpl::advance<
|
||||
begin_it, boost::mpl::int_<boost::mpl::size<types>::type::value - 1>
|
||||
@@ -95,14 +96,14 @@ struct result_multideduce1 {
|
||||
struct deduce_impl {
|
||||
typedef typename boost::mpl::next<It>::type next_t;
|
||||
typedef typename boost::mpl::deref<It>::type value_t;
|
||||
- typedef decltype(true ? boost::declval< Visitor& >()( boost::declval< value_t >() )
|
||||
+ typedef decltype(true ? boost::declval< Visitor& >()( boost::declval< copy_cv_ref_t< value_t, Variant > >() )
|
||||
: boost::declval< typename deduce_impl<next_t>::type >()) type;
|
||||
};
|
||||
|
||||
template <class Dummy>
|
||||
struct deduce_impl<last_it, Dummy> {
|
||||
typedef typename boost::mpl::deref<last_it>::type value_t;
|
||||
- typedef decltype(boost::declval< Visitor& >()( boost::declval< value_t >() )) type;
|
||||
+ typedef decltype(boost::declval< Visitor& >()( boost::declval< copy_cv_ref_t< value_t, Variant > >() )) type;
|
||||
};
|
||||
|
||||
typedef typename deduce_impl<begin_it>::type type;
|
||||
@@ -132,7 +133,7 @@ inline decltype(auto) apply_visitor(Visi
|
||||
boost::detail::variant::has_result_type<Visitor>
|
||||
>::type* = 0)
|
||||
{
|
||||
- boost::detail::variant::result_wrapper1<Visitor, typename remove_reference<Visitable>::type> cpp14_vis(::boost::forward<Visitor>(visitor));
|
||||
+ boost::detail::variant::result_wrapper1<Visitor, Visitable> cpp14_vis(::boost::forward<Visitor>(visitor));
|
||||
return ::boost::forward<Visitable>(visitable).apply_visitor(cpp14_vis);
|
||||
}
|
||||
|
||||
--- a/libs/variant/test/const_ref_apply_visitor.cpp
|
||||
+++ b/libs/variant/test/const_ref_apply_visitor.cpp
|
||||
@@ -217,6 +217,44 @@ void test_cpp14_visitor(const variant_ty
|
||||
#endif
|
||||
}
|
||||
|
||||
+void test_cpp14_visitor(variant_type& test_var)
|
||||
+{
|
||||
+ std::cout << "Testing lvalue visitable for c++14\n";
|
||||
+
|
||||
+ BOOST_TEST(boost::apply_visitor([](auto& v) { return lvalue_rvalue_detector()(v); }, test_var) == "lvalue reference");
|
||||
+}
|
||||
+
|
||||
+void test_cpp14_mutable_visitor(variant_type& test_var)
|
||||
+{
|
||||
+ std::cout << "Testing lvalue visitable for c++14 with inline mutable lambda\n";
|
||||
+
|
||||
+ BOOST_TEST(boost::apply_visitor([](auto& v) mutable -> auto { return lvalue_rvalue_detector()(v); }, test_var) == "lvalue reference");
|
||||
+}
|
||||
+
|
||||
+void test_cpp14_visitor(variant_type& test_var, variant_type& test_var2)
|
||||
+{
|
||||
+ std::cout << "Testing lvalue visitable for c++14\n";
|
||||
+
|
||||
+ BOOST_TEST(boost::apply_visitor([](auto& v, auto& vv) { return lvalue_rvalue_detector()(v, vv); }, test_var, test_var2)
|
||||
+ == "lvalue reference, lvalue reference");
|
||||
+}
|
||||
+
|
||||
+void test_cpp14_visitor(variant_type& test_var, variant_type& test_var2, variant_type& test_var3)
|
||||
+{
|
||||
+#if !defined(BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_HDR_TUPLE)
|
||||
+ std::cout << "Testing lvalue visitable for c++14\n";
|
||||
+
|
||||
+ auto result = boost::apply_visitor([](auto& v, auto& t, auto& p) { return lvalue_rvalue_detector()(v, t, p); },
|
||||
+ test_var, test_var2, test_var3);
|
||||
+ std::cout << "result: " << result << std::endl;
|
||||
+ BOOST_TEST(result == "lvalue reference, lvalue reference, lvalue reference");
|
||||
+#else
|
||||
+ (void)test_var;
|
||||
+ (void)test_var2;
|
||||
+ (void)test_var3;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
void test_cpp14_visitor(variant_type&& test_var)
|
||||
{
|
||||
std::cout << "Testing rvalue visitable for c++14\n";
|
||||
@@ -333,8 +371,14 @@ void run_cpp14_mixed_tests()
|
||||
void run_cpp14_tests()
|
||||
{
|
||||
#ifndef BOOST_NO_CXX14_DECLTYPE_AUTO
|
||||
+ variant_type const c1(10), c2(20), c3(30);
|
||||
variant_type v1(10), v2(20), v3(30);
|
||||
|
||||
+ test_cpp14_visitor(c1);
|
||||
+ test_cpp14_mutable_visitor(c1);
|
||||
+ test_cpp14_visitor(c2, c3);
|
||||
+ test_cpp14_visitor(c1, c2, c3);
|
||||
+
|
||||
test_cpp14_visitor(v1);
|
||||
test_cpp14_mutable_visitor(v1);
|
||||
test_cpp14_visitor(v2, v3);
|
Loading…
Reference in a new issue