diff --git a/libs/boost/Makefile b/libs/boost/Makefile index 182a57378..b79cb10fe 100644 --- a/libs/boost/Makefile +++ b/libs/boost/Makefile @@ -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 PKG_LICENSE:=BSL-1.0 @@ -26,6 +26,7 @@ PKG_LICENSE_FILES:=LICENSE_1_0.txt 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 @@ -41,32 +42,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 @@ -87,7 +76,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 @@ -127,6 +116,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." @@ -199,11 +204,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 @@ -263,29 +268,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) @@ -293,10 +286,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 @@ -334,35 +328,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 @@ -513,7 +507,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 diff --git a/libs/boost/patches/010-uclibc-ng.patch b/libs/boost/patches/001-uclibc-asio.patch similarity index 100% rename from libs/boost/patches/010-uclibc-ng.patch rename to libs/boost/patches/001-uclibc-asio.patch diff --git a/libs/boost/patches/002-utime-filesystem.patch b/libs/boost/patches/002-utime-filesystem.patch new file mode 100644 index 000000000..2a778af3a --- /dev/null +++ b/libs/boost/patches/002-utime-filesystem.patch @@ -0,0 +1,71 @@ +From 83b989ecee478be083db8dc0cc7a5387615bd3cb Mon Sep 17 00:00:00 2001 +From: Andrey Semashev +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 +@@ -119,7 +119,9 @@ using std::wstring; + # include + # include + # include +-# include ++# if _POSIX_C_SOURCE < 200809L ++# include ++# 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( diff --git a/libs/boost/patches/100-fix-apply_visitor-on-lvalue-variant.patch b/libs/boost/patches/100-fix-apply_visitor-on-lvalue-variant.patch deleted file mode 100644 index 0e5908920..000000000 --- a/libs/boost/patches/100-fix-apply_visitor-on-lvalue-variant.patch +++ /dev/null @@ -1,117 +0,0 @@ -From cbdb354a274c8ab51a15dd43eafd02c2b6a576f0 Mon Sep 17 00:00:00 2001 -From: Edward Catmur -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 - # include - # include -+# include - # include - # include - #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 - struct result_multideduce1 { -- typedef typename Variant::types types; -+ typedef typename remove_reference::type::types types; - typedef typename boost::mpl::begin::type begin_it; - typedef typename boost::mpl::advance< - begin_it, boost::mpl::int_::type::value - 1> -@@ -95,14 +96,14 @@ struct result_multideduce1 { - struct deduce_impl { - typedef typename boost::mpl::next::type next_t; - typedef typename boost::mpl::deref::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::type >()) type; - }; - - template - struct deduce_impl { - typedef typename boost::mpl::deref::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::type type; -@@ -132,7 +133,7 @@ inline decltype(auto) apply_visitor(Visi - boost::detail::variant::has_result_type - >::type* = 0) - { -- boost::detail::variant::result_wrapper1::type> cpp14_vis(::boost::forward(visitor)); -+ boost::detail::variant::result_wrapper1 cpp14_vis(::boost::forward(visitor)); - return ::boost::forward(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); diff --git a/libs/boost/patches/uclibc-ng-2.patch b/libs/boost/patches/101-uclibc-ng-math.patch similarity index 100% rename from libs/boost/patches/uclibc-ng-2.patch rename to libs/boost/patches/101-uclibc-ng-math.patch