mirror of
https://github.com/microsoft/vcpkg.git
synced 2025-01-15 06:08:07 +08:00
[asio,boost-asio] Fix experimental::coro compile error with MSVC (#32004)
This commit is contained in:
parent
e61fc59376
commit
678323514f
131
ports/asio/fix_coro_compile_error_msvc.patch
Normal file
131
ports/asio/fix_coro_compile_error_msvc.patch
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
diff --git a/asio/include/asio/experimental/impl/coro.hpp b/asio/include/asio/experimental/impl/coro.hpp
|
||||||
|
index a4d8d277..9f01687e 100644
|
||||||
|
--- a/asio/include/asio/experimental/impl/coro.hpp
|
||||||
|
+++ b/asio/include/asio/experimental/impl/coro.hpp
|
||||||
|
@@ -1069,17 +1069,17 @@ struct coro<Yield, Return, Executor, Allocator>::initiate_async_resume
|
||||||
|
std::true_type /* error is noexcept */,
|
||||||
|
std::true_type /* result is void */) //noexcept
|
||||||
|
{
|
||||||
|
- return [this, coro = coro_,
|
||||||
|
+ return [this, coro_promise_ = coro_,
|
||||||
|
h = std::forward<WaitHandler>(handler),
|
||||||
|
exec = std::move(exec)]() mutable
|
||||||
|
{
|
||||||
|
- assert(coro);
|
||||||
|
+ assert(coro_promise_);
|
||||||
|
|
||||||
|
- auto ch = detail::coroutine_handle<promise_type>::from_promise(*coro);
|
||||||
|
+ auto ch = detail::coroutine_handle<promise_type>::from_promise(*coro_promise_);
|
||||||
|
assert(ch && !ch.done());
|
||||||
|
|
||||||
|
- coro->awaited_from = post_coroutine(std::move(exec), std::move(h));
|
||||||
|
- coro->reset_error();
|
||||||
|
+ coro_promise_->awaited_from = post_coroutine(std::move(exec), std::move(h));
|
||||||
|
+ coro_promise_->reset_error();
|
||||||
|
ch.resume();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
@@ -1090,18 +1090,18 @@ struct coro<Yield, Return, Executor, Allocator>::initiate_async_resume
|
||||||
|
std::true_type /* error is noexcept */,
|
||||||
|
std::false_type /* result is void */) //noexcept
|
||||||
|
{
|
||||||
|
- return [coro = coro_,
|
||||||
|
+ return [coro_promise_ = coro_,
|
||||||
|
h = std::forward<WaitHandler>(handler),
|
||||||
|
exec = std::move(exec)]() mutable
|
||||||
|
{
|
||||||
|
- assert(coro);
|
||||||
|
+ assert(coro_promise_);
|
||||||
|
|
||||||
|
- auto ch = detail::coroutine_handle<promise_type>::from_promise(*coro);
|
||||||
|
+ auto ch = detail::coroutine_handle<promise_type>::from_promise(*coro_promise_);
|
||||||
|
assert(ch && !ch.done());
|
||||||
|
|
||||||
|
- coro->awaited_from = detail::post_coroutine(
|
||||||
|
- exec, std::move(h), coro->result_).handle;
|
||||||
|
- coro->reset_error();
|
||||||
|
+ coro_promise_->awaited_from = detail::post_coroutine(
|
||||||
|
+ exec, std::move(h), coro_promise_->result_).handle;
|
||||||
|
+ coro_promise_->reset_error();
|
||||||
|
ch.resume();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
@@ -1111,16 +1111,16 @@ struct coro<Yield, Return, Executor, Allocator>::initiate_async_resume
|
||||||
|
std::false_type /* error is noexcept */,
|
||||||
|
std::true_type /* result is void */)
|
||||||
|
{
|
||||||
|
- return [coro = coro_,
|
||||||
|
+ return [coro_promise_ = coro_,
|
||||||
|
h = std::forward<WaitHandler>(handler),
|
||||||
|
exec = std::move(exec)]() mutable
|
||||||
|
{
|
||||||
|
- if (!coro)
|
||||||
|
+ if (!coro_promise_)
|
||||||
|
return asio::post(exec,
|
||||||
|
asio::append(std::move(h),
|
||||||
|
detail::coro_error<error_type>::invalid()));
|
||||||
|
|
||||||
|
- auto ch = detail::coroutine_handle<promise_type>::from_promise(*coro);
|
||||||
|
+ auto ch = detail::coroutine_handle<promise_type>::from_promise(*coro_promise_);
|
||||||
|
if (!ch)
|
||||||
|
return asio::post(exec,
|
||||||
|
asio::append(std::move(h),
|
||||||
|
@@ -1131,9 +1131,9 @@ struct coro<Yield, Return, Executor, Allocator>::initiate_async_resume
|
||||||
|
detail::coro_error<error_type>::done()));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
- coro->awaited_from = detail::post_coroutine(
|
||||||
|
- exec, std::move(h), coro->error_).handle;
|
||||||
|
- coro->reset_error();
|
||||||
|
+ coro_promise_->awaited_from = detail::post_coroutine(
|
||||||
|
+ exec, std::move(h), coro_promise_->error_).handle;
|
||||||
|
+ coro_promise_->reset_error();
|
||||||
|
ch.resume();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
@@ -1144,17 +1144,17 @@ struct coro<Yield, Return, Executor, Allocator>::initiate_async_resume
|
||||||
|
std::false_type /* error is noexcept */,
|
||||||
|
std::false_type /* result is void */)
|
||||||
|
{
|
||||||
|
- return [coro = coro_,
|
||||||
|
+ return [coro_promise_ = coro_,
|
||||||
|
h = std::forward<WaitHandler>(handler),
|
||||||
|
exec = std::move(exec)]() mutable
|
||||||
|
{
|
||||||
|
- if (!coro)
|
||||||
|
+ if (!coro_promise_)
|
||||||
|
return asio::post(exec,
|
||||||
|
asio::append(std::move(h),
|
||||||
|
detail::coro_error<error_type>::invalid(), result_type{}));
|
||||||
|
|
||||||
|
auto ch =
|
||||||
|
- detail::coroutine_handle<promise_type>::from_promise(*coro);
|
||||||
|
+ detail::coroutine_handle<promise_type>::from_promise(*coro_promise_);
|
||||||
|
if (!ch)
|
||||||
|
return asio::post(exec,
|
||||||
|
asio::append(std::move(h),
|
||||||
|
@@ -1165,9 +1165,9 @@ struct coro<Yield, Return, Executor, Allocator>::initiate_async_resume
|
||||||
|
detail::coro_error<error_type>::done(), result_type{}));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
- coro->awaited_from = detail::post_coroutine(
|
||||||
|
- exec, std::move(h), coro->error_, coro->result_).handle;
|
||||||
|
- coro->reset_error();
|
||||||
|
+ coro_promise_->awaited_from = detail::post_coroutine(
|
||||||
|
+ exec, std::move(h), coro_promise_->error_, coro_promise_->result_).handle;
|
||||||
|
+ coro_promise_->reset_error();
|
||||||
|
ch.resume();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
@@ -1203,9 +1203,9 @@ struct coro<Yield, Return, Executor, Allocator>::initiate_async_resume
|
||||||
|
[h = handle(exec, std::forward<WaitHandler>(handler),
|
||||||
|
std::integral_constant<bool, is_noexcept>{},
|
||||||
|
std::is_void<result_type>{}),
|
||||||
|
- in = std::forward<Input>(input), coro = coro_]() mutable
|
||||||
|
+ in = std::forward<Input>(input), coro_promise_ = coro_]() mutable
|
||||||
|
{
|
||||||
|
- coro->input_ = std::move(in);
|
||||||
|
+ coro_promise_->input_ = std::move(in);
|
||||||
|
std::move(h)();
|
||||||
|
});
|
||||||
|
}
|
@ -6,6 +6,7 @@ vcpkg_from_github(
|
|||||||
REF asio-1-28-0
|
REF asio-1-28-0
|
||||||
SHA512 0d635c40a28b6427e2cb6b9c89ab53dba7d3a237df2279148ca05fa899d6f8039a131929230e5ca1dbc7477be784e3da9a6cb68456cbf194178510621556e467
|
SHA512 0d635c40a28b6427e2cb6b9c89ab53dba7d3a237df2279148ca05fa899d6f8039a131929230e5ca1dbc7477be784e3da9a6cb68456cbf194178510621556e467
|
||||||
HEAD_REF master
|
HEAD_REF master
|
||||||
|
PATCHES fix_coro_compile_error_msvc.patch #upstream PR: https://github.com/chriskohlhoff/asio/pull/1313
|
||||||
)
|
)
|
||||||
|
|
||||||
# Always use "ASIO_STANDALONE" to avoid boost dependency
|
# Always use "ASIO_STANDALONE" to avoid boost dependency
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "asio",
|
"name": "asio",
|
||||||
"version": "1.28.0",
|
"version": "1.28.0",
|
||||||
|
"port-version": 1,
|
||||||
"description": "Asio is a cross-platform C++ library for network and low-level I/O programming that provides developers with a consistent asynchronous model using a modern C++ approach.",
|
"description": "Asio is a cross-platform C++ library for network and low-level I/O programming that provides developers with a consistent asynchronous model using a modern C++ approach.",
|
||||||
"homepage": "https://github.com/chriskohlhoff/asio",
|
"homepage": "https://github.com/chriskohlhoff/asio",
|
||||||
"documentation": "https://think-async.com/Asio/asio-1.28.0/doc/",
|
"documentation": "https://think-async.com/Asio/asio-1.28.0/doc/",
|
||||||
|
131
ports/boost-asio/fix_coro_compile_error_msvc.patch
Normal file
131
ports/boost-asio/fix_coro_compile_error_msvc.patch
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
diff --git a/include/boost/asio/experimental/impl/coro.hpp b/include/boost/asio/experimental/impl/coro.hpp
|
||||||
|
index ec7d956e..ba219453 100644
|
||||||
|
--- a/include/boost/asio/experimental/impl/coro.hpp
|
||||||
|
+++ b/include/boost/asio/experimental/impl/coro.hpp
|
||||||
|
@@ -1070,17 +1070,17 @@ struct coro<Yield, Return, Executor, Allocator>::initiate_async_resume
|
||||||
|
std::true_type /* error is noexcept */,
|
||||||
|
std::true_type /* result is void */) //noexcept
|
||||||
|
{
|
||||||
|
- return [this, coro = coro_,
|
||||||
|
+ return [this, coro_promise_ = coro_,
|
||||||
|
h = std::forward<WaitHandler>(handler),
|
||||||
|
exec = std::move(exec)]() mutable
|
||||||
|
{
|
||||||
|
- assert(coro);
|
||||||
|
+ assert(coro_promise_);
|
||||||
|
|
||||||
|
- auto ch = detail::coroutine_handle<promise_type>::from_promise(*coro);
|
||||||
|
+ auto ch = detail::coroutine_handle<promise_type>::from_promise(*coro_promise_);
|
||||||
|
assert(ch && !ch.done());
|
||||||
|
|
||||||
|
- coro->awaited_from = post_coroutine(std::move(exec), std::move(h));
|
||||||
|
- coro->reset_error();
|
||||||
|
+ coro_promise_->awaited_from = post_coroutine(std::move(exec), std::move(h));
|
||||||
|
+ coro_promise_->reset_error();
|
||||||
|
ch.resume();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
@@ -1091,18 +1091,18 @@ struct coro<Yield, Return, Executor, Allocator>::initiate_async_resume
|
||||||
|
std::true_type /* error is noexcept */,
|
||||||
|
std::false_type /* result is void */) //noexcept
|
||||||
|
{
|
||||||
|
- return [coro = coro_,
|
||||||
|
+ return [coro_promise_ = coro_,
|
||||||
|
h = std::forward<WaitHandler>(handler),
|
||||||
|
exec = std::move(exec)]() mutable
|
||||||
|
{
|
||||||
|
- assert(coro);
|
||||||
|
+ assert(coro_promise_);
|
||||||
|
|
||||||
|
- auto ch = detail::coroutine_handle<promise_type>::from_promise(*coro);
|
||||||
|
+ auto ch = detail::coroutine_handle<promise_type>::from_promise(*coro_promise_);
|
||||||
|
assert(ch && !ch.done());
|
||||||
|
|
||||||
|
- coro->awaited_from = detail::post_coroutine(
|
||||||
|
- exec, std::move(h), coro->result_).handle;
|
||||||
|
- coro->reset_error();
|
||||||
|
+ coro_promise_->awaited_from = detail::post_coroutine(
|
||||||
|
+ exec, std::move(h), coro_promise_->result_).handle;
|
||||||
|
+ coro_promise_->reset_error();
|
||||||
|
ch.resume();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
@@ -1112,16 +1112,16 @@ struct coro<Yield, Return, Executor, Allocator>::initiate_async_resume
|
||||||
|
std::false_type /* error is noexcept */,
|
||||||
|
std::true_type /* result is void */)
|
||||||
|
{
|
||||||
|
- return [coro = coro_,
|
||||||
|
+ return [coro_promise_ = coro_,
|
||||||
|
h = std::forward<WaitHandler>(handler),
|
||||||
|
exec = std::move(exec)]() mutable
|
||||||
|
{
|
||||||
|
- if (!coro)
|
||||||
|
+ if (!coro_promise_)
|
||||||
|
return boost::asio::post(exec,
|
||||||
|
boost::asio::append(std::move(h),
|
||||||
|
detail::coro_error<error_type>::invalid()));
|
||||||
|
|
||||||
|
- auto ch = detail::coroutine_handle<promise_type>::from_promise(*coro);
|
||||||
|
+ auto ch = detail::coroutine_handle<promise_type>::from_promise(*coro_promise_);
|
||||||
|
if (!ch)
|
||||||
|
return boost::asio::post(exec,
|
||||||
|
boost::asio::append(std::move(h),
|
||||||
|
@@ -1132,9 +1132,9 @@ struct coro<Yield, Return, Executor, Allocator>::initiate_async_resume
|
||||||
|
detail::coro_error<error_type>::done()));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
- coro->awaited_from = detail::post_coroutine(
|
||||||
|
- exec, std::move(h), coro->error_).handle;
|
||||||
|
- coro->reset_error();
|
||||||
|
+ coro_promise_->awaited_from = detail::post_coroutine(
|
||||||
|
+ exec, std::move(h), coro_promise_->error_).handle;
|
||||||
|
+ coro_promise_->reset_error();
|
||||||
|
ch.resume();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
@@ -1145,17 +1145,17 @@ struct coro<Yield, Return, Executor, Allocator>::initiate_async_resume
|
||||||
|
std::false_type /* error is noexcept */,
|
||||||
|
std::false_type /* result is void */)
|
||||||
|
{
|
||||||
|
- return [coro = coro_,
|
||||||
|
+ return [coro_promise_ = coro_,
|
||||||
|
h = std::forward<WaitHandler>(handler),
|
||||||
|
exec = std::move(exec)]() mutable
|
||||||
|
{
|
||||||
|
- if (!coro)
|
||||||
|
+ if (!coro_promise_)
|
||||||
|
return boost::asio::post(exec,
|
||||||
|
boost::asio::append(std::move(h),
|
||||||
|
detail::coro_error<error_type>::invalid(), result_type{}));
|
||||||
|
|
||||||
|
auto ch =
|
||||||
|
- detail::coroutine_handle<promise_type>::from_promise(*coro);
|
||||||
|
+ detail::coroutine_handle<promise_type>::from_promise(*coro_promise_);
|
||||||
|
if (!ch)
|
||||||
|
return boost::asio::post(exec,
|
||||||
|
boost::asio::append(std::move(h),
|
||||||
|
@@ -1166,9 +1166,9 @@ struct coro<Yield, Return, Executor, Allocator>::initiate_async_resume
|
||||||
|
detail::coro_error<error_type>::done(), result_type{}));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
- coro->awaited_from = detail::post_coroutine(
|
||||||
|
- exec, std::move(h), coro->error_, coro->result_).handle;
|
||||||
|
- coro->reset_error();
|
||||||
|
+ coro_promise_->awaited_from = detail::post_coroutine(
|
||||||
|
+ exec, std::move(h), coro_promise_->error_, coro_promise_->result_).handle;
|
||||||
|
+ coro_promise_->reset_error();
|
||||||
|
ch.resume();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
@@ -1204,9 +1204,9 @@ struct coro<Yield, Return, Executor, Allocator>::initiate_async_resume
|
||||||
|
[h = handle(exec, std::forward<WaitHandler>(handler),
|
||||||
|
std::integral_constant<bool, is_noexcept>{},
|
||||||
|
std::is_void<result_type>{}),
|
||||||
|
- in = std::forward<Input>(input), coro = coro_]() mutable
|
||||||
|
+ in = std::forward<Input>(input), coro_promise_ = coro_]() mutable
|
||||||
|
{
|
||||||
|
- coro->input_ = std::move(in);
|
||||||
|
+ coro_promise_->input_ = std::move(in);
|
||||||
|
std::move(h)();
|
||||||
|
});
|
||||||
|
}
|
@ -6,7 +6,9 @@ vcpkg_from_github(
|
|||||||
REF boost-1.82.0
|
REF boost-1.82.0
|
||||||
SHA512 d54fd77ca7996da138b10408df1eae28bbcae0c6475467cc19837bf6f6624c38ad7f9e1eec87ceae27f516583b204fdbaeb04daad7cc28e6aeec02ab5f188731
|
SHA512 d54fd77ca7996da138b10408df1eae28bbcae0c6475467cc19837bf6f6624c38ad7f9e1eec87ceae27f516583b204fdbaeb04daad7cc28e6aeec02ab5f188731
|
||||||
HEAD_REF master
|
HEAD_REF master
|
||||||
PATCHES windows_alloca_header.patch
|
PATCHES
|
||||||
|
windows_alloca_header.patch
|
||||||
|
fix_coro_compile_error_msvc.patch #upstream PR: https://github.com/chriskohlhoff/asio/pull/1313
|
||||||
)
|
)
|
||||||
|
|
||||||
include(${CURRENT_INSTALLED_DIR}/share/boost-vcpkg-helpers/boost-modular-headers.cmake)
|
include(${CURRENT_INSTALLED_DIR}/share/boost-vcpkg-helpers/boost-modular-headers.cmake)
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"$comment": "Automatically generated by scripts/boost/generate-ports.ps1",
|
"$comment": "Automatically generated by scripts/boost/generate-ports.ps1",
|
||||||
"name": "boost-asio",
|
"name": "boost-asio",
|
||||||
"version": "1.82.0",
|
"version": "1.82.0",
|
||||||
"port-version": 2,
|
"port-version": 3,
|
||||||
"description": "Boost asio module",
|
"description": "Boost asio module",
|
||||||
"homepage": "https://github.com/boostorg/asio",
|
"homepage": "https://github.com/boostorg/asio",
|
||||||
"license": "BSL-1.0",
|
"license": "BSL-1.0",
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
{
|
{
|
||||||
"versions": [
|
"versions": [
|
||||||
|
{
|
||||||
|
"git-tree": "726d66784925af6062a5a8f285c76dab2469572f",
|
||||||
|
"version": "1.28.0",
|
||||||
|
"port-version": 1
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"git-tree": "7dde6674d23759f187d73d08f3bd869562a41e8d",
|
"git-tree": "7dde6674d23759f187d73d08f3bd869562a41e8d",
|
||||||
"version": "1.28.0",
|
"version": "1.28.0",
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
{
|
{
|
||||||
"versions": [
|
"versions": [
|
||||||
|
{
|
||||||
|
"git-tree": "2ae81c27afef052cdab26f3bbadb1154905cfecc",
|
||||||
|
"version": "1.82.0",
|
||||||
|
"port-version": 3
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"git-tree": "12dc4325ca29b508676211dfadc95ff688a00395",
|
"git-tree": "12dc4325ca29b508676211dfadc95ff688a00395",
|
||||||
"version": "1.82.0",
|
"version": "1.82.0",
|
||||||
|
@ -234,7 +234,7 @@
|
|||||||
},
|
},
|
||||||
"asio": {
|
"asio": {
|
||||||
"baseline": "1.28.0",
|
"baseline": "1.28.0",
|
||||||
"port-version": 0
|
"port-version": 1
|
||||||
},
|
},
|
||||||
"asio-grpc": {
|
"asio-grpc": {
|
||||||
"baseline": "2.5.1",
|
"baseline": "2.5.1",
|
||||||
@ -650,7 +650,7 @@
|
|||||||
},
|
},
|
||||||
"boost-asio": {
|
"boost-asio": {
|
||||||
"baseline": "1.82.0",
|
"baseline": "1.82.0",
|
||||||
"port-version": 2
|
"port-version": 3
|
||||||
},
|
},
|
||||||
"boost-assert": {
|
"boost-assert": {
|
||||||
"baseline": "1.82.0",
|
"baseline": "1.82.0",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user