From c40a70c9b75fba763e8bb288f03f8664d0d64ea3 Mon Sep 17 00:00:00 2001 From: Thomas Sailer Date: Aug 04 2020 12:09:17 +0000 Subject: update to 1.73.0 --- diff --git a/.gitignore b/.gitignore index 097a1a9..e90dfdb 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ boost-1.41.0.cmake0.tar.bz2 /boost_1_64_0.tar.bz2 /boost_1_66_0.tar.bz2 /boost_1_69_0.tar.bz2 +/boost_1_73_0.tar.bz2 diff --git a/boost-1.48.0-add-bjam-man-page.patch b/boost-1.48.0-add-bjam-man-page.patch deleted file mode 100644 index ea3f19f..0000000 --- a/boost-1.48.0-add-bjam-man-page.patch +++ /dev/null @@ -1,150 +0,0 @@ -diff --git a/tools/build/v2/doc/bjam.1 b/tools/build/v2/doc/bjam.1 -new file mode 100644 -index 0000000..8a44af6 ---- /dev/null -+++ b/tools/build/v2/doc/bjam.1 -@@ -0,0 +1,144 @@ -+.TH "bjam" 1 "Sat Nov 19 2011" "Doxygen" \" -*- nroff -*- -+.ad l -+.nh -+.SH NAME -+bjam \- Command-line utility to build Boost-related C++ projects with Boost\&.Build -+.SH "SYNOPSIS" -+.PP -+\fBbjam\fP \fC[-a] [-dx] [-fx] [-jx] [-lx] [-n] [-ox] [-px] [-q] [-sx=y] [-tx] [-v] [--x]\fP -+.PP -+\fIbjam\fP accepts the following options: -+.PP -+\fB-a\fP -+.br -+ Build all targets, even if they are current -+.PP -+\fB-dx\fP -+.br -+ Set the debug level to x (0-9) -+.PP -+\fB-fx\fP -+.br -+ Read x instead of Jambase -+.PP -+\fB-jx\fP -+.br -+ Run up to x shell commands concurrently -+.PP -+\fB-lx\fP -+.br -+ Limit actions to x number of seconds after which they are stopped -+.PP -+\fB-n\fP -+.br -+ Don't actually execute the updating actions -+.PP -+\fB-ox\fP -+.br -+ Write the updating actions to file x -+.PP -+\fB-px\fP -+.br -+ x=0, pipes action stdout and stderr merged into action output -+.PP -+\fB-q\fP -+.br -+ Quit quickly as soon as a target fails -+.PP -+\fB-sx=y\fP -+.br -+ Set variable x=y, overriding environment -+.PP -+\fB-tx\fP -+.br -+ Rebuild x, even if it is up-to-date -+.PP -+\fB-v\fP -+.br -+ Print the version of jam and exit -+.PP -+\fB--x\fP -+.br -+ Option is ignored -+.SH "DESCRIPTION" -+.PP -+This section provides the information necessary to create your own projects using \fIBoost\&.Build\fP The information provided here is relatively high-level, and Chapter 6, Reference as well as the on-line help system must be used to obtain low-level documentation (see --help) -+.PP -+\fIBoost\&.Build\fP actually consists of two parts - \fIBoost\&.Jam\fP, a build engine with its own interpreted language, and \fIBoost\&.Build\fP itself, implemented in \fIBoost\&.Jam's\fP language\&. The chain of events when you type bjam on the command line is as follows: -+.IP "\(bu" 2 -+\fIBoost\&.Jam\fP tries to find \fIBoost\&.Build\fP and loads the top-level module\&. The exact process is described in the section called “Initialization” -+.PP -+.PP -+.IP "\(bu" 2 -+The top-level module loads user-defined configuration files, \fIuser-config\&.jam\fP and \fIsite-config\&.jam\fP, which define available toolsets -+.PP -+.PP -+.IP "\(bu" 2 -+The \fIJamfile\fP in the current directory is read That in turn might cause reading of further Jamfiles\&. As a result, a tree of projects is created, with targets inside projects -+.PP -+.PP -+.IP "\(bu" 2 -+Finally, using the build request specified on the command line, \fIBoost\&.Build\fP decides which targets should be built and how\&. That information is passed back to \fIBoost\&.Jam\fP, which takes care of actually running the scheduled build action commands -+.PP -+.PP -+So, to be able to successfully use \fIBoost\&.Build\fP, you need to know only four things: -+.IP "\(bu" 2 -+How to configure \fIBoost\&.Build\fP (http://www.boost.org/boost-build2/doc/html/bbv2/overview/configuration.html) -+.IP "\(bu" 2 -+How to declare targets in Jamfiles (http://www.boost.org/boost-build2/doc/html/bbv2/overview/targets.html) -+.IP "\(bu" 2 -+How the build process works (http://www.boost.org/boost-build2/doc/html/bbv2/overview/build_process.html) -+.PP -+.PP -+Some Basics about the \fIBoost\&.Jam\fP language\&. See the section called “Boost\&.Jam Language” (http://www.boost.org/boost-build2/doc/html/bbv2/overview/jam_language.html) -+.SH "CONCEPTS" -+.PP -+\fIBoost\&.Build\fP has a few unique concepts that are introduced in this section\&. The best way to explain the concepts is by comparison with more classical build tools -+.PP -+When using any flavour of make, you directly specify targets and commands that are used to create them from other target\&. The below example creates a\&.o from a\&.c using a hardcoded compiler invocation command -+.PP -+a\&.o: a\&.c -+.br -+ g++ -o a\&.o -g a\&.c -+.PP -+This is rather low-level description mechanism and it is hard to adjust commands, options, and sets of created targets depending on the used compiler and operating system\&. -+.PP -+To improve portability, most modern build system provide a set of higher-level functions that can be used in build description files\&. Consider this example: -+.PP -+add_program ('a', 'a\&.c') -+.br -+.PP -+This is a function call that creates targets necessary to create executable file from source file a\&.c\&. Depending on configured properties, different commands line may be used\&. However, \fIadd_program\fP is higher-level, but rather thin level All targets are created immediately when build description is parsed, which makes it impossible to perform multi-variant builds\&. Often, change in any build property requires complete reconfiguration of the build tree -+.PP -+In order to support true multivariant builds, Boost\&.Build introduces the concept of metatarget—object that is created when build description is parsed and can be later called with specific build properties to generate actual targets -+.PP -+Consider an example: -+.PP -+exe a : a\&.cpp ; -+.br -+.PP -+When this declaration is parsed, \fIBoost\&.Build\fP creates a metatarget, but does not yet decides what files must be created, or what commands must be used\&. After all build files are parsed, Boost\&.Build considers properties requested on the command line\&. Supposed you have invoked \fIBoost\&.Build\fP with: -+.PP -+\fIbjam\fP toolset=gcc toolset=msvc -+.br -+.PP -+In that case, the metatarget will be called twice, once with toolset=gcc and once with toolset=msvc\&. Both invocations will produce concrete targets, that will have different extensions and use different command lines\&. Another key concept is build property\&. Build property is a variable that affects the build process\&. It can be specified on the command line, and is passed when calling a metatarget -+.PP -+While all build tools have a similar mechanism, \fIBoost\&.Build\fP differs by requiring that all build properties are declared in advance, and providing a large set of properties with portable semantics -+.PP -+The final concept is property propagation\&. Boost\&.Build does not require that every metatarget is called with the same properties\&. Instead, the 'top-level' metatargets are called with the properties specified on the command line Each metatarget can elect to augment or override some properties (in particular, using the requirements mechanism, see the section called “Requirements”: http://www.boost.org/boost-build2/doc/html/bbv2/overview/targets.html#bbv2.overview.targets.requirements) Then, the dependency metatargets are called with modified properties and produce concrete targets that are then used in build process Of course, dependency metatargets maybe in turn modify build properties and have dependencies of their own\&. -+.PP -+For more in-depth treatment of the requirements and concepts, you may refer to SYRCoSE 2009 Boost\&.Build article (http://syrcose.ispras.ru/2009/files/04_paper.pdf)\&. -+.SH "SEE ALSO" -+.PP -+\fBboost-libraries\fP(3) -+.SH "SUPPORT" -+.PP -+Please report any bugs to https://svn.boost.org/trac/boost/ -+.SH "COPYRIGHT" -+.PP -+Boost Software License - Version 1\&.0 - August 17th, 2003 -+.PP -+See the LICENSE_1_0\&.txt file for more information on that license, or directly on Internet: -+.br -+ http://www.boost.org/LICENSE_1_0.txt diff --git a/boost-1.54.0-bind-static_assert.patch b/boost-1.54.0-bind-static_assert.patch deleted file mode 100644 index bd1800e..0000000 --- a/boost-1.54.0-bind-static_assert.patch +++ /dev/null @@ -1,21 +0,0 @@ -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 - #include -+#include - - namespace boost - { -@@ -33,8 +34,7 @@ template< int I > struct arg - - template< class T > arg( T const & /* t */ ) - { -- // static assert I == is_placeholder::value -- typedef char T_must_be_placeholder[ I == is_placeholder::value? 1: -1 ]; -+ BOOST_STATIC_ASSERT(I == is_placeholder::value); - } - }; - diff --git a/boost-1.57.0-mpl-print.patch b/boost-1.57.0-mpl-print.patch deleted file mode 100644 index 561cef1..0000000 --- a/boost-1.57.0-mpl-print.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff -up boost_1_57_0/boost/mpl/print.hpp\~ boost_1_57_0/boost/mpl/print.hpp ---- boost_1_57_0/boost/mpl/print.hpp~ 2014-07-09 23:12:31.000000000 +0200 -+++ boost_1_57_0/boost/mpl/print.hpp 2015-01-20 12:44:59.621400948 +0100 -@@ -52,16 +52,15 @@ struct print - enum { n = sizeof(T) + -1 }; - #elif defined(__MWERKS__) - void f(int); --#else -- enum { -- n = --# if defined(__EDG_VERSION__) -- aux::dependent_unsigned::value > -1 --# else -- sizeof(T) > -1 --# endif -- }; --#endif -+#elif defined(__EDG_VERSION__) -+ enum { n = aux::dependent_unsigned::value > -1 }; -+#elif defined(BOOST_GCC) -+ enum { n1 }; -+ enum { n2 }; -+ enum { n = n1 != n2 }; -+#else -+ enum { n = sizeof(T) > -1 }; -+#endif - }; - - #if defined(BOOST_MSVC) - -Diff finished. Tue Jan 20 12:45:03 2015 diff --git a/boost-1.57.0-python-libpython_dep.patch b/boost-1.57.0-python-libpython_dep.patch deleted file mode 100644 index 57bfc26..0000000 --- a/boost-1.57.0-python-libpython_dep.patch +++ /dev/null @@ -1,13 +0,0 @@ -Index: boost_1_57_0/tools/build/src/tools/python.jam -=================================================================== ---- boost_1_57_0/tools/build/src/tools/python.jam (revision 50406) -+++ boost_1_57_0/tools/build/src/tools/python.jam (working copy) -@@ -994,7 +994,7 @@ - else - { - alias python_for_extensions -- : -+ : python - : $(target-requirements) - : - : $(usage-requirements) diff --git a/boost-1.64.0-serialization-make_array.patch b/boost-1.64.0-serialization-make_array.patch deleted file mode 100644 index b8129dd..0000000 --- a/boost-1.64.0-serialization-make_array.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 1d86261581230e2dc5d617a9b16287d326f3e229 Mon Sep 17 00:00:00 2001 -From: Robert Ramey -Date: Wed, 1 Feb 2017 16:43:59 -0800 -Subject: [PATCH] correct error which appeared when compiling non c++ compliant - code for arrays - ---- - include/boost/serialization/array.hpp | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/include/boost/serialization/array.hpp b/include/boost/serialization/array.hpp -index 61708b307..612d1a619 100644 ---- a/include/boost/serialization/array.hpp -+++ b/include/boost/serialization/array.hpp -@@ -23,6 +23,8 @@ namespace std{ - } // namespace std - #endif - -+#include -+ - #ifndef BOOST_NO_CXX11_HDR_ARRAY - - #include diff --git a/boost-1.66.0-bjam-build-flags.patch b/boost-1.66.0-bjam-build-flags.patch deleted file mode 100644 index 34ee6ca..0000000 --- a/boost-1.66.0-bjam-build-flags.patch +++ /dev/null @@ -1,26 +0,0 @@ ---- boost_1_66_0/tools/build/src/engine/build.jam~ 2018-02-07 21:36:14.552201421 +0000 -+++ boost_1_66_0/tools/build/src/engine/build.jam 2018-02-07 21:36:29.014173266 +0000 -@@ -4,7 +4,7 @@ - #~ http://www.boost.org/LICENSE_1_0.txt) - - # Clean env vars of any "extra" empty values. --for local v in ARGV CC CFLAGS LIBS -+for local v in ARGV CC CFLAGS LIBS RPM_OPT_FLAGS RPM_LD_FLAGS - { - local values ; - for local x in $($(v)) -@@ -215,12 +215,12 @@ - : -L$(--python-lib[1]) -l$(--python-lib[2]) ; - ## GCC 2.x, 3.x, 4.x - toolset gcc gcc : "-o " : -D -- : -pedantic -fno-strict-aliasing -+ : -pedantic -fno-strict-aliasing $(RPM_OPT_FLAGS) - [ opt --release : [ opt --symbols : -g : -s ] -O3 ] - [ opt --debug : -g -O0 -fno-inline ] - [ opt --profile : -O3 -g -pg ] - -I$(--python-include) -I$(--extra-include) -Wno-long-long -- : -L$(--python-lib[1]) -l$(--python-lib[2]) ; -+ : -L$(--python-lib[1]) -l$(--python-lib[2]) $(RPM_LD_FLAGS) ; - ## GCC 2.x, 3.x on CYGWIN but without cygwin1.dll - toolset gcc-nocygwin gcc : "-o " : -D - : -s -O3 -mno-cygwin diff --git a/boost-1.66.0-build-optflags.patch b/boost-1.66.0-build-optflags.patch deleted file mode 100644 index 8855b40..0000000 --- a/boost-1.66.0-build-optflags.patch +++ /dev/null @@ -1,49 +0,0 @@ ---- boost_1_66_0/tools/build/src/tools/gcc.jam~ 2017-12-13 23:56:50.000000000 +0000 -+++ boost_1_66_0/tools/build/src/tools/gcc.jam 2018-01-19 12:48:26.264755316 +0000 -@@ -603,7 +603,7 @@ rule compile.fortran ( targets * : sourc - - actions compile.c++ bind PCH_FILE - { -- "$(CONFIG_COMMAND)" $(LANG) -ftemplate-depth-$(TEMPLATE_DEPTH) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" -c -o "$(<:W)" "$(>:W)" -+ "$(CONFIG_COMMAND)" $(LANG) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" -c -o "$(<:W)" "$(>:W)" - } - - actions compile.c bind PCH_FILE -@@ -613,7 +613,7 @@ actions compile.c bind PCH_FILE - - actions compile.c++.preprocess bind PCH_FILE - { -- "$(CONFIG_COMMAND)" $(LANG) -ftemplate-depth-$(TEMPLATE_DEPTH) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" "$(>:W)" -E >"$(<:W)" -+ "$(CONFIG_COMMAND)" $(LANG) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" "$(>:W)" -E >"$(<:W)" - } - - actions compile.c.preprocess bind PCH_FILE -@@ -755,17 +755,17 @@ actions compile.c.pch - ### - - # Declare flags and action for compilation. --toolset.flags gcc.compile OPTIONS off : -O0 ; --toolset.flags gcc.compile OPTIONS speed : -O3 ; --toolset.flags gcc.compile OPTIONS space : -Os ; -- --toolset.flags gcc.compile OPTIONS off : -fno-inline ; --toolset.flags gcc.compile OPTIONS on : -Wno-inline ; --toolset.flags gcc.compile OPTIONS full : -finline-functions -Wno-inline ; -- --toolset.flags gcc.compile OPTIONS off : -w ; --toolset.flags gcc.compile OPTIONS on : -Wall ; --toolset.flags gcc.compile OPTIONS all : -Wall -pedantic ; -+toolset.flags gcc.compile OPTIONS off : ; -+toolset.flags gcc.compile OPTIONS speed : ; -+toolset.flags gcc.compile OPTIONS space : ; -+ -+toolset.flags gcc.compile OPTIONS off : ; -+toolset.flags gcc.compile OPTIONS on : ; -+toolset.flags gcc.compile OPTIONS full : ; -+ -+toolset.flags gcc.compile OPTIONS off : ; -+toolset.flags gcc.compile OPTIONS on : ; -+toolset.flags gcc.compile OPTIONS all : ; - toolset.flags gcc.compile OPTIONS on : -Werror ; - - toolset.flags gcc.compile OPTIONS on : -g ; diff --git a/boost-1.66.0-python-abi_letters.patch b/boost-1.66.0-python-abi_letters.patch deleted file mode 100644 index a421a75..0000000 --- a/boost-1.66.0-python-abi_letters.patch +++ /dev/null @@ -1,62 +0,0 @@ ---- boost_1_57_0/tools/build/src/tools/python.jam 2013-05-21 06:14:18.000000000 +0200 -+++ boost_1_55_0/tools/build/src/tools/python.jam 2014-05-29 19:09:12.115413877 +0200 -@@ -94,7 +94,7 @@ feature.feature pythonpath : : free opti - # using python : 2.3 : /usr/local/bin/python ; - # - rule init ( version ? : cmd-or-prefix ? : includes * : libraries ? -- : condition * : extension-suffix ? ) -+ : condition * : extension-suffix ? : abi-letters ? ) - { - project.push-current $(.project) ; - -@@ -107,7 +107,7 @@ rule init ( version ? : cmd-or-prefix ? - } - } - -- configure $(version) : $(cmd-or-prefix) : $(includes) : $(libraries) : $(condition) : $(extension-suffix) ; -+ configure $(version) : $(cmd-or-prefix) : $(includes) : $(libraries) : $(condition) : $(extension-suffix) : $(abi-letters) ; - - project.pop-current ; - } -@@ -653,7 +653,7 @@ local rule system-library-dependencies ( - - # Declare a target to represent Python's library. - # --local rule declare-libpython-target ( version ? : requirements * ) -+local rule declare-libpython-target ( version ? : requirements * : abi-letters ? ) - { - # Compute the representation of Python version in the name of Python's - # library file. -@@ -677,13 +677,13 @@ local rule declare-libpython-target ( ve - } - - # Declare it. -- lib python.lib : : python$(lib-version) $(requirements) ; -+ lib python.lib : : python$(lib-version)$(abi-letters) $(requirements) ; - } - - - # Implementation of init. - local rule configure ( version ? : cmd-or-prefix ? : includes * : libraries ? : -- condition * : extension-suffix ? ) -+ condition * : extension-suffix ? : abi-letters ? ) - { - local prefix ; - local exec-prefix ; -@@ -699,6 +699,7 @@ local rule configure ( version ? : cmd-o - extension-suffix ?= _d ; - } - extension-suffix ?= "" ; -+ abi-letters ?= "" ; - - local cmds-to-try ; - -@@ -922,7 +923,7 @@ local rule configure ( version ? : cmd-o - } - else - { -- declare-libpython-target $(version) : $(target-requirements) ; -+ declare-libpython-target $(version) : $(target-requirements) : $(abi-letters) ; - - # This is an evil hack. On, Windows, when Python is embedded, nothing - # seems to set up sys.path to include Python's standard library diff --git a/boost-1.69-mpi-c_data.patch b/boost-1.69-mpi-c_data.patch deleted file mode 100644 index 299c97e..0000000 --- a/boost-1.69-mpi-c_data.patch +++ /dev/null @@ -1,27 +0,0 @@ -From dc708430bf5fd31d29da2e7e6b5fd20fe593e106 Mon Sep 17 00:00:00 2001 -From: Michael Kuron -Date: Thu, 14 Feb 2019 15:55:31 +0100 -Subject: [PATCH] mpi::detail::c_data needs to check for empty vectors - -If the standard library is configured to do range checks (-D _GLIBCXX_ASSERTIONS), accessing the zeroth element of a vector to get its address triggers an assertion. ---- - include/boost/mpi/detail/antiques.hpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/include/boost/mpi/detail/antiques.hpp b/include/boost/mpi/detail/antiques.hpp -index 0bd235b2..93b8efe9 100644 ---- a/boost/mpi/detail/antiques.hpp -+++ b/boost/mpi/detail/antiques.hpp -@@ -19,10 +19,10 @@ namespace detail { - // serve as an incentive to get rid of this when those compilers - // are dropped. - template -- T* c_data(std::vector& v) { return &(v[0]); } -+ T* c_data(std::vector& v) { if (v.empty()) return NULL; return &(v[0]); } - - template -- T const* c_data(std::vector const& v) { return &(v[0]); } -+ T const* c_data(std::vector const& v) { if (v.empty()) return NULL; return &(v[0]); } - - // Some old MPI implementation (OpenMPI 1.6 for example) have non - // conforming API w.r.t. constness. diff --git a/boost-1.69-random.patch b/boost-1.69-random.patch deleted file mode 100644 index 8ad3cbf..0000000 --- a/boost-1.69-random.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 1be44d405e48a42a63bd8d2dae739560b486a55c Mon Sep 17 00:00:00 2001 -From: Nick Thompson -Date: Sun, 11 Feb 2018 15:02:43 -0600 -Subject: [PATCH] [ci skip] Remove deprecated header. - ---- - include/boost/random/detail/integer_log2.hpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/include/boost/random/detail/integer_log2.hpp b/include/boost/random/detail/integer_log2.hpp -index 248243a4b..2e49f281f 100644 ---- a/boost/random/detail/integer_log2.hpp -+++ b/boost/random/detail/integer_log2.hpp -@@ -16,7 +16,7 @@ - - #include - #include --#include -+#include - - namespace boost { - namespace random { diff --git a/boost-1.69.0-test-cxx20.patch b/boost-1.69.0-test-cxx20.patch new file mode 100644 index 0000000..be1b52c --- /dev/null +++ b/boost-1.69.0-test-cxx20.patch @@ -0,0 +1,27 @@ +From db6b98c72783351e0acd3c558691323a7a103ba9 Mon Sep 17 00:00:00 2001 +From: Raffi Enficiaud +Date: Sat, 9 May 2020 10:42:38 +0200 +Subject: [PATCH] Fixing cast issue when logging wchar_t + +--- + include/boost/test/impl/test_tools.ipp | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/include/boost/test/impl/test_tools.ipp b/include/boost/test/impl/test_tools.ipp +index 025cd1a92a..bbee21fbbc 100644 +--- a/include/boost/test/impl/test_tools.ipp ++++ b/include/boost/test/impl/test_tools.ipp +@@ -124,7 +124,12 @@ print_log_value::operator()( std::ostream& ostr, char const* t ) + void + print_log_value::operator()( std::ostream& ostr, wchar_t const* t ) + { +- ostr << ( t ? reinterpret_cast(t) : "null string" ); ++ if(t) { ++ ostr << static_cast(t); ++ } ++ else { ++ ostr << "null w-string"; ++ } + } + + //____________________________________________________________________________// diff --git a/boost-1.73-geometry-issue721.patch b/boost-1.73-geometry-issue721.patch new file mode 100644 index 0000000..0e843b9 --- /dev/null +++ b/boost-1.73-geometry-issue721.patch @@ -0,0 +1,23 @@ +From aafbceccc76dccb75963dd4f596fd1f10ee34b03 Mon Sep 17 00:00:00 2001 +From: Jonathan Wakely +Date: Fri, 5 Jun 2020 19:29:27 +0100 +Subject: [PATCH] Make index::detail::rtree::visitors::insert base class public + +Fixes #721 +--- + include/boost/geometry/index/detail/rtree/visitors/insert.hpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/boost/geometry/index/detail/rtree/visitors/insert.hpp b/include/boost/geometry/index/detail/rtree/visitors/insert.hpp +index 2d324cb7f4..5709a930cc 100644 +--- a/boost/geometry/index/detail/rtree/visitors/insert.hpp ++++ b/boost/geometry/index/detail/rtree/visitors/insert.hpp +@@ -265,7 +265,7 @@ struct insert_traverse_data + // Default insert visitor + template + class insert +- : MembersHolder::visitor ++ : public MembersHolder::visitor + { + protected: + typedef typename MembersHolder::box_type box_type; diff --git a/boost-1.73-mpi-vector-data.patch b/boost-1.73-mpi-vector-data.patch new file mode 100644 index 0000000..4fe162a --- /dev/null +++ b/boost-1.73-mpi-vector-data.patch @@ -0,0 +1,534 @@ +From 28a73eac54fbc7cfebfd3b2231ee607284233a00 Mon Sep 17 00:00:00 2001 +From: Florian Weik +Date: Wed, 10 Jun 2020 10:18:21 +0200 +Subject: [PATCH 1/4] fixed ub access to first element of empty vectors + +--- + include/boost/mpi/collectives/all_reduce.hpp | 2 +- + include/boost/mpi/collectives/all_to_all.hpp | 12 ++++++------ + include/boost/mpi/collectives/gatherv.hpp | 8 ++++---- + include/boost/mpi/collectives/reduce.hpp | 4 ++-- + include/boost/mpi/collectives/scatter.hpp | 2 +- + include/boost/mpi/collectives/scatterv.hpp | 4 ++-- + .../mpi/detail/binary_buffer_iprimitive.hpp | 4 ++-- + .../mpi/detail/binary_buffer_oprimitive.hpp | 2 +- + .../mpi/detail/mpi_datatype_primitive.hpp | 2 +- + include/boost/mpi/detail/packed_iprimitive.hpp | 4 ++-- + include/boost/mpi/detail/packed_oprimitive.hpp | 4 ++-- + include/boost/mpi/detail/request_handlers.hpp | 4 ++-- + include/boost/mpi/graph_communicator.hpp | 4 ++-- + include/boost/mpi/group.hpp | 9 +++++---- + include/boost/mpi/nonblocking.hpp | 18 +++++++++--------- + src/cartesian_communicator.cpp | 3 ++- + 16 files changed, 44 insertions(+), 42 deletions(-) + +diff --git a/include/boost/mpi/collectives/all_reduce.hpp b/include/boost/mpi/collectives/all_reduce.hpp +index e6ce93c8..302430ff 100644 +--- a/boost/mpi/collectives/all_reduce.hpp ++++ b/boost/mpi/collectives/all_reduce.hpp +@@ -77,7 +77,7 @@ namespace detail { + // implementation in this case. + // it's not clear how/if we can avoid the copy. + std::vector tmp_in( out_values, out_values + n); +- reduce(comm, &(tmp_in[0]), n, out_values, op, 0); ++ reduce(comm, detail::c_data(tmp_in), n, out_values, op, 0); + } else { + reduce(comm, in_values, n, out_values, op, 0); + } +diff --git a/include/boost/mpi/collectives/all_to_all.hpp b/include/boost/mpi/collectives/all_to_all.hpp +index 4f20be73..a0af5ff3 100644 +--- a/boost/mpi/collectives/all_to_all.hpp ++++ b/boost/mpi/collectives/all_to_all.hpp +@@ -91,10 +91,10 @@ namespace detail { + + // Transmit the actual data + BOOST_MPI_CHECK_RESULT(MPI_Alltoallv, +- (&outgoing[0], &send_sizes[0], +- &send_disps[0], MPI_PACKED, +- &incoming[0], &recv_sizes[0], +- &recv_disps[0], MPI_PACKED, ++ (detail::c_data(outgoing), detail::c_data(send_sizes), ++ detail::c_data(send_disps), MPI_PACKED, ++ detail::c_data(incoming), detail::c_data(recv_sizes), ++ detail::c_data(recv_disps), MPI_PACKED, + comm)); + + // Deserialize data from the iarchive +@@ -126,7 +126,7 @@ all_to_all(const communicator& comm, const std::vector& in_values, + { + BOOST_ASSERT((int)in_values.size() == comm.size()); + out_values.resize(comm.size()); +- ::boost::mpi::all_to_all(comm, &in_values[0], &out_values[0]); ++ ::boost::mpi::all_to_all(comm, detail::c_data(in_values), detail::c_data(out_values)); + } + + template +@@ -143,7 +143,7 @@ all_to_all(const communicator& comm, const std::vector& in_values, int n, + { + BOOST_ASSERT((int)in_values.size() == comm.size() * n); + out_values.resize(comm.size() * n); +- ::boost::mpi::all_to_all(comm, &in_values[0], n, &out_values[0]); ++ ::boost::mpi::all_to_all(comm, detail::c_data(in_values), n, detail::c_data(out_values)); + } + + } } // end namespace boost::mpi +diff --git a/include/boost/mpi/collectives/gatherv.hpp b/include/boost/mpi/collectives/gatherv.hpp +index 6b8d706f..5fae9942 100644 +--- a/boost/mpi/collectives/gatherv.hpp ++++ b/boost/mpi/collectives/gatherv.hpp +@@ -87,7 +87,7 @@ gatherv(const communicator& comm, const T* in_values, int in_size, + { + if (comm.rank() == root) + detail::gatherv_impl(comm, in_values, in_size, +- out_values, &sizes[0], &displs[0], ++ out_values, detail::c_data(sizes), detail::c_data(displs), + root, is_mpi_datatype()); + else + detail::gatherv_impl(comm, in_values, in_size, root, is_mpi_datatype()); +@@ -99,7 +99,7 @@ gatherv(const communicator& comm, const std::vector& in_values, + T* out_values, const std::vector& sizes, const std::vector& displs, + int root) + { +- ::boost::mpi::gatherv(comm, &in_values[0], in_values.size(), out_values, sizes, displs, root); ++ ::boost::mpi::gatherv(comm, detail::c_data(in_values), in_values.size(), out_values, sizes, displs, root); + } + + template +@@ -113,7 +113,7 @@ template + void gatherv(const communicator& comm, const std::vector& in_values, int root) + { + BOOST_ASSERT(comm.rank() != root); +- detail::gatherv_impl(comm, &in_values[0], in_values.size(), root, is_mpi_datatype()); ++ detail::gatherv_impl(comm, detail::c_data(in_values), in_values.size(), root, is_mpi_datatype()); + } + + /////////////////////// +@@ -139,7 +139,7 @@ void + gatherv(const communicator& comm, const std::vector& in_values, + T* out_values, const std::vector& sizes, int root) + { +- ::boost::mpi::gatherv(comm, &in_values[0], in_values.size(), out_values, sizes, root); ++ ::boost::mpi::gatherv(comm, detail::c_data(in_values), in_values.size(), out_values, sizes, root); + } + + } } // end namespace boost::mpi +diff --git a/include/boost/mpi/collectives/reduce.hpp b/include/boost/mpi/collectives/reduce.hpp +index 3248e324..76a28212 100644 +--- a/boost/mpi/collectives/reduce.hpp ++++ b/boost/mpi/collectives/reduce.hpp +@@ -335,7 +335,7 @@ void + reduce(const communicator & comm, std::vector const & in_values, Op op, + int root) + { +- reduce(comm, &in_values.front(), in_values.size(), op, root); ++ reduce(comm, detail::c_data(in_values), in_values.size(), op, root); + } + + template +@@ -344,7 +344,7 @@ reduce(const communicator & comm, std::vector const & in_values, + std::vector & out_values, Op op, int root) + { + if (root == comm.rank()) out_values.resize(in_values.size()); +- reduce(comm, &in_values.front(), in_values.size(), &out_values.front(), op, ++ reduce(comm, detail::c_data(in_values), in_values.size(), detail::c_data(out_values), op, + root); + } + +diff --git a/include/boost/mpi/collectives/scatter.hpp b/include/boost/mpi/collectives/scatter.hpp +index ae3adcbc..f967060a 100644 +--- a/boost/mpi/collectives/scatter.hpp ++++ b/boost/mpi/collectives/scatter.hpp +@@ -188,7 +188,7 @@ void + scatter(const communicator& comm, const std::vector& in_values, + T* out_values, int n, int root) + { +- ::boost::mpi::scatter(comm, &in_values[0], out_values, n, root); ++ ::boost::mpi::scatter(comm, detail::c_data(in_values), out_values, n, root); + } + + template +diff --git a/include/boost/mpi/collectives/scatterv.hpp b/include/boost/mpi/collectives/scatterv.hpp +index f53f704b..7f2fd129 100644 +--- a/boost/mpi/collectives/scatterv.hpp ++++ b/boost/mpi/collectives/scatterv.hpp +@@ -142,7 +142,7 @@ void + scatterv(const communicator& comm, const std::vector& in_values, + const std::vector& sizes, T* out_values, int root) + { +- ::boost::mpi::scatterv(comm, &in_values[0], sizes, out_values, root); ++ ::boost::mpi::scatterv(comm, detail::c_data(in_values), sizes, out_values, root); + } + + template +@@ -159,7 +159,7 @@ void + scatterv(const communicator& comm, const std::vector& in_values, + T* out_values, int out_size, int root) + { +- ::boost::mpi::scatterv(comm, &in_values[0], out_values, out_size, root); ++ ::boost::mpi::scatterv(comm, detail::c_data(in_values), out_values, out_size, root); + } + + } } // end namespace boost::mpi +diff --git a/include/boost/mpi/detail/binary_buffer_iprimitive.hpp b/include/boost/mpi/detail/binary_buffer_iprimitive.hpp +index 388cd44c..087d8529 100644 +--- a/boost/mpi/detail/binary_buffer_iprimitive.hpp ++++ b/boost/mpi/detail/binary_buffer_iprimitive.hpp +@@ -41,12 +41,12 @@ class BOOST_MPI_DECL binary_buffer_iprimitive + + void* address () + { +- return &buffer_.front(); ++ return detail::c_data(buffer_); + } + + void const* address () const + { +- return &buffer_.front(); ++ return detail::c_data(buffer_); + } + + const std::size_t& size() const +diff --git a/include/boost/mpi/detail/binary_buffer_oprimitive.hpp b/include/boost/mpi/detail/binary_buffer_oprimitive.hpp +index 313097b7..fa0645d7 100644 +--- a/boost/mpi/detail/binary_buffer_oprimitive.hpp ++++ b/boost/mpi/detail/binary_buffer_oprimitive.hpp +@@ -40,7 +40,7 @@ class BOOST_MPI_DECL binary_buffer_oprimitive + + void const * address() const + { +- return &buffer_.front(); ++ return detail::c_data(buffer_); + } + + const std::size_t& size() const +diff --git a/include/boost/mpi/detail/mpi_datatype_primitive.hpp b/include/boost/mpi/detail/mpi_datatype_primitive.hpp +index fc05d786..5b3cdf54 100644 +--- a/boost/mpi/detail/mpi_datatype_primitive.hpp ++++ b/boost/mpi/detail/mpi_datatype_primitive.hpp +@@ -133,7 +133,7 @@ class mpi_datatype_primitive + template + static T* get_data(std::vector& v) + { +- return v.empty() ? 0 : &(v[0]); ++ return detail::c_data(v); + } + + std::vector addresses; +diff --git a/include/boost/mpi/detail/packed_iprimitive.hpp b/include/boost/mpi/detail/packed_iprimitive.hpp +index 85a4010f..e402a20a 100644 +--- a/boost/mpi/detail/packed_iprimitive.hpp ++++ b/boost/mpi/detail/packed_iprimitive.hpp +@@ -39,12 +39,12 @@ class BOOST_MPI_DECL packed_iprimitive + + void* address () + { +- return &buffer_[0]; ++ return detail::c_data(buffer_); + } + + void const* address () const + { +- return &buffer_[0]; ++ return detail::c_data(buffer_); + } + + const std::size_t& size() const +diff --git a/include/boost/mpi/detail/packed_oprimitive.hpp b/include/boost/mpi/detail/packed_oprimitive.hpp +index 4ca8e072..c9ce44dc 100644 +--- a/boost/mpi/detail/packed_oprimitive.hpp ++++ b/boost/mpi/detail/packed_oprimitive.hpp +@@ -38,7 +38,7 @@ class BOOST_MPI_DECL packed_oprimitive + + void const * address() const + { +- return &buffer_[0]; ++ return detail::c_data(buffer_); + } + + const std::size_t& size() const +@@ -114,7 +114,7 @@ class BOOST_MPI_DECL packed_oprimitive + + static buffer_type::value_type* get_data(buffer_type& b) + { +- return b.empty() ? 0 : &(b[0]); ++ return detail::c_data(b); + } + + buffer_type& buffer_; +diff --git a/include/boost/mpi/detail/request_handlers.hpp b/include/boost/mpi/detail/request_handlers.hpp +index 50a22ec3..8283918b 100644 +--- a/boost/mpi/detail/request_handlers.hpp ++++ b/boost/mpi/detail/request_handlers.hpp +@@ -456,7 +456,7 @@ class request::legacy_dynamic_primitive_array_handler + // Resize our buffer and get ready to receive its data + this->extra::m_values.resize(this->extra::m_count); + BOOST_MPI_CHECK_RESULT(MPI_Irecv, +- (&(this->extra::m_values[0]), this->extra::m_values.size(), get_mpi_datatype(), ++ (detail::c_data(this->extra::m_values), this->extra::m_values.size(), get_mpi_datatype(), + stat.source(), stat.tag(), + MPI_Comm(m_comm), m_requests + 1)); + } +@@ -478,7 +478,7 @@ class request::legacy_dynamic_primitive_array_handler + // Resize our buffer and get ready to receive its data + this->extra::m_values.resize(this->extra::m_count); + BOOST_MPI_CHECK_RESULT(MPI_Irecv, +- (&(this->extra::m_values[0]), this->extra::m_values.size(), get_mpi_datatype(), ++ (detail::c_data(this->extra::m_values), this->extra::m_values.size(), get_mpi_datatype(), + stat.source(), stat.tag(), + MPI_Comm(m_comm), m_requests + 1)); + } else +diff --git a/include/boost/mpi/graph_communicator.hpp b/include/boost/mpi/graph_communicator.hpp +index d49703eb..5bd1cf28 100644 +--- a/boost/mpi/graph_communicator.hpp ++++ b/boost/mpi/graph_communicator.hpp +@@ -235,8 +235,8 @@ graph_communicator::setup_graph(const communicator& comm, const Graph& graph, + BOOST_MPI_CHECK_RESULT(MPI_Graph_create, + ((MPI_Comm)comm, + nvertices, +- &indices[0], +- edges.empty()? (int*)0 : &edges[0], ++ detail::c_data(indices), ++ detail::c_data(edges), + reorder, + &newcomm)); + this->comm_ptr.reset(new MPI_Comm(newcomm), comm_free()); +diff --git a/include/boost/mpi/group.hpp b/include/boost/mpi/group.hpp +index 103b35a1..7be24df1 100644 +--- a/boost/mpi/group.hpp ++++ b/boost/mpi/group.hpp +@@ -16,6 +16,7 @@ + #define BOOST_MPI_GROUP_HPP + + #include ++#include + #include + #include + #include +@@ -272,9 +273,9 @@ group::translate_ranks(InputIterator first, InputIterator last, + BOOST_MPI_CHECK_RESULT(MPI_Group_translate_ranks, + ((MPI_Group)*this, + in_array.size(), +- &in_array[0], ++ detail::c_data(in_array), + (MPI_Group)to_group, +- &out_array[0])); ++ detail::c_data(out_array))); + + for (std::vector::size_type i = 0, n = out_array.size(); i < n; ++i) + *out++ = out_array[i]; +@@ -300,7 +301,7 @@ group group::include(InputIterator first, InputIterator last) + std::vector ranks(first, last); + MPI_Group result; + BOOST_MPI_CHECK_RESULT(MPI_Group_incl, +- ((MPI_Group)*this, ranks.size(), &ranks[0], &result)); ++ ((MPI_Group)*this, ranks.size(), detail::c_data(ranks), &result)); + return group(result, /*adopt=*/true); + } + +@@ -322,7 +323,7 @@ group group::exclude(InputIterator first, InputIterator last) + std::vector ranks(first, last); + MPI_Group result; + BOOST_MPI_CHECK_RESULT(MPI_Group_excl, +- ((MPI_Group)*this, ranks.size(), &ranks[0], &result)); ++ ((MPI_Group)*this, ranks.size(), detail::c_data(ranks), &result)); + return group(result, /*adopt=*/true); + } + +diff --git a/include/boost/mpi/nonblocking.hpp b/include/boost/mpi/nonblocking.hpp +index fe944be8..5ffd00f7 100644 +--- a/boost/mpi/nonblocking.hpp ++++ b/boost/mpi/nonblocking.hpp +@@ -91,7 +91,7 @@ wait_any(ForwardIterator first, ForwardIterator last) + int index; + status stat; + BOOST_MPI_CHECK_RESULT(MPI_Waitany, +- (n, &requests[0], &index, &stat.m_status)); ++ (n, detail::c_data(requests), &index, &stat.m_status)); + + // We don't have a notion of empty requests or status objects, + // so this is an error. +@@ -222,8 +222,8 @@ wait_all(ForwardIterator first, ForwardIterator last, OutputIterator out) + // Let MPI wait until all of these operations completes. + std::vector stats(num_outstanding_requests); + BOOST_MPI_CHECK_RESULT(MPI_Waitall, +- (num_outstanding_requests, &requests[0], +- &stats[0])); ++ (num_outstanding_requests, detail::c_data(requests), ++ detail::c_data(stats))); + + for (std::vector::iterator i = stats.begin(); + i != stats.end(); ++i, ++out) { +@@ -289,7 +289,7 @@ wait_all(ForwardIterator first, ForwardIterator last) + + // Let MPI wait until all of these operations completes. + BOOST_MPI_CHECK_RESULT(MPI_Waitall, +- (num_outstanding_requests, &requests[0], ++ (num_outstanding_requests, detail::c_data(requests), + MPI_STATUSES_IGNORE)); + + // Signal completion +@@ -346,7 +346,7 @@ test_all(ForwardIterator first, ForwardIterator last, OutputIterator out) + int flag = 0; + int n = requests.size(); + std::vector stats(n); +- BOOST_MPI_CHECK_RESULT(MPI_Testall, (n, &requests[0], &flag, &stats[0])); ++ BOOST_MPI_CHECK_RESULT(MPI_Testall, (n, detail::c_data(requests), &flag, detail::c_data(stats))); + if (flag) { + for (int i = 0; i < n; ++i, ++out) { + status stat; +@@ -379,7 +379,7 @@ test_all(ForwardIterator first, ForwardIterator last) + int flag = 0; + int n = requests.size(); + BOOST_MPI_CHECK_RESULT(MPI_Testall, +- (n, &requests[0], &flag, MPI_STATUSES_IGNORE)); ++ (n, detail::c_data(requests), &flag, MPI_STATUSES_IGNORE)); + return flag != 0; + } + +@@ -483,8 +483,8 @@ wait_some(BidirectionalIterator first, BidirectionalIterator last, + // Let MPI wait until some of these operations complete. + int num_completed; + BOOST_MPI_CHECK_RESULT(MPI_Waitsome, +- (n, &requests[0], &num_completed, &indices[0], +- &stats[0])); ++ (n, detail::c_data(requests), &num_completed, detail::c_data(indices), ++ detail::c_data(stats))); + + // Translate the index-based result of MPI_Waitsome into a + // partitioning on the requests. +@@ -591,7 +591,7 @@ wait_some(BidirectionalIterator first, BidirectionalIterator last) + // Let MPI wait until some of these operations complete. + int num_completed; + BOOST_MPI_CHECK_RESULT(MPI_Waitsome, +- (n, &requests[0], &num_completed, &indices[0], ++ (n, detail::c_data(requests), &num_completed, detail::c_data(indices), + MPI_STATUSES_IGNORE)); + + // Translate the index-based result of MPI_Waitsome into a +diff --git a/src/cartesian_communicator.cpp b/src/cartesian_communicator.cpp +index a46f0bc2..3b15eb0d 100644 +--- a/libs/mpi/src/cartesian_communicator.cpp ++++ b/libs/mpi/src/cartesian_communicator.cpp +@@ -10,12 +10,13 @@ + #include + + #include ++#include + + namespace boost { namespace mpi { + + namespace { + template +- T* c_data(std::vector& v) { return &(v[0]); } ++ T* c_data(std::vector& v) { return c_data(v); } + } + + std::ostream& + +From 5a8e9efe89ba00e32713fd777a82bc8f30a0900d Mon Sep 17 00:00:00 2001 +From: Florian Weik +Date: Wed, 10 Jun 2020 11:04:23 +0200 +Subject: [PATCH 2/4] added test with empty vector + +--- + test/block_nonblock_test.cpp | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/test/block_nonblock_test.cpp b/test/block_nonblock_test.cpp +index 3088b655..2ec02256 100644 +--- a/libs/mpi/test/block_nonblock_test.cpp ++++ b/libs/mpi/test/block_nonblock_test.cpp +@@ -82,7 +82,12 @@ BOOST_AUTO_TEST_CASE(non_blocking) + fmt << "S" << i; + strings[i] = fmt.str(); + } +- ++ ++ std::vector empty; ++ ++ BOOST_CHECK(test(world, empty, false, true)); ++ BOOST_CHECK(test(world, empty, false, false)); ++ + BOOST_CHECK(test(world, integers, true, true)); + BOOST_CHECK(test(world, integers, true, false)); + BOOST_CHECK(test(world, strings, true, true)); + +From 5e8edd184cb0d5af842392eb58dd797a23241615 Mon Sep 17 00:00:00 2001 +From: Florian Weik +Date: Thu, 11 Jun 2020 14:59:45 +0200 +Subject: [PATCH 4/4] fixed cartesian communicator + +--- + src/cartesian_communicator.cpp | 17 ++++++----------- + 1 file changed, 6 insertions(+), 11 deletions(-) + +diff --git a/src/cartesian_communicator.cpp b/src/cartesian_communicator.cpp +index 3b15eb0d..946d41fd 100644 +--- a/libs/mpi/src/cartesian_communicator.cpp ++++ b/libs/mpi/src/cartesian_communicator.cpp +@@ -14,11 +14,6 @@ + + namespace boost { namespace mpi { + +-namespace { +- template +- T* c_data(std::vector& v) { return c_data(v); } +-} +- + std::ostream& + operator<<(std::ostream& out, cartesian_dimension const& d) { + out << '(' << d.size << ','; +@@ -64,7 +59,7 @@ cartesian_communicator::cartesian_communicator(const communicator& comm, + MPI_Comm newcomm; + BOOST_MPI_CHECK_RESULT(MPI_Cart_create, + ((MPI_Comm)comm, dims.size(), +- c_data(dims), c_data(periodic), ++ detail::c_data(dims), detail::c_data(periodic), + int(reorder), &newcomm)); + if(newcomm != MPI_COMM_NULL) { + comm_ptr.reset(new MPI_Comm(newcomm), comm_free()); +@@ -86,7 +81,7 @@ cartesian_communicator::cartesian_communicator(const cartesian_communicator& com + + MPI_Comm newcomm; + BOOST_MPI_CHECK_RESULT(MPI_Cart_sub, +- ((MPI_Comm)comm, c_data(bitset), &newcomm)); ++ ((MPI_Comm)comm, detail::c_data(bitset), &newcomm)); + if(newcomm != MPI_COMM_NULL) { + comm_ptr.reset(new MPI_Comm(newcomm), comm_free()); + } +@@ -105,7 +100,7 @@ cartesian_communicator::rank(const std::vector& coords ) const { + int r = -1; + assert(int(coords.size()) == ndims()); + BOOST_MPI_CHECK_RESULT(MPI_Cart_rank, +- (MPI_Comm(*this), c_data(const_cast&>(coords)), ++ (MPI_Comm(*this), detail::c_data(const_cast&>(coords)), + &r)); + return r; + } +@@ -123,7 +118,7 @@ std::vector + cartesian_communicator::coordinates(int rk) const { + std::vector cbuf(ndims()); + BOOST_MPI_CHECK_RESULT(MPI_Cart_coords, +- (MPI_Comm(*this), rk, cbuf.size(), c_data(cbuf) )); ++ (MPI_Comm(*this), rk, cbuf.size(), detail::c_data(cbuf) )); + return cbuf; + } + +@@ -136,7 +131,7 @@ cartesian_communicator::topology( cartesian_topology& topo, + std::vector cdims(ndims); + std::vector cperiods(ndims); + BOOST_MPI_CHECK_RESULT(MPI_Cart_get, +- (MPI_Comm(*this), ndims, c_data(cdims), c_data(cperiods), c_data(coords))); ++ (MPI_Comm(*this), ndims, detail::c_data(cdims), detail::c_data(cperiods), detail::c_data(coords))); + cartesian_topology res(cdims.begin(), cperiods.begin(), ndims); + topo.swap(res); + } +@@ -173,7 +168,7 @@ cartesian_dimensions(int sz, std::vector& dims) { + int leftover = sz % min; + + BOOST_MPI_CHECK_RESULT(MPI_Dims_create, +- (sz-leftover, dims.size(), c_data(dims))); ++ (sz-leftover, dims.size(), detail::c_data(dims))); + return dims; + } + diff --git a/boost-1.73.0-b2-build-flags.patch b/boost-1.73.0-b2-build-flags.patch new file mode 100644 index 0000000..e2e2037 --- /dev/null +++ b/boost-1.73.0-b2-build-flags.patch @@ -0,0 +1,11 @@ +--- boost_1_73_0/tools/build/src/engine/build.sh~ 2020-04-25 17:09:03.159419899 +0100 ++++ boost_1_73_0/tools/build/src/engine/build.sh 2020-04-25 17:11:35.085907844 +0100 +@@ -233,7 +233,7 @@ + + *) + B2_CXX="${CXX} -x c++ -std=c++11" +- B2_CXXFLAGS_RELEASE="-O2 -s" ++ B2_CXXFLAGS_RELEASE="${RPM_OPT_FLAGS} ${RPM_LD_FLAGS}" + B2_CXXFLAGS_DEBUG="-O0 -g" + esac + ;; diff --git a/boost-1.73.0-beast-coroutines.patch b/boost-1.73.0-beast-coroutines.patch new file mode 100644 index 0000000..a95b5f3 --- /dev/null +++ b/boost-1.73.0-beast-coroutines.patch @@ -0,0 +1,1466 @@ +diff -aruN a/boost/beast/core/detail/impl/read.hpp b/boost/beast/core/detail/impl/read.hpp +--- a/boost/beast/core/detail/impl/read.hpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/boost/beast/core/detail/impl/read.hpp 2020-05-02 13:50:11.141761700 -0400 +@@ -214,7 +214,7 @@ + class AsyncReadStream, + class DynamicBuffer, + class CompletionCondition, +- class ReadHandler, ++ BOOST_BEAST_ASYNC_TPARAM2 ReadHandler, + class> + BOOST_BEAST_ASYNC_RESULT2(ReadHandler) + async_read( +diff -aruN a/boost/beast/core/detail/is_invocable.hpp b/boost/beast/core/detail/is_invocable.hpp +--- a/boost/beast/core/detail/is_invocable.hpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/boost/beast/core/detail/is_invocable.hpp 2020-05-02 13:50:11.141761700 -0400 +@@ -10,6 +10,8 @@ + #ifndef BOOST_BEAST_DETAIL_IS_INVOCABLE_HPP + #define BOOST_BEAST_DETAIL_IS_INVOCABLE_HPP + ++#include ++#include + #include + #include + +@@ -51,6 +53,26 @@ + }; + /** @} */ + ++template ++struct is_completion_token_for : std::false_type ++{ ++}; ++ ++struct any_initiation ++{ ++ template ++ void operator()(AnyArgs&&...); ++}; ++ ++template ++struct is_completion_token_for< ++ CompletionToken, R(Args...), boost::void_t( ++ any_initiation(), std::declval()) ++ )>> : std::true_type ++{ ++}; ++ + } // detail + } // beast + } // boost +diff -aruN a/boost/beast/core/detail/read.hpp b/boost/beast/core/detail/read.hpp +--- a/boost/beast/core/detail/read.hpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/boost/beast/core/detail/read.hpp 2020-05-02 13:50:11.142761711 -0400 +@@ -219,7 +219,7 @@ + class AsyncReadStream, + class DynamicBuffer, + class CompletionCondition, +- class ReadHandler ++ BOOST_BEAST_ASYNC_TPARAM2 ReadHandler + #if ! BOOST_BEAST_DOXYGEN + , class = typename std::enable_if< + is_async_read_stream::value && +diff -aruN a/boost/beast/core/detect_ssl.hpp b/boost/beast/core/detect_ssl.hpp +--- a/boost/beast/core/detect_ssl.hpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/boost/beast/core/detect_ssl.hpp 2020-05-02 13:50:11.143761722 -0400 +@@ -374,13 +374,13 @@ + void operator()( + DetectHandler&& h, + AsyncReadStream* s, // references are passed as pointers +- DynamicBuffer& b) ++ DynamicBuffer* b) + { + detect_ssl_op< + typename std::decay::type, + AsyncReadStream, + DynamicBuffer>( +- std::forward(h), *s, b); ++ std::forward(h), *s, *b); + } + }; + +@@ -439,7 +439,7 @@ + detail::run_detect_ssl_op{}, + token, + &stream, // pass the reference by pointer +- buffer); ++ &buffer); + } + + //] +diff -aruN a/boost/beast/core/impl/basic_stream.hpp b/boost/beast/core/impl/basic_stream.hpp +--- a/boost/beast/core/impl/basic_stream.hpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/boost/beast/core/impl/basic_stream.hpp 2020-05-02 13:50:11.144761733 -0400 +@@ -776,7 +776,7 @@ + //------------------------------------------------------------------------------ + + template +-template ++template + BOOST_BEAST_ASYNC_RESULT1(ConnectHandler) + basic_stream:: + async_connect( +@@ -795,7 +795,7 @@ + template + template< + class EndpointSequence, +- class RangeConnectHandler, ++ BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, typename Protocol::endpoint)) RangeConnectHandler, + class> + BOOST_ASIO_INITFN_RESULT_TYPE(RangeConnectHandler,void(error_code, typename Protocol::endpoint)) + basic_stream:: +@@ -817,7 +817,7 @@ + template< + class EndpointSequence, + class ConnectCondition, +- class RangeConnectHandler, ++ BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, typename Protocol::endpoint)) RangeConnectHandler, + class> + BOOST_ASIO_INITFN_RESULT_TYPE(RangeConnectHandler,void (error_code, typename Protocol::endpoint)) + basic_stream:: +@@ -839,7 +839,7 @@ + template + template< + class Iterator, +- class IteratorConnectHandler> ++ BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, Iterator)) IteratorConnectHandler> + BOOST_ASIO_INITFN_RESULT_TYPE(IteratorConnectHandler,void (error_code, Iterator)) + basic_stream:: + async_connect( +@@ -860,7 +860,7 @@ + template< + class Iterator, + class ConnectCondition, +- class IteratorConnectHandler> ++ BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, Iterator)) IteratorConnectHandler> + BOOST_ASIO_INITFN_RESULT_TYPE(IteratorConnectHandler,void (error_code, Iterator)) + basic_stream:: + async_connect( +@@ -881,7 +881,7 @@ + //------------------------------------------------------------------------------ + + template +-template ++template + BOOST_BEAST_ASYNC_RESULT2(ReadHandler) + basic_stream:: + async_read_some( +@@ -901,7 +901,7 @@ + } + + template +-template ++template + BOOST_BEAST_ASYNC_RESULT2(WriteHandler) + basic_stream:: + async_write_some( +diff -aruN a/boost/beast/core/impl/buffered_read_stream.hpp b/boost/beast/core/impl/buffered_read_stream.hpp +--- a/boost/beast/core/impl/buffered_read_stream.hpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/boost/beast/core/impl/buffered_read_stream.hpp 2020-05-02 13:50:11.144761733 -0400 +@@ -110,7 +110,7 @@ + operator()( + ReadHandler&& h, + buffered_read_stream* s, +- Buffers const& b) ++ Buffers const* b) + { + // If you get an error on the following line it means + // that your handler does not meet the documented type +@@ -124,7 +124,7 @@ + read_op< + Buffers, + typename std::decay::type>( +- std::forward(h), *s, b); ++ std::forward(h), *s, *b); + } + }; + +@@ -141,7 +141,7 @@ + } + + template +-template ++template + BOOST_BEAST_ASYNC_RESULT2(WriteHandler) + buffered_read_stream:: + async_write_some( +@@ -153,7 +153,7 @@ + static_assert(net::is_const_buffer_sequence< + ConstBufferSequence>::value, + "ConstBufferSequence type requirements not met"); +- static_assert(detail::is_invocable::value, + "WriteHandler type requirements not met"); + return next_layer_.async_write_some(buffers, +@@ -212,7 +212,7 @@ + } + + template +-template ++template + BOOST_BEAST_ASYNC_RESULT2(ReadHandler) + buffered_read_stream:: + async_read_some( +@@ -233,7 +233,7 @@ + typename ops::run_read_op{}, + handler, + this, +- buffers); ++ &buffers); + } + + } // beast +diff -aruN a/boost/beast/core/impl/flat_stream.hpp b/boost/beast/core/impl/flat_stream.hpp +--- a/boost/beast/core/impl/flat_stream.hpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/boost/beast/core/impl/flat_stream.hpp 2020-05-02 13:50:11.145761743 -0400 +@@ -144,7 +144,7 @@ + template + template< + class MutableBufferSequence, +- class ReadHandler> ++ BOOST_BEAST_ASYNC_TPARAM2 ReadHandler> + BOOST_BEAST_ASYNC_RESULT2(ReadHandler) + flat_stream:: + async_read_some( +@@ -225,7 +225,7 @@ + template + template< + class ConstBufferSequence, +- class WriteHandler> ++ BOOST_BEAST_ASYNC_TPARAM2 WriteHandler> + BOOST_BEAST_ASYNC_RESULT2(WriteHandler) + flat_stream:: + async_write_some( +diff -aruN a/boost/beast/_experimental/http/impl/icy_stream.hpp b/boost/beast/_experimental/http/impl/icy_stream.hpp +--- a/boost/beast/_experimental/http/impl/icy_stream.hpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/boost/beast/_experimental/http/impl/icy_stream.hpp 2020-05-02 13:50:11.146761754 -0400 +@@ -259,7 +259,7 @@ + template + template< + class MutableBufferSequence, +- class ReadHandler> ++ BOOST_BEAST_ASYNC_TPARAM2 ReadHandler> + BOOST_BEAST_ASYNC_RESULT2(ReadHandler) + icy_stream:: + async_read_some( +@@ -311,7 +311,7 @@ + template + template< + class MutableBufferSequence, +- class WriteHandler> ++ BOOST_BEAST_ASYNC_TPARAM2 WriteHandler> + BOOST_BEAST_ASYNC_RESULT2(WriteHandler) + icy_stream:: + async_write_some( +diff -aruN a/boost/beast/_experimental/test/impl/stream.hpp b/boost/beast/_experimental/test/impl/stream.hpp +--- a/boost/beast/_experimental/test/impl/stream.hpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/boost/beast/_experimental/test/impl/stream.hpp 2020-05-02 13:50:11.147761765 -0400 +@@ -306,7 +306,7 @@ + return 0; + } + +-template ++template + BOOST_BEAST_ASYNC_RESULT2(ReadHandler) + stream:: + async_read_some( +@@ -386,7 +386,7 @@ + return n; + } + +-template ++template + BOOST_BEAST_ASYNC_RESULT2(WriteHandler) + stream:: + async_write_some( +diff -aruN a/boost/beast/http/field.hpp b/boost/beast/http/field.hpp +--- a/boost/beast/http/field.hpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/boost/beast/http/field.hpp 2020-05-02 13:50:11.149761786 -0400 +@@ -396,12 +396,9 @@ + string_to_field(string_view s); + + /// Write the text for a field name to an output stream. +-inline ++BOOST_BEAST_DECL + std::ostream& +-operator<<(std::ostream& os, field f) +-{ +- return os << to_string(f); +-} ++operator<<(std::ostream& os, field f); + + } // http + } // beast +diff -aruN a/boost/beast/http/impl/field.ipp b/boost/beast/http/impl/field.ipp +--- a/boost/beast/http/impl/field.ipp 2020-04-22 09:34:50.000000000 -0400 ++++ b/boost/beast/http/impl/field.ipp 2020-05-02 13:50:11.150761798 -0400 +@@ -11,10 +11,12 @@ + #define BOOST_BEAST_HTTP_IMPL_FIELD_IPP + + #include ++#include + #include + #include + #include +-#include ++#include ++ + + namespace boost { + namespace beast { +@@ -565,6 +567,12 @@ + return detail::get_field_table().string_to_field(s); + } + ++std::ostream& ++operator<<(std::ostream& os, field f) ++{ ++ return os << to_string(f); ++} ++ + } // http + } // beast + } // boost +diff -aruN a/boost/beast/http/impl/file_body_win32.hpp b/boost/beast/http/impl/file_body_win32.hpp +--- a/boost/beast/http/impl/file_body_win32.hpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/boost/beast/http/impl/file_body_win32.hpp 2020-05-02 13:50:11.150761798 -0400 +@@ -597,7 +597,7 @@ + template< + class Protocol, class Executor, + bool isRequest, class Fields, +- class WriteHandler> ++ BOOST_BEAST_ASYNC_TPARAM2 WriteHandler> + BOOST_BEAST_ASYNC_RESULT2(WriteHandler) + async_write_some( + net::basic_stream_socket< +diff -aruN a/boost/beast/http/impl/read.hpp b/boost/beast/http/impl/read.hpp +--- a/boost/beast/http/impl/read.hpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/boost/beast/http/impl/read.hpp 2020-05-02 13:50:11.150761798 -0400 +@@ -304,7 +304,7 @@ + class AsyncReadStream, + class DynamicBuffer, + bool isRequest, +- class ReadHandler> ++ BOOST_BEAST_ASYNC_TPARAM2 ReadHandler> + BOOST_BEAST_ASYNC_RESULT2(ReadHandler) + async_read_some( + AsyncReadStream& stream, +@@ -373,7 +373,7 @@ + class AsyncReadStream, + class DynamicBuffer, + bool isRequest, +- class ReadHandler> ++ BOOST_BEAST_ASYNC_TPARAM2 ReadHandler> + BOOST_BEAST_ASYNC_RESULT2(ReadHandler) + async_read_header( + AsyncReadStream& stream, +@@ -443,7 +443,7 @@ + class AsyncReadStream, + class DynamicBuffer, + bool isRequest, +- class ReadHandler> ++ BOOST_BEAST_ASYNC_TPARAM2 ReadHandler> + BOOST_BEAST_ASYNC_RESULT2(ReadHandler) + async_read( + AsyncReadStream& stream, +@@ -531,7 +531,7 @@ + class AsyncReadStream, + class DynamicBuffer, + bool isRequest, class Body, class Allocator, +- class ReadHandler> ++ BOOST_BEAST_ASYNC_TPARAM2 ReadHandler> + BOOST_BEAST_ASYNC_RESULT2(ReadHandler) + async_read( + AsyncReadStream& stream, +diff -aruN a/boost/beast/http/impl/write.hpp b/boost/beast/http/impl/write.hpp +--- a/boost/beast/http/impl/write.hpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/boost/beast/http/impl/write.hpp 2020-05-02 13:50:11.150761798 -0400 +@@ -463,7 +463,7 @@ + template< + class AsyncWriteStream, + bool isRequest, class Body, class Fields, +- class WriteHandler> ++ BOOST_BEAST_ASYNC_TPARAM2 WriteHandler> + BOOST_BEAST_ASYNC_RESULT2(WriteHandler) + async_write_some_impl( + AsyncWriteStream& stream, +@@ -526,7 +526,7 @@ + template< + class AsyncWriteStream, + bool isRequest, class Body, class Fields, +- class WriteHandler> ++ BOOST_BEAST_ASYNC_TPARAM2 WriteHandler> + BOOST_BEAST_ASYNC_RESULT2(WriteHandler) + async_write_some( + AsyncWriteStream& stream, +@@ -608,7 +608,7 @@ + template< + class AsyncWriteStream, + bool isRequest, class Body, class Fields, +- class WriteHandler> ++ BOOST_BEAST_ASYNC_TPARAM2 WriteHandler> + BOOST_BEAST_ASYNC_RESULT2(WriteHandler) + async_write_header( + AsyncWriteStream& stream, +@@ -681,7 +681,7 @@ + template< + class AsyncWriteStream, + bool isRequest, class Body, class Fields, +- class WriteHandler> ++ BOOST_BEAST_ASYNC_TPARAM2 WriteHandler> + BOOST_BEAST_ASYNC_RESULT2(WriteHandler) + async_write( + AsyncWriteStream& stream, +@@ -801,7 +801,7 @@ + template< + class AsyncWriteStream, + bool isRequest, class Body, class Fields, +- class WriteHandler> ++ BOOST_BEAST_ASYNC_TPARAM2 WriteHandler> + BOOST_BEAST_ASYNC_RESULT2(WriteHandler) + async_write( + AsyncWriteStream& stream, +@@ -830,7 +830,7 @@ + template< + class AsyncWriteStream, + bool isRequest, class Body, class Fields, +- class WriteHandler> ++ BOOST_BEAST_ASYNC_TPARAM2 WriteHandler> + BOOST_BEAST_ASYNC_RESULT2(WriteHandler) + async_write( + AsyncWriteStream& stream, +diff -aruN a/boost/beast/http/span_body.hpp b/boost/beast/http/span_body.hpp +--- a/boost/beast/http/span_body.hpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/boost/beast/http/span_body.hpp 2020-05-02 13:50:11.151761808 -0400 +@@ -36,8 +36,10 @@ + struct span_body + { + private: +- static_assert(std::is_pod::value, +- "POD requirements not met"); ++ static_assert( ++ std::is_trivial::value && ++ std::is_standard_layout::value, ++ "POD requirements not met"); + + public: + /** The type of container used for the body +diff -aruN a/boost/beast/ssl/ssl_stream.hpp b/boost/beast/ssl/ssl_stream.hpp +--- a/boost/beast/ssl/ssl_stream.hpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/boost/beast/ssl/ssl_stream.hpp 2020-05-02 13:50:11.151761808 -0400 +@@ -555,7 +555,7 @@ + need to ensure that all data is written before the asynchronous operation + completes. + */ +- template ++ template + BOOST_ASIO_INITFN_RESULT_TYPE(WriteHandler, void(boost::system::error_code, std::size_t)) + async_write_some(ConstBufferSequence const& buffers, + BOOST_ASIO_MOVE_ARG(WriteHandler) handler) +@@ -636,7 +636,7 @@ + if you need to ensure that the requested amount of data is read before + the asynchronous operation completes. + */ +- template ++ template + BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler, void(boost::system::error_code, std::size_t)) + async_read_some(MutableBufferSequence const& buffers, + BOOST_ASIO_MOVE_ARG(ReadHandler) handler) +diff -aruN a/boost/beast/version.hpp b/boost/beast/version.hpp +--- a/boost/beast/version.hpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/boost/beast/version.hpp 2020-05-02 13:50:11.151761808 -0400 +@@ -20,7 +20,7 @@ + This is a simple integer that is incremented by one every + time a set of code changes is merged to the develop branch. + */ +-#define BOOST_BEAST_VERSION 290 ++#define BOOST_BEAST_VERSION 292 + + #define BOOST_BEAST_VERSION_STRING "Boost.Beast/" BOOST_STRINGIZE(BOOST_BEAST_VERSION) + +diff -aruN a/boost/beast/websocket/impl/accept.hpp b/boost/beast/websocket/impl/accept.hpp +--- a/boost/beast/websocket/impl/accept.hpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/boost/beast/websocket/impl/accept.hpp 2020-05-02 13:50:11.153761830 -0400 +@@ -542,7 +542,7 @@ + + template + template< +- class AcceptHandler> ++ BOOST_BEAST_ASYNC_TPARAM1 AcceptHandler> + BOOST_BEAST_ASYNC_RESULT1(AcceptHandler) + stream:: + async_accept( +@@ -564,7 +564,7 @@ + template + template< + class ResponseDecorator, +- class AcceptHandler> ++ BOOST_BEAST_ASYNC_TPARAM1 AcceptHandler> + BOOST_BEAST_ASYNC_RESULT1(AcceptHandler) + stream:: + async_accept_ex( +@@ -590,7 +590,7 @@ + template + template< + class ConstBufferSequence, +- class AcceptHandler> ++ BOOST_BEAST_ASYNC_TPARAM1 AcceptHandler> + BOOST_BEAST_ASYNC_RESULT1(AcceptHandler) + stream:: + async_accept( +@@ -621,7 +621,7 @@ + template< + class ConstBufferSequence, + class ResponseDecorator, +- class AcceptHandler> ++ BOOST_BEAST_ASYNC_TPARAM1 AcceptHandler> + BOOST_BEAST_ASYNC_RESULT1(AcceptHandler) + stream:: + async_accept_ex( +@@ -654,7 +654,7 @@ + template + template< + class Body, class Allocator, +- class AcceptHandler> ++ BOOST_BEAST_ASYNC_TPARAM1 AcceptHandler> + BOOST_BEAST_ASYNC_RESULT1(AcceptHandler) + stream:: + async_accept( +@@ -678,7 +678,7 @@ + template< + class Body, class Allocator, + class ResponseDecorator, +- class AcceptHandler> ++ BOOST_BEAST_ASYNC_TPARAM1 AcceptHandler> + BOOST_BEAST_ASYNC_RESULT1(AcceptHandler) + stream:: + async_accept_ex( +diff -aruN a/boost/beast/websocket/impl/close.hpp b/boost/beast/websocket/impl/close.hpp +--- a/boost/beast/websocket/impl/close.hpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/boost/beast/websocket/impl/close.hpp 2020-05-02 13:50:11.153761830 -0400 +@@ -382,7 +382,7 @@ + } + + template +-template ++template + BOOST_BEAST_ASYNC_RESULT1(CloseHandler) + stream:: + async_close(close_reason const& cr, CloseHandler&& handler) +diff -aruN a/boost/beast/websocket/impl/handshake.hpp b/boost/beast/websocket/impl/handshake.hpp +--- a/boost/beast/websocket/impl/handshake.hpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/boost/beast/websocket/impl/handshake.hpp 2020-05-02 13:50:11.153761830 -0400 +@@ -268,7 +268,7 @@ + //------------------------------------------------------------------------------ + + template +-template ++template + BOOST_BEAST_ASYNC_RESULT1(HandshakeHandler) + stream:: + async_handshake( +@@ -293,7 +293,7 @@ + } + + template +-template ++template + BOOST_BEAST_ASYNC_RESULT1(HandshakeHandler) + stream:: + async_handshake( +diff -aruN a/boost/beast/websocket/impl/ping.hpp b/boost/beast/websocket/impl/ping.hpp +--- a/boost/beast/websocket/impl/ping.hpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/boost/beast/websocket/impl/ping.hpp 2020-05-02 13:50:11.153761830 -0400 +@@ -288,7 +288,7 @@ + } + + template +-template ++template + BOOST_BEAST_ASYNC_RESULT1(WriteHandler) + stream:: + async_ping(ping_data const& payload, WriteHandler&& handler) +@@ -306,7 +306,7 @@ + } + + template +-template ++template + BOOST_BEAST_ASYNC_RESULT1(WriteHandler) + stream:: + async_pong(ping_data const& payload, WriteHandler&& handler) +diff -aruN a/boost/beast/websocket/impl/read.hpp b/boost/beast/websocket/impl/read.hpp +--- a/boost/beast/websocket/impl/read.hpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/boost/beast/websocket/impl/read.hpp 2020-05-02 13:50:11.153761830 -0400 +@@ -804,7 +804,7 @@ + } + + template +-template ++template + BOOST_BEAST_ASYNC_RESULT2(ReadHandler) + stream:: + async_read(DynamicBuffer& buffer, ReadHandler&& handler) +@@ -878,7 +878,7 @@ + } + + template +-template ++template + BOOST_BEAST_ASYNC_RESULT2(ReadHandler) + stream:: + async_read_some( +@@ -1263,7 +1263,7 @@ + } + + template +-template ++template + BOOST_BEAST_ASYNC_RESULT2(ReadHandler) + stream:: + async_read_some( +diff -aruN a/boost/beast/websocket/impl/write.hpp b/boost/beast/websocket/impl/write.hpp +--- a/boost/beast/websocket/impl/write.hpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/boost/beast/websocket/impl/write.hpp 2020-05-02 13:50:11.153761830 -0400 +@@ -700,7 +700,7 @@ + } + + template +-template ++template + BOOST_BEAST_ASYNC_RESULT2(WriteHandler) + stream:: + async_write_some(bool fin, +@@ -756,7 +756,7 @@ + } + + template +-template ++template + BOOST_BEAST_ASYNC_RESULT2(WriteHandler) + stream:: + async_write( +diff -aruN a/boost/beast/websocket/stream.hpp b/boost/beast/websocket/stream.hpp +--- a/boost/beast/websocket/stream.hpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/boost/beast/websocket/stream.hpp 2020-05-02 13:50:11.154761841 -0400 +@@ -2634,7 +2634,7 @@ + + template< + class ResponseDecorator, +- class AcceptHandler> ++ BOOST_BEAST_ASYNC_TPARAM1 AcceptHandler> + BOOST_BEAST_ASYNC_RESULT1(AcceptHandler) + async_accept_ex( + ResponseDecorator const& decorator, +@@ -2643,7 +2643,7 @@ + template< + class ConstBufferSequence, + class ResponseDecorator, +- class AcceptHandler> ++ BOOST_BEAST_ASYNC_TPARAM1 AcceptHandler> + BOOST_BEAST_ASYNC_RESULT1(AcceptHandler) + async_accept_ex( + ConstBufferSequence const& buffers, +@@ -2656,7 +2656,7 @@ + template< + class Body, class Allocator, + class ResponseDecorator, +- class AcceptHandler> ++ BOOST_BEAST_ASYNC_TPARAM1 AcceptHandler> + BOOST_BEAST_ASYNC_RESULT1(AcceptHandler) + async_accept_ex( + http::request ++ template + typename net::async_result::return_type + async_read(AsyncReadStream& stream, net::mutable_buffer buffer, ReadHandler&& handler) + { +diff -aruN a/libs/beast/test/beast/core/basic_stream.cpp b/libs/beast/test/beast/core/basic_stream.cpp +--- a/libs/beast/test/beast/core/basic_stream.cpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/libs/beast/test/beast/core/basic_stream.cpp 2020-05-02 13:51:02.470315892 -0400 +@@ -30,6 +30,13 @@ + #include + #include + ++#if BOOST_ASIO_HAS_CO_AWAIT ++#include ++#include ++#include ++#endif ++ ++ + namespace boost { + namespace beast { + +@@ -258,7 +265,7 @@ + { + string_view s_; + net::ip::tcp::socket socket_; +- ++ + public: + session( + string_view s, +@@ -1297,6 +1304,52 @@ + + //-------------------------------------------------------------------------- + ++#if BOOST_ASIO_HAS_CO_AWAIT ++ void testAwaitableCompilation( ++ basic_stream& stream, ++ net::mutable_buffer outbuf, ++ net::const_buffer inbuf, ++ net::ip::tcp::resolver::results_type resolve_results) ++ { ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ stream.async_read_some(outbuf, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ stream.async_write_some(inbuf, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ stream.async_connect( ++ resolve_results.begin(), ++ resolve_results.end(), ++ net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ stream.async_connect( ++ resolve_results, ++ net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ stream.async_connect( ++ resolve_results.begin()->endpoint(), ++ net::use_awaitable))>); ++ ++ auto comparison_function = [](error_code&, net::ip::tcp::endpoint) { return true; }; ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ stream.async_connect( ++ resolve_results.begin(), ++ resolve_results.end(), ++ comparison_function, ++ net::use_awaitable))>); ++ } ++#endif ++ + void + run() + { +@@ -1307,6 +1360,11 @@ + testMembers(); + testJavadocs(); + testIssue1589(); ++ ++#if BOOST_ASIO_HAS_CO_AWAIT ++ // test for compilation success only ++ boost::ignore_unused(&basic_stream_test::testAwaitableCompilation); ++#endif + } + }; + +diff -aruN a/libs/beast/test/beast/core/buffered_read_stream.cpp b/libs/beast/test/beast/core/buffered_read_stream.cpp +--- a/libs/beast/test/beast/core/buffered_read_stream.cpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/libs/beast/test/beast/core/buffered_read_stream.cpp 2020-05-02 13:51:02.470315892 -0400 +@@ -21,6 +21,9 @@ + #include + #include + #include ++#if BOOST_ASIO_HAS_CO_AWAIT ++#include ++#endif + + namespace boost { + namespace beast { +@@ -211,6 +214,22 @@ + } + }; + ++#if BOOST_ASIO_HAS_CO_AWAIT ++ void testAwaitableCompiles( ++ buffered_read_stream& stream, ++ net::mutable_buffer rxbuf, ++ net::const_buffer txbuf) ++ { ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ stream.async_read_some(rxbuf, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ stream.async_write_some(txbuf, net::use_awaitable))>); ++ } ++#endif ++ + void run() override + { + testSpecialMembers(); +@@ -221,6 +240,10 @@ + }); + + testAsyncLoop(); ++ ++#if BOOST_ASIO_HAS_CO_AWAIT ++ boost::ignore_unused(&buffered_read_stream_test::testAwaitableCompiles); ++#endif + } + }; + +diff -aruN a/libs/beast/test/beast/core/detect_ssl.cpp b/libs/beast/test/beast/core/detect_ssl.cpp +--- a/libs/beast/test/beast/core/detect_ssl.cpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/libs/beast/test/beast/core/detect_ssl.cpp 2020-05-02 13:51:02.470315892 -0400 +@@ -16,6 +16,11 @@ + #include + #include + #include ++#if BOOST_ASIO_HAS_CO_AWAIT ++#include ++#include ++#include ++#endif + namespace boost { + namespace beast { + +@@ -166,12 +171,25 @@ + } + } + ++#if BOOST_ASIO_HAS_CO_AWAIT ++ void testAwaitableCompiles(test::stream& stream, flat_buffer& b) ++ { ++ static_assert( ++ std::is_same_v< ++ net::awaitable, decltype( ++ async_detect_ssl(stream, b, net::use_awaitable))>); ++ } ++#endif ++ + void + run() override + { + testDetect(); + testRead(); + testAsyncRead(); ++#if BOOST_ASIO_HAS_CO_AWAIT ++ boost::ignore_unused(&detect_ssl_test::testAwaitableCompiles); ++#endif + } + }; + +diff -aruN a/libs/beast/test/beast/core/flat_stream.cpp b/libs/beast/test/beast/core/flat_stream.cpp +--- a/libs/beast/test/beast/core/flat_stream.cpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/libs/beast/test/beast/core/flat_stream.cpp 2020-05-02 13:51:02.471315902 -0400 +@@ -17,6 +17,9 @@ + #include + #include + #include ++#if BOOST_ASIO_HAS_CO_AWAIT ++#include ++#endif + + namespace boost { + namespace beast { +@@ -208,11 +211,30 @@ + check({1,2,3,4}, 3, 3, true); + } + ++#if BOOST_ASIO_HAS_CO_AWAIT ++ void testAwaitableCompiles( ++ flat_stream& stream, ++ net::mutable_buffer rxbuf, ++ net::const_buffer txbuf) ++ { ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ stream.async_read_some(rxbuf, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ stream.async_write_some(txbuf, net::use_awaitable))>); ++ } ++#endif ++ + void + run() override + { + testMembers(); + testSplit(); ++#if BOOST_ASIO_HAS_CO_AWAIT ++ boost::ignore_unused(&flat_stream_test::testAwaitableCompiles); ++#endif + } + }; + +diff -aruN a/libs/beast/test/beast/core/stream_traits.cpp b/libs/beast/test/beast/core/stream_traits.cpp +--- a/libs/beast/test/beast/core/stream_traits.cpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/libs/beast/test/beast/core/stream_traits.cpp 2020-05-02 13:51:02.471315902 -0400 +@@ -214,14 +214,14 @@ + struct async_read_stream + { + net::io_context::executor_type get_executor() noexcept; +- template ++ template + void async_read_some(MutableBufferSequence const&, ReadHandler&&); + }; + + struct async_write_stream + { + net::io_context::executor_type get_executor() noexcept; +- template ++ template + void async_write_some(ConstBufferSequence const&, WriteHandler&&); + }; + +@@ -232,9 +232,9 @@ + struct async_stream : async_read_stream, async_write_stream + { + net::io_context::executor_type get_executor() noexcept; +- template ++ template + void async_read_some(MutableBufferSequence const&, ReadHandler&&); +- template ++ template + void async_write_some(ConstBufferSequence const&, WriteHandler&&); + }; + +diff -aruN a/libs/beast/test/beast/http/CMakeLists.txt b/libs/beast/test/beast/http/CMakeLists.txt +--- a/libs/beast/test/beast/http/CMakeLists.txt 2020-04-22 09:34:50.000000000 -0400 ++++ b/libs/beast/test/beast/http/CMakeLists.txt 2020-05-02 13:51:02.472315914 -0400 +@@ -26,6 +26,7 @@ + empty_body.cpp + error.cpp + field.cpp ++ field_compiles.cpp + fields.cpp + file_body.cpp + message.cpp +diff -aruN a/libs/beast/test/beast/http/field_compiles.cpp b/libs/beast/test/beast/http/field_compiles.cpp +--- a/libs/beast/test/beast/http/field_compiles.cpp 1969-12-31 19:00:00.000000000 -0500 ++++ b/libs/beast/test/beast/http/field_compiles.cpp 2020-05-02 13:51:02.473315924 -0400 +@@ -0,0 +1,11 @@ ++// ++// Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com) ++// ++// Distributed under the Boost Software License, Version 1.0. (See accompanying ++// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ++// ++// Official repository: https://github.com/boostorg/beast ++// ++ ++// Test that header file is self-contained. ++#include +diff -aruN a/libs/beast/test/beast/http/Jamfile b/libs/beast/test/beast/http/Jamfile +--- a/libs/beast/test/beast/http/Jamfile 2020-04-22 09:34:50.000000000 -0400 ++++ b/libs/beast/test/beast/http/Jamfile 2020-05-02 13:51:02.472315914 -0400 +@@ -16,6 +16,7 @@ + dynamic_body.cpp + error.cpp + field.cpp ++ field_compiles.cpp + fields.cpp + file_body.cpp + message.cpp +diff -aruN a/libs/beast/test/beast/http/read.cpp b/libs/beast/test/beast/http/read.cpp +--- a/libs/beast/test/beast/http/read.cpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/libs/beast/test/beast/http/read.cpp 2020-05-02 13:51:02.472315914 -0400 +@@ -25,6 +25,9 @@ + #include + #include + #include ++#if BOOST_ASIO_HAS_CO_AWAIT ++#include ++#endif + + namespace boost { + namespace beast { +@@ -529,6 +532,49 @@ + } + } + ++#if BOOST_ASIO_HAS_CO_AWAIT ++ void testAwaitableCompiles( ++ test::stream& stream, ++ flat_buffer& dynbuf, ++ parser& request_parser, ++ request& request, ++ parser& response_parser, ++ response& response) ++ { ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ http::async_read(stream, dynbuf, request, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ http::async_read(stream, dynbuf, request_parser, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ http::async_read(stream, dynbuf, response, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ http::async_read(stream, dynbuf, response_parser, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ http::async_read_some(stream, dynbuf, request_parser, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ http::async_read_some(stream, dynbuf, response_parser, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ http::async_read_header(stream, dynbuf, request_parser, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ http::async_read_header(stream, dynbuf, response_parser, net::use_awaitable))>); ++ } ++#endif ++ + void + run() override + { +@@ -552,6 +598,9 @@ + testRegression430(); + testReadGrind(); + testAsioHandlerInvoke(); ++#if BOOST_ASIO_HAS_CO_AWAIT ++ boost::ignore_unused(&read_test::testAwaitableCompiles); ++#endif + } + }; + +diff -aruN a/libs/beast/test/beast/http/write.cpp b/libs/beast/test/beast/http/write.cpp +--- a/libs/beast/test/beast/http/write.cpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/libs/beast/test/beast/http/write.cpp 2020-05-02 13:51:02.473315924 -0400 +@@ -26,6 +26,9 @@ + #include + #include + #include ++#if BOOST_ASIO_HAS_CO_AWAIT ++#include ++#endif + + namespace boost { + namespace beast { +@@ -994,6 +997,59 @@ + } + } + ++#if BOOST_ASIO_HAS_CO_AWAIT ++ void testAwaitableCompiles( ++ test::stream& stream, ++ serializer& request_serializer, ++ request& req, ++ request const& creq, ++ serializer& response_serializer, ++ response& resp, ++ response const& cresp) ++ { ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ http::async_write(stream, request_serializer, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ http::async_write(stream, response_serializer, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ http::async_write(stream, req, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ http::async_write(stream, creq, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ http::async_write(stream, resp, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ http::async_write(stream, cresp, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ http::async_write_some(stream, request_serializer, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ http::async_write_some(stream, response_serializer, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ http::async_write_header(stream, request_serializer, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ http::async_write_header(stream, response_serializer, net::use_awaitable))>); ++ } ++#endif ++ ++ + void + run() override + { +@@ -1017,6 +1073,9 @@ + }); + testAsioHandlerInvoke(); + testBodyWriters(); ++#if BOOST_ASIO_HAS_CO_AWAIT ++ boost::ignore_unused(&write_test::testAwaitableCompiles); ++#endif + } + }; + +diff -aruN a/libs/beast/test/beast/websocket/accept.cpp b/libs/beast/test/beast/websocket/accept.cpp +--- a/libs/beast/test/beast/websocket/accept.cpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/libs/beast/test/beast/websocket/accept.cpp 2020-05-02 13:51:02.473315924 -0400 +@@ -14,7 +14,9 @@ + #include + #include + #include "test.hpp" +- ++#if BOOST_ASIO_HAS_CO_AWAIT ++#include ++#endif + namespace boost { + namespace beast { + namespace websocket { +@@ -810,6 +812,27 @@ + } + } + ++#if BOOST_ASIO_HAS_CO_AWAIT ++ void testAwaitableCompiles( ++ stream& s, ++ http::request& req, ++ net::mutable_buffer buf ++ ) ++ { ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ s.async_accept(net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ s.async_accept(req, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ s.async_accept(buf, net::use_awaitable))>); ++ } ++#endif ++ + void + run() override + { +@@ -820,6 +843,9 @@ + testInvalidInputs(); + testEndOfStream(); + testAsync(); ++#if BOOST_ASIO_HAS_CO_AWAIT ++ boost::ignore_unused(&accept_test::testAwaitableCompiles); ++#endif + } + }; + +diff -aruN a/libs/beast/test/beast/websocket/close.cpp b/libs/beast/test/beast/websocket/close.cpp +--- a/libs/beast/test/beast/websocket/close.cpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/libs/beast/test/beast/websocket/close.cpp 2020-05-02 13:51:02.473315924 -0400 +@@ -16,6 +16,9 @@ + + #include + #include ++#if BOOST_ASIO_HAS_CO_AWAIT ++#include ++#endif + + namespace boost { + namespace beast { +@@ -735,6 +738,15 @@ + } + }; + ++#if BOOST_ASIO_HAS_CO_AWAIT ++ void testAwaitableCompiles(stream& s, close_reason cr ) ++ { ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ s.async_close(cr, net::use_awaitable))>); ++ } ++#endif ++ + void + run() override + { +@@ -742,6 +754,9 @@ + testTimeout(); + testSuspend(); + testMoveOnly(); ++#if BOOST_ASIO_HAS_CO_AWAIT ++ boost::ignore_unused(&close_test::testAwaitableCompiles); ++#endif + } + }; + +diff -aruN a/libs/beast/test/beast/websocket/handshake.cpp b/libs/beast/test/beast/websocket/handshake.cpp +--- a/libs/beast/test/beast/websocket/handshake.cpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/libs/beast/test/beast/websocket/handshake.cpp 2020-05-02 13:51:02.473315924 -0400 +@@ -18,6 +18,9 @@ + #include + #include + #include ++#if BOOST_ASIO_HAS_CO_AWAIT ++#include ++#endif + + namespace boost { + namespace beast { +@@ -704,6 +707,23 @@ + } + } + ++#if BOOST_ASIO_HAS_CO_AWAIT ++ void testAwaitableCompiles( ++ stream& s, ++ std::string host, ++ std::string port, ++ response_type& resp) ++ { ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ s.async_handshake(host, port, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ s.async_handshake(resp, host, port, net::use_awaitable))>); ++ } ++#endif ++ + void + run() override + { +@@ -714,6 +734,9 @@ + testMoveOnly(); + testAsync(); + testIssue1460(); ++#if BOOST_ASIO_HAS_CO_AWAIT ++ boost::ignore_unused(&handshake_test::testAwaitableCompiles); ++#endif + } + }; + +diff -aruN a/libs/beast/test/beast/websocket/ping.cpp b/libs/beast/test/beast/websocket/ping.cpp +--- a/libs/beast/test/beast/websocket/ping.cpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/libs/beast/test/beast/websocket/ping.cpp 2020-05-02 13:51:02.474315935 -0400 +@@ -18,6 +18,10 @@ + #include + #include + ++#if BOOST_ASIO_HAS_CO_AWAIT ++#include ++#endif ++ + namespace boost { + namespace beast { + namespace websocket { +@@ -483,12 +487,30 @@ + } + }; + ++#if BOOST_ASIO_HAS_CO_AWAIT ++ void testAwaitableCompiles( ++ stream& s, ++ ping_data& pdat) ++ { ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ s.async_ping(pdat, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ s.async_pong(pdat, net::use_awaitable))>); ++ } ++#endif ++ + void + run() override + { + testPing(); + testSuspend(); + testMoveOnly(); ++#if BOOST_ASIO_HAS_CO_AWAIT ++ boost::ignore_unused(&ping_test::testAwaitableCompiles); ++#endif + } + }; + +diff -aruN a/libs/beast/test/beast/websocket/read2.cpp b/libs/beast/test/beast/websocket/read2.cpp +--- a/libs/beast/test/beast/websocket/read2.cpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/libs/beast/test/beast/websocket/read2.cpp 2020-05-02 13:51:02.474315935 -0400 +@@ -14,6 +14,10 @@ + + #include + ++#if BOOST_ASIO_HAS_CO_AWAIT ++#include ++#endif ++ + #include + #if BOOST_WORKAROUND(BOOST_GCC, < 80200) + #define BOOST_BEAST_SYMBOL_HIDDEN __attribute__ ((visibility("hidden"))) +@@ -673,10 +677,34 @@ + } + } + ++#if BOOST_ASIO_HAS_CO_AWAIT ++ void testAwaitableCompiles( ++ stream& s, ++ flat_buffer& dynbuf, ++ net::mutable_buffer buf, ++ std::size_t limit) ++ { ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ s.async_read(dynbuf, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ s.async_read_some(buf, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ s.async_read_some(dynbuf, limit, net::use_awaitable))>); ++ } ++#endif ++ + void + run() override + { + testRead(); ++#if BOOST_ASIO_HAS_CO_AWAIT ++ boost::ignore_unused(&read2_test::testAwaitableCompiles); ++#endif + } + }; + +diff -aruN a/libs/beast/test/beast/websocket/write.cpp b/libs/beast/test/beast/websocket/write.cpp +--- a/libs/beast/test/beast/websocket/write.cpp 2020-04-22 09:34:50.000000000 -0400 ++++ b/libs/beast/test/beast/websocket/write.cpp 2020-05-02 13:51:02.474315935 -0400 +@@ -13,6 +13,10 @@ + #include + #include + ++#if BOOST_ASIO_HAS_CO_AWAIT ++#include ++#endif ++ + #include "test.hpp" + + namespace boost { +@@ -716,6 +720,22 @@ + BEAST_EXPECT(n1 < n0 + s.size()); + } + ++#if BOOST_ASIO_HAS_CO_AWAIT ++ void testAwaitableCompiles( ++ stream& s, ++ net::mutable_buffer buf, ++ bool fin) ++ { ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ s.async_write(buf, net::use_awaitable))>); ++ ++ static_assert(std::is_same_v< ++ net::awaitable, decltype( ++ s.async_write_some(fin, buf, net::use_awaitable))>); ++ } ++#endif ++ + void + run() override + { +@@ -726,6 +746,9 @@ + testMoveOnly(); + testIssue300(); + testIssue1666(); ++#if BOOST_ASIO_HAS_CO_AWAIT ++ boost::ignore_unused(&write_test::testAwaitableCompiles); ++#endif + } + }; + diff --git a/boost-1.73.0-build-optflags.patch b/boost-1.73.0-build-optflags.patch new file mode 100644 index 0000000..a2895f6 --- /dev/null +++ b/boost-1.73.0-build-optflags.patch @@ -0,0 +1,55 @@ +--- boost_1_73_0/tools/build/src/tools/gcc.jam~ 2020-03-31 21:50:30.687635266 +0100 ++++ boost_1_73_0/tools/build/src/tools/gcc.jam 2020-03-31 21:50:32.943632779 +0100 +@@ -571,7 +571,7 @@ + + actions compile.c++ bind PCH_FILE + { +- "$(CONFIG_COMMAND)" $(LANG) -ftemplate-depth-$(TEMPLATE_DEPTH) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" -c -o "$(<:W)" "$(>:W)" ++ "$(CONFIG_COMMAND)" $(LANG) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" -c -o "$(<:W)" "$(>:W)" + } + + actions compile.c bind PCH_FILE +@@ -581,7 +581,7 @@ + + actions compile.c++.preprocess bind PCH_FILE + { +- "$(CONFIG_COMMAND)" $(LANG) -ftemplate-depth-$(TEMPLATE_DEPTH) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" "$(>:W)" -E >"$(<:W)" ++ "$(CONFIG_COMMAND)" $(LANG) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" "$(>:W)" -E >"$(<:W)" + } + + actions compile.c.preprocess bind PCH_FILE +@@ -704,20 +704,20 @@ + ### + + # Declare flags and action for compilation. +-toolset.flags gcc.compile OPTIONS off : -O0 ; +-toolset.flags gcc.compile OPTIONS speed : -O3 ; +-toolset.flags gcc.compile OPTIONS space : -Os ; +- +-toolset.flags gcc.compile OPTIONS off : -fno-inline ; +-toolset.flags gcc.compile OPTIONS on : -Wno-inline ; +-toolset.flags gcc.compile OPTIONS full : -finline-functions -Wno-inline ; +- +-toolset.flags gcc.compile OPTIONS off : -w ; +-toolset.flags gcc.compile OPTIONS on : -Wall ; +-toolset.flags gcc.compile OPTIONS all : -Wall ; +-toolset.flags gcc.compile OPTIONS extra : -Wall -Wextra ; +-toolset.flags gcc.compile OPTIONS pedantic : -Wall -Wextra -pedantic ; +-toolset.flags gcc.compile OPTIONS on : -Werror ; ++toolset.flags gcc.compile OPTIONS off : ; ++toolset.flags gcc.compile OPTIONS speed : ; ++toolset.flags gcc.compile OPTIONS space : ; ++ ++toolset.flags gcc.compile OPTIONS off : ; ++toolset.flags gcc.compile OPTIONS on : ; ++toolset.flags gcc.compile OPTIONS full : ; ++ ++toolset.flags gcc.compile OPTIONS off : ; ++toolset.flags gcc.compile OPTIONS on : ; ++toolset.flags gcc.compile OPTIONS all : ; ++toolset.flags gcc.compile OPTIONS extra : ; ++toolset.flags gcc.compile OPTIONS pedantic : ; ++toolset.flags gcc.compile OPTIONS on : ; + + toolset.flags gcc.compile OPTIONS on : -g ; + toolset.flags gcc.compile OPTIONS on : -pg ; diff --git a/boost-1.73.0-cmakedir.patch b/boost-1.73.0-cmakedir.patch new file mode 100644 index 0000000..e47728f --- /dev/null +++ b/boost-1.73.0-cmakedir.patch @@ -0,0 +1,28 @@ +--- boost_1_73_0/tools/boost_install/boost-install.jam~ 2020-04-24 20:21:50.330267122 +0100 ++++ boost_1_73_0/tools/boost_install/boost-install.jam 2020-04-24 20:22:16.818360540 +0100 +@@ -652,25 +652,6 @@ + "get_filename_component(_BOOST_CMAKEDIR \"${CMAKE_CURRENT_LIST_DIR}/../\" REALPATH)" + : true ; + +- if [ path.is-rooted $(cmakedir) ] +- { +- local cmakedir-native = [ path-native-fwd $(cmakedir) ] ; +- +- print.text +- +- "" +- "# If the computed and the original directories are symlink-equivalent, use original" +- "if(EXISTS \"$(cmakedir-native)\")" +- " get_filename_component(_BOOST_CMAKEDIR_ORIGINAL \"$(cmakedir-native)\" REALPATH)" +- " if(_BOOST_CMAKEDIR STREQUAL _BOOST_CMAKEDIR_ORIGINAL)" +- " set(_BOOST_CMAKEDIR \"$(cmakedir-native)\")" +- " endif()" +- " unset(_BOOST_CMAKEDIR_ORIGINAL)" +- "endif()" +- "" +- : true ; +- } +- + get-dir "_BOOST_INCLUDEDIR" : $(includedir) ; + + if $(library-type) = INTERFACE diff --git a/boost-1.73.0-outcome-assert.patch b/boost-1.73.0-outcome-assert.patch new file mode 100644 index 0000000..1dfeb71 --- /dev/null +++ b/boost-1.73.0-outcome-assert.patch @@ -0,0 +1,24 @@ +From 9f414ea58264fe0a62172a06f4653adc7556c164 Mon Sep 17 00:00:00 2001 +From: "Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)" + +Date: Mon, 27 Apr 2020 12:00:22 +0100 +Subject: [PATCH] Fix https://github.com/ned14/outcome/issues/223 where in + debug builds, cloning a status_code_ptr causes a segfault. + +--- + include/status_code_ptr.hpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/status_code_ptr.hpp b/include/status_code_ptr.hpp +index 0f5efa1..bd5c278 100644 +--- boost_1_73_0/boost/outcome/experimental/status-code/status_code_ptr.hpp ++++ boost_1_73_0/boost/outcome/experimental/status-code/status_code_ptr.hpp +@@ -97,7 +97,7 @@ namespace detail + #endif + virtual void _do_erased_copy(status_code &dst, const status_code &src, size_t /*unused*/) const override // NOLINT + { +- assert(dst.domain() == *this); ++ // Note that dst will not have its domain set + assert(src.domain() == *this); + auto &d = static_cast<_mycode &>(dst); // NOLINT + const auto &_s = static_cast(src); // NOLINT diff --git a/boost-mingw.patch b/boost-mingw.patch index 5384687..0a1fa9a 100644 --- a/boost-mingw.patch +++ b/boost-mingw.patch @@ -1,6 +1,6 @@ ---- libs/context/build/Jamfile.v2.orig 2013-03-03 13:39:59.684868916 +0100 -+++ libs/context/build/Jamfile.v2 2013-03-03 15:09:09.893232829 +0100 -@@ -47,10 +47,11 @@ +--- libs/context/build/Jamfile.v2.mingw 2020-04-22 15:34:56.000000000 +0200 ++++ libs/context/build/Jamfile.v2 2020-08-04 01:27:43.304736302 +0200 +@@ -52,10 +52,11 @@ local rule default_binary_format ( ) { local tmp = elf ; @@ -16,19 +16,108 @@ return $(tmp) ; } -@@ -67,10 +68,11 @@ +@@ -72,11 +73,12 @@ local rule default_abi ( ) { local tmp = sysv ; - if [ os.name ] = "NT" { tmp = ms ; } - else if [ os.name ] = "CYGWIN" { tmp = ms ; } - else if [ os.platform ] = "ARM" { tmp = aapcs ; } -- else if [ os.platform ] = "MIPS" { tmp = o32 ; } +- else if [ os.platform ] = "MIPS32" { tmp = o32 ; } +- else if [ os.platform ] = "MIPS64" { tmp = n64 ; } + #if [ os.name ] = "NT" { tmp = ms ; } + #else if [ os.name ] = "CYGWIN" { tmp = ms ; } + #else if [ os.platform ] = "ARM" { tmp = aapcs ; } -+ #else if [ os.platform ] = "MIPS" { tmp = o32 ; } ++ #else if [ os.platform ] = "MIPS32" { tmp = o32 ; } ++ #else if [ os.platform ] = "MIPS64" { tmp = n64 ; } + tmp = ms ; return $(tmp) ; } +--- boost/config/compiler/gcc.hpp.mingw 2020-08-04 03:04:58.992696345 +0200 ++++ boost/config/compiler/gcc.hpp 2020-08-04 03:05:26.536823453 +0200 +@@ -315,13 +315,6 @@ + # define BOOST_FALLTHROUGH __attribute__((fallthrough)) + #endif + +-#if defined(__MINGW32__) && !defined(__MINGW64__) +-// Currently (March 2019) thread_local is broken on mingw for all current 32bit compiler releases, see +-// https://sourceforge.net/p/mingw-w64/bugs/527/ +-// Not setting this causes program termination on thread exit. +-#define BOOST_NO_CXX11_THREAD_LOCAL +-#endif +- + // + // Unused attribute: + #if __GNUC__ >= 4 +--- libs/locale/build/Jamfile.v2.mingw 2020-08-04 12:10:05.495508094 +0200 ++++ libs/locale/build/Jamfile.v2 2020-08-04 12:15:34.037385187 +0200 +@@ -26,8 +26,7 @@ + + ## iconv + +-obj has_iconv_libc_obj : ../build/has_iconv.cpp ; +-exe has_iconv : has_iconv_libc_obj ; ++obj has_iconv : ../build/has_iconv.cpp ; + explicit has_iconv ; + + ICONV_PATH = [ modules.peek : ICONV_PATH ] ; +@@ -41,8 +40,7 @@ + + explicit iconv ; + +-obj has_iconv_libc_ext : ../build/has_iconv.cpp iconv ; +-exe has_external_iconv : has_iconv_libc_ext iconv ; ++obj has_external_iconv : ../build/has_iconv.cpp iconv ; + explicit has_external_iconv ; + + exe accepts_shared_option : ../build/option.cpp +@@ -189,11 +187,8 @@ + + } + +-obj has_icu_obj : ../build/has_icu_test.cpp : $(ICU_OPTS) ; +-obj has_icu64_obj : ../build/has_icu_test.cpp : $(ICU64_OPTS) ; +- +-exe has_icu : has_icu_obj : $(ICU_OPTS) ; +-exe has_icu64 : has_icu64_obj : $(ICU64_OPTS) ; ++obj has_icu : ../build/has_icu_test.cpp : $(ICU_OPTS) ; ++obj has_icu64 : ../build/has_icu_test.cpp : $(ICU64_OPTS) ; + + explicit has_icu has_icu64 ; + +--- libs/regex/build/Jamfile.v2.mingw 2020-08-04 12:08:39.821198522 +0200 ++++ libs/regex/build/Jamfile.v2 2020-08-04 12:12:43.679690400 +0200 +@@ -116,7 +116,7 @@ + + } + +-unit-test has_icu : has_icu_test.cpp : $(ICU_OPTS) ; ++obj has_icu : has_icu_test.cpp : $(ICU_OPTS) ; + explicit has_icu ; + + alias icu_options : : : : [ check-target-builds has_icu : $(ICU_OPTS) : ] ; +--- libs/context/src/asm/jump_i386_ms_pe_gas.asm.mingw 2020-08-04 13:10:32.710118240 +0200 ++++ libs/context/src/asm/jump_i386_ms_pe_gas.asm 2020-08-04 13:23:04.203835474 +0200 +@@ -120,4 +120,4 @@ + jmp *%ecx + + .section .drectve +-.ascii " -export:\"_jump_fcontext\"" ++.ascii " -export:\"jump_fcontext\"" +--- libs/context/src/asm/make_i386_ms_pe_gas.asm.mingw 2020-08-04 13:10:40.623872908 +0200 ++++ libs/context/src/asm/make_i386_ms_pe_gas.asm 2020-08-04 13:23:23.601234437 +0200 +@@ -150,4 +150,4 @@ + .def __exit; .scl 2; .type 32; .endef /* standard C library function */ + + .section .drectve +-.ascii " -export:\"_make_fcontext\"" ++.ascii " -export:\"make_fcontext\"" +--- libs/context/src/asm/ontop_i386_ms_pe_gas.asm.mingw 2020-08-04 13:10:49.210606716 +0200 ++++ libs/context/src/asm/ontop_i386_ms_pe_gas.asm 2020-08-04 13:23:49.368436027 +0200 +@@ -128,4 +128,4 @@ + jmp *%ecx + + .section .drectve +-.ascii " -export:\"_ontop_fcontext\"" ++.ascii " -export:\"ontop_fcontext\"" diff --git a/mingw-boost.spec b/mingw-boost.spec index 4b0d4a9..9ca1b60 100644 --- a/mingw-boost.spec +++ b/mingw-boost.spec @@ -2,56 +2,63 @@ %global name1 boost Name: mingw-%{name1} -Version: 1.69.0 -%global version_enc 1_69_0 -Release: 3%{?dist} +Version: 1.73.0 +Release: 1%{?dist} Summary: MinGW Windows port of Boost C++ Libraries +# Replace each . with _ in %%{version} +%global version_enc %{lua: + local ver = rpm.expand("%{version}") + ver = ver:gsub("%.", "_") + print(ver) +} %global toplev_dirname %{name1}_%{version_enc} License: Boost URL: http://www.boost.org -Source0: http://downloads.sourceforge.net/%{name1}/%{toplev_dirname}.tar.bz2 +Source0: https://sourceforge.net/projects/%%{name1}/files/%{name1}/%{version}/%{toplev_dirname}.tar.bz2 # https://svn.boost.org/trac/boost/ticket/6150 -Patch4: boost-1.50.0-fix-non-utf8-files.patch - -# Add a manual page for bjam, based on the on-line documentation: -# http://www.boost.org/boost-build2/doc/html/bbv2/overview.html -Patch5: boost-1.48.0-add-bjam-man-page.patch +Patch4: boost-1.50.0-fix-non-utf8-files.patch # https://bugzilla.redhat.com/show_bug.cgi?id=828856 # https://bugzilla.redhat.com/show_bug.cgi?id=828857 # https://svn.boost.org/trac/boost/ticket/6701 -Patch15: boost-1.58.0-pool.patch - -# https://svn.boost.org/trac/boost/ticket/5637 -Patch25: boost-1.57.0-mpl-print.patch +Patch15: boost-1.58.0-pool.patch # https://svn.boost.org/trac/boost/ticket/9038 -Patch51: boost-1.58.0-pool-test_linking.patch - -# https://bugzilla.redhat.com/show_bug.cgi?id=1102667 -Patch61: boost-1.57.0-python-libpython_dep.patch -Patch62: boost-1.66.0-python-abi_letters.patch +Patch51: boost-1.58.0-pool-test_linking.patch # https://bugzilla.redhat.com/show_bug.cgi?id=1190039 -Patch65: boost-1.66.0-build-optflags.patch +Patch65: boost-1.73.0-build-optflags.patch # https://bugzilla.redhat.com/show_bug.cgi?id=1318383 -Patch82: boost-1.66.0-no-rpath.patch +Patch82: boost-1.66.0-no-rpath.patch # https://bugzilla.redhat.com/show_bug.cgi?id=1541035 -Patch83: boost-1.66.0-bjam-build-flags.patch +Patch83: boost-1.73.0-b2-build-flags.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=1673669 -Patch84: boost-1.69-random.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1818723 +Patch86: boost-1.69-format-allocator.patch -# https://github.com/boostorg/mpi/pull/81 -Patch85: boost-1.69-mpi-c_data.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1832639 +Patch87: boost-1.69.0-test-cxx20.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=1818723 -Patch86: boost-1.69-format-allocator.patch +# https://lists.boost.org/Archives/boost/2020/04/248812.php +Patch88: boost-1.73.0-cmakedir.patch + +# https://github.com/ned14/outcome/issues/223 +Patch89: boost-1.73.0-outcome-assert.patch + +# https://github.com/boostorg/beast/pull/1927 +Patch90: boost-1.73.0-beast-coroutines.patch + +# https://github.com/boostorg/geometry/issues/721 +Patch91: boost-1.73-geometry-issue721.patch + +# https://bugzilla.redhat.com/show_bug.cgi?id=1843105 +# https://github.com/boostorg/mpi/pull/119 +Patch92: boost-1.73-mpi-vector-data.patch # https://svn.boost.org/trac/boost/ticket/7262 Patch1000: boost-mingw.patch @@ -63,6 +70,7 @@ BuildArch: noarch BuildRequires: file BuildRequires: gcc +BuildRequires: gcc-c++ BuildRequires: mingw32-filesystem >= 95 BuildRequires: mingw32-gcc BuildRequires: mingw32-gcc-c++ @@ -71,6 +79,8 @@ BuildRequires: mingw32-bzip2 BuildRequires: mingw32-zlib BuildRequires: mingw32-expat BuildRequires: mingw32-pthreads +BuildRequires: mingw32-icu +#BuildRequires: mingw32-win-iconv BuildRequires: mingw64-filesystem >= 95 BuildRequires: mingw64-gcc @@ -80,13 +90,13 @@ BuildRequires: mingw64-bzip2 BuildRequires: mingw64-zlib BuildRequires: mingw64-expat BuildRequires: mingw64-pthreads +BuildRequires: mingw64-icu +#BuildRequires: mingw64-win-iconv BuildRequires: perl-interpreter # These are required by the native package: #BuildRequires: mingw32-python -#BuildRequires: mingw32-libicu #BuildRequires: mingw64-python -#BuildRequires: mingw64-libicu %description @@ -147,20 +157,22 @@ Static version of the MinGW Windows Boost C++ library. mv %{toplev_dirname} win32 pushd win32 -# Fixes +find ./boost -name '*.hpp' -perm /111 | xargs chmod a-x + %patch4 -p1 -%patch5 -p1 %patch15 -p0 -%patch25 -p1 %patch51 -p1 -%patch61 -p1 -%patch62 -p1 %patch65 -p1 %patch82 -p1 %patch83 -p1 -%patch84 -p1 -%patch85 -p1 %patch86 -p1 +%patch87 -p2 +%patch88 -p1 +%patch89 -p1 +%patch90 -p1 +%patch91 -p1 +%patch92 -p1 + %patch1000 -p0 -b .mingw %patch1002 -p1 -b .codecvtwchar popd @@ -170,8 +182,14 @@ cp -r win32 win64 %build %if 0%{?mingw_build_win32} == 1 pushd win32 -cat >> ./tools/build/src/user-config.jam << EOF -using gcc : : i686-w64-mingw32-g++ : /usr/bin/i686-w64-mingw32-windres ; +export MINGW32_CXXFLAGS="$MINGW32_CXXFLAGS %{mingw32_cflags}" +export MINGW32_LDFLAGS="$MINGW32_LDFLAGS -lssp" +cat >> ./tools/build/src/user-config.jam << "EOF" +import os ; +local MINGW32_CXXFLAGS = [ os.environ MINGW32_CXXFLAGS ] ; +local MINGW32_LDFLAGS = [ os.environ MINGW32_LDFLAGS ] ; + +using gcc : : i686-w64-mingw32-g++ : /usr/bin/i686-w64-mingw32-windres $(MINGW32_CXXFLAGS) $(MINGW32_LDFLAGS) ; EOF ./bootstrap.sh --with-toolset=gcc --with-icu=%{mingw32_prefix} @@ -180,13 +198,19 @@ echo ============================= build serial ================== ./b2 -d+2 -q %{?_smp_mflags} --layout=tagged \ --without-mpi --without-graph_parallel --without-python --build-dir=serial \ variant=release threading=single,multi debug-symbols=on pch=off \ - link=shared,static target-os=windows address-model=32 stage + link=shared,static toolset=gcc target-os=windows address-model=32 stage popd %endif %if 0%{?mingw_build_win64} == 1 pushd win64 -cat >> ./tools/build/src/user-config.jam << EOF -using gcc : : x86_64-w64-mingw32-g++ : /usr/bin/x86_64-w64-mingw32-windres ; +export MINGW64_CXXFLAGS="$MINGW64_CXXFLAGS %{mingw32_cflags}" +export MINGW64_LDFLAGS="$MINGW64_LDFLAGS -lssp" +cat >> ./tools/build/src/user-config.jam << "EOF" +import os ; +local MINGW64_CXXFLAGS = [ os.environ MINGW64_CXXFLAGS ] ; +local MINGW64_LDFLAGS = [ os.environ MINGW64_LDFLAGS ] ; + +using gcc : : x86_64-w64-mingw32-g++ : /usr/bin/x86_64-w64-mingw32-windres $(MINGW64_CXXFLAGS) $(MINGW64_LDFLAGS) ; EOF ./bootstrap.sh --with-toolset=gcc --with-icu=%{mingw64_prefix} @@ -195,7 +219,7 @@ echo ============================= build serial ================== ./b2 -d+2 -q %{?_smp_mflags} --layout=tagged \ --without-mpi --without-graph_parallel --without-python --build-dir=serial \ variant=release threading=single,multi debug-symbols=on pch=off \ - link=shared,static target-os=windows address-model=64 stage + link=shared,static toolset=gcc target-os=windows address-model=64 stage popd %endif @@ -212,6 +236,7 @@ echo ============================= install serial ================== popd mkdir -p $RPM_BUILD_ROOT%{mingw32_bindir} mv $RPM_BUILD_ROOT%{mingw32_libdir}/*.dll $RPM_BUILD_ROOT%{mingw32_bindir} +rm -rf $RPM_BUILD_ROOT%{mingw32_libdir}/cmake %endif %if 0%{?mingw_build_win64} == 1 pushd win64 @@ -225,6 +250,7 @@ echo ============================= install serial ================== popd mkdir -p $RPM_BUILD_ROOT%{mingw64_bindir} mv $RPM_BUILD_ROOT%{mingw64_libdir}/*.dll $RPM_BUILD_ROOT%{mingw64_bindir} +rm -rf $RPM_BUILD_ROOT%{mingw64_libdir}/cmake %endif # Win32 @@ -243,6 +269,7 @@ mv $RPM_BUILD_ROOT%{mingw64_libdir}/*.dll $RPM_BUILD_ROOT%{mingw64_bindir} %{mingw32_bindir}/libboost_coroutine-mt-x32.dll %{mingw32_bindir}/libboost_date_time-x32.dll %{mingw32_bindir}/libboost_date_time-mt-x32.dll +%{mingw32_bindir}/libboost_fiber-mt-x32.dll %{mingw32_bindir}/libboost_filesystem-x32.dll %{mingw32_bindir}/libboost_filesystem-mt-x32.dll %{mingw32_bindir}/libboost_graph-x32.dll @@ -266,6 +293,8 @@ mv $RPM_BUILD_ROOT%{mingw64_libdir}/*.dll $RPM_BUILD_ROOT%{mingw64_bindir} %{mingw32_bindir}/libboost_math_tr1l-x32.dll %{mingw32_bindir}/libboost_math_tr1l-mt-x32.dll %{mingw32_bindir}/libboost_math_tr1-mt-x32.dll +%{mingw32_bindir}/libboost_nowide-x32.dll +%{mingw32_bindir}/libboost_nowide-mt-x32.dll %{mingw32_bindir}/libboost_prg_exec_monitor-x32.dll %{mingw32_bindir}/libboost_prg_exec_monitor-mt-x32.dll %{mingw32_bindir}/libboost_program_options-x32.dll @@ -289,6 +318,7 @@ mv $RPM_BUILD_ROOT%{mingw64_libdir}/*.dll $RPM_BUILD_ROOT%{mingw64_bindir} %{mingw32_bindir}/libboost_type_erasure-mt-x32.dll %{mingw32_bindir}/libboost_unit_test_framework-x32.dll %{mingw32_bindir}/libboost_unit_test_framework-mt-x32.dll +%{mingw32_bindir}/libboost_wave-x32.dll %{mingw32_bindir}/libboost_wave-mt-x32.dll %{mingw32_bindir}/libboost_wserialization-x32.dll %{mingw32_bindir}/libboost_wserialization-mt-x32.dll @@ -304,6 +334,7 @@ mv $RPM_BUILD_ROOT%{mingw64_libdir}/*.dll $RPM_BUILD_ROOT%{mingw64_bindir} %{mingw32_libdir}/libboost_coroutine-mt-x32.dll.a %{mingw32_libdir}/libboost_date_time-x32.dll.a %{mingw32_libdir}/libboost_date_time-mt-x32.dll.a +%{mingw32_libdir}/libboost_fiber-mt-x32.dll.a %{mingw32_libdir}/libboost_filesystem-x32.dll.a %{mingw32_libdir}/libboost_filesystem-mt-x32.dll.a %{mingw32_libdir}/libboost_graph-x32.dll.a @@ -327,6 +358,8 @@ mv $RPM_BUILD_ROOT%{mingw64_libdir}/*.dll $RPM_BUILD_ROOT%{mingw64_bindir} %{mingw32_libdir}/libboost_math_tr1l-x32.dll.a %{mingw32_libdir}/libboost_math_tr1l-mt-x32.dll.a %{mingw32_libdir}/libboost_math_tr1-mt-x32.dll.a +%{mingw32_libdir}/libboost_nowide-x32.dll.a +%{mingw32_libdir}/libboost_nowide-mt-x32.dll.a %{mingw32_libdir}/libboost_prg_exec_monitor-x32.dll.a %{mingw32_libdir}/libboost_prg_exec_monitor-mt-x32.dll.a %{mingw32_libdir}/libboost_program_options-x32.dll.a @@ -350,6 +383,7 @@ mv $RPM_BUILD_ROOT%{mingw64_libdir}/*.dll $RPM_BUILD_ROOT%{mingw64_bindir} %{mingw32_libdir}/libboost_type_erasure-mt-x32.dll.a %{mingw32_libdir}/libboost_unit_test_framework-x32.dll.a %{mingw32_libdir}/libboost_unit_test_framework-mt-x32.dll.a +%{mingw32_libdir}/libboost_wave-x32.dll.a %{mingw32_libdir}/libboost_wave-mt-x32.dll.a %{mingw32_libdir}/libboost_wserialization-x32.dll.a %{mingw32_libdir}/libboost_wserialization-mt-x32.dll.a @@ -367,6 +401,7 @@ mv $RPM_BUILD_ROOT%{mingw64_libdir}/*.dll $RPM_BUILD_ROOT%{mingw64_bindir} %{mingw32_libdir}/libboost_coroutine-mt-x32.a %{mingw32_libdir}/libboost_date_time-x32.a %{mingw32_libdir}/libboost_date_time-mt-x32.a +%{mingw32_libdir}/libboost_fiber-mt-x32.a %{mingw32_libdir}/libboost_filesystem-x32.a %{mingw32_libdir}/libboost_filesystem-mt-x32.a %{mingw32_libdir}/libboost_graph-x32.a @@ -390,6 +425,8 @@ mv $RPM_BUILD_ROOT%{mingw64_libdir}/*.dll $RPM_BUILD_ROOT%{mingw64_bindir} %{mingw32_libdir}/libboost_math_tr1l-x32.a %{mingw32_libdir}/libboost_math_tr1l-mt-x32.a %{mingw32_libdir}/libboost_math_tr1-mt-x32.a +%{mingw32_libdir}/libboost_nowide-x32.a +%{mingw32_libdir}/libboost_nowide-mt-x32.a %{mingw32_libdir}/libboost_prg_exec_monitor-x32.a %{mingw32_libdir}/libboost_prg_exec_monitor-mt-x32.a %{mingw32_libdir}/libboost_program_options-x32.a @@ -413,14 +450,15 @@ mv $RPM_BUILD_ROOT%{mingw64_libdir}/*.dll $RPM_BUILD_ROOT%{mingw64_bindir} %{mingw32_libdir}/libboost_type_erasure-mt-x32.a %{mingw32_libdir}/libboost_unit_test_framework-x32.a %{mingw32_libdir}/libboost_unit_test_framework-mt-x32.a +%{mingw32_libdir}/libboost_wave-x32.a %{mingw32_libdir}/libboost_wave-mt-x32.a %{mingw32_libdir}/libboost_wserialization-x32.a %{mingw32_libdir}/libboost_wserialization-mt-x32.a # static only libraries -%{mingw32_libdir}/libboost_exception-mt-x32.a %{mingw32_libdir}/libboost_exception-x32.a -%{mingw32_libdir}/libboost_test_exec_monitor-mt-x32.a +%{mingw32_libdir}/libboost_exception-mt-x32.a %{mingw32_libdir}/libboost_test_exec_monitor-x32.a +%{mingw32_libdir}/libboost_test_exec_monitor-mt-x32.a # Win64 %files -n mingw64-boost @@ -438,6 +476,7 @@ mv $RPM_BUILD_ROOT%{mingw64_libdir}/*.dll $RPM_BUILD_ROOT%{mingw64_bindir} %{mingw64_bindir}/libboost_coroutine-mt-x64.dll %{mingw64_bindir}/libboost_date_time-x64.dll %{mingw64_bindir}/libboost_date_time-mt-x64.dll +%{mingw64_bindir}/libboost_fiber-mt-x64.dll %{mingw64_bindir}/libboost_filesystem-x64.dll %{mingw64_bindir}/libboost_filesystem-mt-x64.dll %{mingw64_bindir}/libboost_graph-x64.dll @@ -461,6 +500,8 @@ mv $RPM_BUILD_ROOT%{mingw64_libdir}/*.dll $RPM_BUILD_ROOT%{mingw64_bindir} %{mingw64_bindir}/libboost_math_tr1l-x64.dll %{mingw64_bindir}/libboost_math_tr1l-mt-x64.dll %{mingw64_bindir}/libboost_math_tr1-mt-x64.dll +%{mingw64_bindir}/libboost_nowide-x64.dll +%{mingw64_bindir}/libboost_nowide-mt-x64.dll %{mingw64_bindir}/libboost_prg_exec_monitor-x64.dll %{mingw64_bindir}/libboost_prg_exec_monitor-mt-x64.dll %{mingw64_bindir}/libboost_program_options-x64.dll @@ -484,6 +525,7 @@ mv $RPM_BUILD_ROOT%{mingw64_libdir}/*.dll $RPM_BUILD_ROOT%{mingw64_bindir} %{mingw64_bindir}/libboost_type_erasure-mt-x64.dll %{mingw64_bindir}/libboost_unit_test_framework-x64.dll %{mingw64_bindir}/libboost_unit_test_framework-mt-x64.dll +%{mingw64_bindir}/libboost_wave-x64.dll %{mingw64_bindir}/libboost_wave-mt-x64.dll %{mingw64_bindir}/libboost_wserialization-x64.dll %{mingw64_bindir}/libboost_wserialization-mt-x64.dll @@ -499,6 +541,7 @@ mv $RPM_BUILD_ROOT%{mingw64_libdir}/*.dll $RPM_BUILD_ROOT%{mingw64_bindir} %{mingw64_libdir}/libboost_coroutine-mt-x64.dll.a %{mingw64_libdir}/libboost_date_time-x64.dll.a %{mingw64_libdir}/libboost_date_time-mt-x64.dll.a +%{mingw64_libdir}/libboost_fiber-mt-x64.dll.a %{mingw64_libdir}/libboost_filesystem-x64.dll.a %{mingw64_libdir}/libboost_filesystem-mt-x64.dll.a %{mingw64_libdir}/libboost_graph-x64.dll.a @@ -522,6 +565,8 @@ mv $RPM_BUILD_ROOT%{mingw64_libdir}/*.dll $RPM_BUILD_ROOT%{mingw64_bindir} %{mingw64_libdir}/libboost_math_tr1l-x64.dll.a %{mingw64_libdir}/libboost_math_tr1l-mt-x64.dll.a %{mingw64_libdir}/libboost_math_tr1-mt-x64.dll.a +%{mingw64_libdir}/libboost_nowide-x64.dll.a +%{mingw64_libdir}/libboost_nowide-mt-x64.dll.a %{mingw64_libdir}/libboost_prg_exec_monitor-x64.dll.a %{mingw64_libdir}/libboost_prg_exec_monitor-mt-x64.dll.a %{mingw64_libdir}/libboost_program_options-x64.dll.a @@ -545,6 +590,7 @@ mv $RPM_BUILD_ROOT%{mingw64_libdir}/*.dll $RPM_BUILD_ROOT%{mingw64_bindir} %{mingw64_libdir}/libboost_type_erasure-mt-x64.dll.a %{mingw64_libdir}/libboost_unit_test_framework-x64.dll.a %{mingw64_libdir}/libboost_unit_test_framework-mt-x64.dll.a +%{mingw64_libdir}/libboost_wave-x64.dll.a %{mingw64_libdir}/libboost_wave-mt-x64.dll.a %{mingw64_libdir}/libboost_wserialization-x64.dll.a %{mingw64_libdir}/libboost_wserialization-mt-x64.dll.a @@ -562,6 +608,7 @@ mv $RPM_BUILD_ROOT%{mingw64_libdir}/*.dll $RPM_BUILD_ROOT%{mingw64_bindir} %{mingw64_libdir}/libboost_coroutine-mt-x64.a %{mingw64_libdir}/libboost_date_time-x64.a %{mingw64_libdir}/libboost_date_time-mt-x64.a +%{mingw64_libdir}/libboost_fiber-mt-x64.a %{mingw64_libdir}/libboost_filesystem-x64.a %{mingw64_libdir}/libboost_filesystem-mt-x64.a %{mingw64_libdir}/libboost_graph-x64.a @@ -585,6 +632,8 @@ mv $RPM_BUILD_ROOT%{mingw64_libdir}/*.dll $RPM_BUILD_ROOT%{mingw64_bindir} %{mingw64_libdir}/libboost_math_tr1l-x64.a %{mingw64_libdir}/libboost_math_tr1l-mt-x64.a %{mingw64_libdir}/libboost_math_tr1-mt-x64.a +%{mingw64_libdir}/libboost_nowide-x64.a +%{mingw64_libdir}/libboost_nowide-mt-x64.a %{mingw64_libdir}/libboost_prg_exec_monitor-x64.a %{mingw64_libdir}/libboost_prg_exec_monitor-mt-x64.a %{mingw64_libdir}/libboost_program_options-x64.a @@ -608,16 +657,20 @@ mv $RPM_BUILD_ROOT%{mingw64_libdir}/*.dll $RPM_BUILD_ROOT%{mingw64_bindir} %{mingw64_libdir}/libboost_type_erasure-mt-x64.a %{mingw64_libdir}/libboost_unit_test_framework-x64.a %{mingw64_libdir}/libboost_unit_test_framework-mt-x64.a +%{mingw64_libdir}/libboost_wave-x64.a %{mingw64_libdir}/libboost_wave-mt-x64.a %{mingw64_libdir}/libboost_wserialization-x64.a %{mingw64_libdir}/libboost_wserialization-mt-x64.a # static only libraries -%{mingw64_libdir}/libboost_exception-mt-x64.a %{mingw64_libdir}/libboost_exception-x64.a -%{mingw64_libdir}/libboost_test_exec_monitor-mt-x64.a +%{mingw64_libdir}/libboost_exception-mt-x64.a %{mingw64_libdir}/libboost_test_exec_monitor-x64.a +%{mingw64_libdir}/libboost_test_exec_monitor-mt-x64.a %changelog +* Tue Aug 04 2020 Thomas Sailer - 1.73.0-1 +- update to 1.73.0 + * Sat Aug 01 2020 Fedora Release Engineering - 1.69.0-3 - Second attempt - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild diff --git a/sources b/sources index cead2dd..9bda6dc 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (boost_1_69_0.tar.bz2) = d0e9bb858c44880d56c0291afef6a1b011a62f659a2d8f58dcb6147ea0899f9157bd8db3097896618fee0116847ebeac78b6d0f0fec8a92c3469500828bbe552 +SHA512 (boost_1_73_0.tar.bz2) = 86c296511c0766145097625a62bf099c3d155284d250ad6e528e788bc90b2945838498dfe473c6c6c78d1694b6fba8e19f7dee0d064a043841e6231603fff668