package/websocketpp: fix build with C++20
PATCH 1/1 package/websocketpp: fix build with C++20
websocketpp had some ill-formed usage of template parameters which was finally removed in C++20. Hence build fails when building with C++20 support enabled.
The patch is already in the develop branch but no new release was done.
--- .../websocketpp/0001-fix_cpp20_build.patch | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 package/websocketpp/0001-fix_cpp20_build.patch
package/websocketpp/0001-fix_cpp20_build.patch new file +108 -0
@@ -0,0 +1,108 @@ +From 3197a520eb4c1e4754860441918a5930160373eb Mon Sep 17 00:00:00 2001 +From: Peter Thorson <[email protected]> +Date: Tue, 29 Jun 2021 09:13:12 -0500 +Subject: [PATCH] [core] Remove the use of simple template ids as they have + been removed in c++20. + https://timsong-cpp.github.io/cppwp/n4861/diff.cpp17.class#2 references #991 + +Signed-off-by: Michael Nosthoff <[email protected]> +Upstream: https://github.com/zaphoyd/websocketpp/commit/3197a520eb4c1e4754860441918a5930160373eb +--- + websocketpp/endpoint.hpp | 2 +- + websocketpp/logger/basic.hpp | 14 +++++++------- + websocketpp/roles/server_endpoint.hpp | 6 +++--- + 3 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/websocketpp/endpoint.hpp b/websocketpp/endpoint.hpp +index 825eaa46d..10f525689 100644 +--- a/websocketpp/endpoint.hpp ++++ b/websocketpp/endpoint.hpp +@@ -111,7 +111,7 @@ class endpoint : public config::transport_type, public config::endpoint_base { + + + /// Destructor +- ~endpoint<connection,config>() {} ++ ~endpoint() {} + + #ifdef _WEBSOCKETPP_DEFAULT_DELETE_FUNCTIONS_ + // no copy constructor because endpoints are not copyable +diff --git a/websocketpp/logger/basic.hpp b/websocketpp/logger/basic.hpp +index 84514130e..4c9d83649 100644 +--- a/websocketpp/logger/basic.hpp ++++ b/websocketpp/logger/basic.hpp +@@ -58,33 +58,33 @@ namespace log { + template <typename concurrency, typename names> + class basic { + public: +- basic<concurrency,names>(channel_type_hint::value h = ++ basic(channel_type_hint::value h = + channel_type_hint::access) + : m_static_channels(0xffffffff) + , m_dynamic_channels(0) + , m_out(h == channel_type_hint::error ? &std::cerr : &std::cout) {} + +- basic<concurrency,names>(std::ostream * out) ++ basic(std::ostream * out) + : m_static_channels(0xffffffff) + , m_dynamic_channels(0) + , m_out(out) {} + +- basic<concurrency,names>(level c, channel_type_hint::value h = ++ basic(level c, channel_type_hint::value h = + channel_type_hint::access) + : m_static_channels(c) + , m_dynamic_channels(0) + , m_out(h == channel_type_hint::error ? &std::cerr : &std::cout) {} + +- basic<concurrency,names>(level c, std::ostream * out) ++ basic(level c, std::ostream * out) + : m_static_channels(c) + , m_dynamic_channels(0) + , m_out(out) {} + + /// Destructor +- ~basic<concurrency,names>() {} ++ ~basic() {} + + /// Copy constructor +- basic<concurrency,names>(basic<concurrency,names> const & other) ++ basic(basic<concurrency,names> const & other) + : m_static_channels(other.m_static_channels) + , m_dynamic_channels(other.m_dynamic_channels) + , m_out(other.m_out) +@@ -97,7 +97,7 @@ class basic { + + #ifdef _WEBSOCKETPP_MOVE_SEMANTICS_ + /// Move constructor +- basic<concurrency,names>(basic<concurrency,names> && other) ++ basic(basic<concurrency,names> && other) + : m_static_channels(other.m_static_channels) + , m_dynamic_channels(other.m_dynamic_channels) + , m_out(other.m_out) +diff --git a/websocketpp/roles/server_endpoint.hpp b/websocketpp/roles/server_endpoint.hpp +index 4a5865eff..04fee18f9 100644 +--- a/websocketpp/roles/server_endpoint.hpp ++++ b/websocketpp/roles/server_endpoint.hpp +@@ -75,11 +75,11 @@ class server : public endpoint<connection<config>,config> { + } + + /// Destructor +- ~server<config>() {} ++ ~server() {} + + #ifdef _WEBSOCKETPP_DEFAULT_DELETE_FUNCTIONS_ + // no copy constructor because endpoints are not copyable +- server<config>(server<config> &) = delete; ++ server(server<config> &) = delete; + + // no copy assignment operator because endpoints are not copyable + server<config> & operator=(server<config> const &) = delete; +@@ -87,7 +87,7 @@ class server : public endpoint<connection<config>,config> { + + #ifdef _WEBSOCKETPP_MOVE_SEMANTICS_ + /// Move constructor +- server<config>(server<config> && o) : endpoint<connection<config>,config>(std::move(o)) {} ++ server(server<config> && o) : endpoint<connection<config>,config>(std::move(o)) {} + + #ifdef _WEBSOCKETPP_DEFAULT_DELETE_FUNCTIONS_ + // no move assignment operator because of const member variables
Signature · 6 lines
2.34.1 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Quoted 11 lines · On Fri, 3 Nov 2023 12:16:12 +0100 Michael Nosthoff via buildroot…
websocketpp had some ill-formed usage of template parameters which was finally removed in C++20. Hence build fails when building with C++20 support enabled.
The patch is already in the develop branch but no new release was done.
Signed-off-by Michael Nosthoff <[email protected]>--- .../websocketpp/0001-fix_cpp20_build.patch | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 package/websocketpp/0001-fix_cpp20_build.patch
Since there are no autobuilder failures for this, could you provide a defconfig that reproduces the build issue?
Best regards,
Thomas
Signature · 7 lines
Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Hi Thomas,
Quoted 7 lines · Thomas Petazzoni
On Fri, 3 Nov 2023 12:16:12 +0100
Michael Nosthoff via buildroot <[email protected]> wrote:Since there are no autobuilder failures for this, could you provide a defconfig that reproduces the build issue?
Since this is a Header Only Lib and we only have one other package depending on it I don't think there is a defconfig which provokes this.
I stumbled across this issue when I started bumping an internal project to C++20. This issue triggered quite some bug reports in the project [0] and there are backports to other package managers like vcpkg [1] and conan [2].
So, as buildroot is in this case also more or less acting like a package manager when generating the SDK I thought it makes sense to apply this patch here as well.
Regards,
Michael
[0] https://github.com/zaphoyd/websocketpp/pull/1060
[1] https://github.com/microsoft/vcpkg/pull/23669
[2] https://github.com/conan-io/conan-center-index/pull/15295
Quoted 8 lines
Best regards,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
Hello Michael,
Quoted 11 lines · On Fri, 3 Nov 2023 12:16:12 +0100 Michael Nosthoff via buildroot…
websocketpp had some ill-formed usage of template parameters which was finally removed in C++20. Hence build fails when building with C++20 support enabled.
The patch is already in the develop branch but no new release was done.
Signed-off-by Michael Nosthoff <[email protected]>--- .../websocketpp/0001-fix_cpp20_build.patch | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 package/websocketpp/0001-fix_cpp20_build.patch
Thanks a lot, I have extended the commit log with the very useful details you provided as a reply to my question, and applied to master. Thanks!
Thomas
Signature · 7 lines
Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Quoted 18 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Thomas" == Thomas Petazzoni via buildroot <[email protected]> writes:
Hello Michael,
Quoted 11 lines · On Fri, 3 Nov 2023 12:16:12 +0100 Michael Nosthoff via buildroot…
websocketpp had some ill-formed usage of template parameters which was finally removed in C++20. Hence build fails when building with C++20 support enabled.
The patch is already in the develop branch but no new release was done.
Signed-off-by Michael Nosthoff <[email protected]>---
.../websocketpp/0001-fix_cpp20_build.patch| 108 ++++++++++++++++++1 file changed, 108 insertions(+)create mode 100644
package/websocketpp/0001-fix_cpp20_build.patch
Quoted 3 lines
Thanks a lot, I have extended the commit log with the very useful details you provided as a reply to my question, and applied to master. Thanks!
Committed to 2023.02.x and 2023.08.x, thanks.
Signature · 5 lines
Bye, Peter Korsgaard _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot