2
0
mirror of https://github.com/boostorg/process.git synced 2026-01-20 16:52:14 +00:00

Compare commits

...

16 Commits

Author SHA1 Message Date
Klemens Morgenstern
f6960d5c40 Added probe. 2022-10-21 13:33:37 +08:00
Klemens Morgenstern
292ac5ceb0 Added probe. 2022-10-21 13:24:31 +08:00
Klemens Morgenstern
7422dfc9c8 Added probe. 2022-10-21 13:21:59 +08:00
Klemens Morgenstern
b2c94f02d7 Added probe. 2022-10-21 13:12:35 +08:00
Klemens Morgenstern
31494428ca Added probe. 2022-10-21 12:40:51 +08:00
Klemens Morgenstern
41e3178727 Added probe. 2022-10-21 12:39:36 +08:00
Klemens Morgenstern
4b4019500d Added probe. 2022-10-21 12:37:37 +08:00
Klemens Morgenstern
50ccdf395f Added probe. 2022-10-21 12:35:07 +08:00
Klemens Morgenstern
db1381ada8 Added probe. 2022-10-21 12:28:15 +08:00
Klemens Morgenstern
9fba0a72c9 Added probe. 2022-10-21 12:26:00 +08:00
Klemens Morgenstern
6ced49d6e1 Added probe. 2022-10-21 12:21:03 +08:00
Klemens Morgenstern
a6291c19f6 Added probe. 2022-10-21 12:17:14 +08:00
Klemens Morgenstern
701d161f15 Added probe. 2022-10-21 12:16:08 +08:00
Klemens Morgenstern
0041a0b292 Added probe. 2022-10-21 12:14:51 +08:00
Klemens Morgenstern
e049859d28 Merge branch 'drone5' into freebsd-exp 2022-10-21 12:06:03 +08:00
sdarwin
8f47527724 Drone: update freebsd jobs 2022-10-12 17:42:52 -06:00
2 changed files with 16 additions and 7 deletions

View File

@@ -14,7 +14,8 @@ windowsglobalimage="cppalliance/dronevs2019"
def main(ctx):
return [
freebsd_cxx("gcc 11", "g++11", buildtype="boost", buildscript="drone", image="", freebsd_version="13.1", environment={'B2_TOOLSET': 'gcc-11', 'B2_CXXSTD': '17,20'}, globalenv=globalenv),
freebsd_cxx("gcc 11 freebsd", "g++-11", buildtype="boost", buildscript="drone", freebsd_version="13.1", environment={'B2_TOOLSET': 'gcc-11', 'B2_CXXSTD': '17,20', 'B2_LINKFLAGS': '-Wl,-rpath=/usr/local/lib/gcc11'}, globalenv=globalenv),
freebsd_cxx("clang 14 freebsd", "clang++-14", buildtype="boost", buildscript="drone", freebsd_version="13.1", environment={'B2_TOOLSET': 'clang-14', 'B2_CXXSTD': '17,20'}, globalenv=globalenv),
linux_cxx("docs", "", packages="docbook docbook-xml docbook-xsl xsltproc libsaxonhe-java default-jre-headless flex libfl-dev bison unzip rsync mlocate", image="cppalliance/droneubuntu1804:1", buildtype="docs", buildscript="drone", environment={"COMMENT": "docs"}, globalenv=globalenv),
linux_cxx("asan", "g++-8", packages="g++-8", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'COMMENT': 'asan', 'B2_VARIANT': 'debug', 'B2_TOOLSET': 'gcc-8', 'B2_CXXSTD': '11', 'B2_ASAN': '1', 'B2_DEFINES': 'BOOST_NO_STRESS_TEST=1', 'DRONE_EXTRA_PRIVILEGED': 'True', 'DRONE_JOB_UUID': '356a192b79'}, globalenv=globalenv, privileged=True),
linux_cxx("ubsan", "g++-8", packages="g++-8", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'COMMENT': 'ubsan', 'B2_VARIANT': 'debug', 'B2_TOOLSET': 'gcc-8', 'B2_CXXSTD': '11', 'B2_UBSAN': '1', 'B2_DEFINES': 'BOOST_NO_STRESS_TEST=1', 'B2_LINKFLAGS': '-fuse-ld=gold', 'DRONE_JOB_UUID': '77de68daec'}, globalenv=globalenv),

View File

@@ -153,9 +153,12 @@ struct basic_process_handle_fd_or_signal
void wait(native_exit_code_type &exit_status, error_code &ec)
{
if (pid_ <= 0)
return;
while (::waitpid(pid_, &exit_status, 0) < 0)
int res = 0;
while ((res = ::waitpid(pid_, &exit_status, 0)) < 0)
{
if (errno != EINTR)
{
@@ -163,7 +166,6 @@ struct basic_process_handle_fd_or_signal
break;
}
}
}
void wait(native_exit_code_type &exit_status)
@@ -286,31 +288,37 @@ struct basic_process_handle_fd_or_signal
struct async_wait_op_
{
BOOST_PROCESS_V2_ASIO_NAMESPACE::posix::basic_descriptor<Executor> &descriptor;
BOOST_PROCESS_V2_ASIO_NAMESPACE::posix::basic_stream_descriptor<Executor> &descriptor;
BOOST_PROCESS_V2_ASIO_NAMESPACE::basic_signal_set<Executor> &handle;
pid_type pid_;
bool needs_post = true;
template<typename Self>
void operator()(Self &&self, error_code ec = {}, int = 0)
void operator()(Self &&self, error_code ec = {}, int res = 0)
{
native_exit_code_type exit_code{};
printf("RES : %d -> %s\n", res, ec.message().c_str());
native_exit_code_type exit_code = -1;
int wait_res = -1;
if (pid_ <= 0) // error, complete early
ec = BOOST_PROCESS_V2_ASIO_NAMESPACE::error::bad_descriptor;
else
{
printf("test in %d\n", errno);
wait_res = ::waitpid(pid_, &exit_code, WNOHANG);
if (wait_res == -1)
ec = get_last_error();
else
ec.clear();
}
if (!ec && (wait_res == 0))
{
needs_post = false;
static int res[1] = {0};
if (descriptor.is_open())
descriptor.async_wait(
BOOST_PROCESS_V2_ASIO_NAMESPACE::posix::descriptor_base::wait_read,
BOOST_PROCESS_V2_ASIO_NAMESPACE::posix::stream_descriptor::wait_read,
std::move(self));
else
handle.async_wait(std::move(self));