[
https://issues.apache.org/jira/browse/THRIFT-5666?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Christopher Friedt updated THRIFT-5666:
---------------------------------------
Summary: lib: cpp: build fails when (was: lib: cpp: prefer poll.h over
sys/poll.h)
> lib: cpp: build fails when
> ---------------------------
>
> Key: THRIFT-5666
> URL: https://issues.apache.org/jira/browse/THRIFT-5666
> Project: Thrift
> Issue Type: Bug
> Components: C++ - Library
> Reporter: Christopher Friedt
> Assignee: Christopher Friedt
> Priority: Trivial
> Time Spent: 40m
> Remaining Estimate: 0h
>
> Multiple errors of this form when *HAVE_POLL_H* is defined but
> *HAVE_SYS_POLL_H* is not defined.
>
> {code:java}
> /Users/cfriedt/workspace/zephyrproject/modules/lib/thrift/.upstream/lib/cpp/src/thrift/transport/TServerSocket.cpp:
> In member function 'virtual
> std::shared_ptr<apache::thrift::transport::TTransport>
> apache::thrift::transport::TServerSocket::acceptImpl()':
> /Users/cfriedt/workspace/zephyrproject/modules/lib/thrift/.upstream/lib/cpp/src/thrift/transport/TServerSocket.cpp:597:24:
> error: elements of array
> 'apache::thrift::transport::TServerSocket::acceptImpl()::pollfd fds [2]' have
> incomplete type
> 597 | struct THRIFT_POLLFD fds[2];
> | ^~~
> /Users/cfriedt/workspace/zephyrproject/modules/lib/thrift/.upstream/lib/cpp/src/thrift/transport/TServerSocket.cpp:597:24:
> error: storage size of 'fds' isn't known
> In file included from
> /Users/cfriedt/workspace/zephyrproject/modules/lib/thrift/.upstream/lib/cpp/src/thrift/transport/TServerSocket.cpp:50:
> /Users/cfriedt/workspace/zephyrproject/modules/lib/thrift/.upstream/lib/cpp/src/thrift/transport/PlatformSocket.h:123:26:
> error: 'POLLIN' was not declared in this scope
> 123 | # define THRIFT_POLLIN POLLIN
> | ^~~~~~
> /Users/cfriedt/workspace/zephyrproject/modules/lib/thrift/.upstream/lib/cpp/src/thrift/transport/TServerSocket.cpp:605:21:
> note: in expansion of macro 'THRIFT_POLLIN'
> 605 | fds[0].events = THRIFT_POLLIN;
> | ^~~~~~~~~~~~~
> /Users/cfriedt/workspace/zephyrproject/modules/lib/thrift/.upstream/lib/cpp/src/thrift/transport/PlatformSocket.h:121:23:
> error: 'poll' was not declared in this scope; did you mean 'k_poll'?
> 121 | # define THRIFT_POLL poll
> | ^~~~
> /Users/cfriedt/workspace/zephyrproject/modules/lib/thrift/.upstream/lib/cpp/src/thrift/transport/TServerSocket.cpp:614:15:
> note: in expansion of macro 'THRIFT_POLL'
> 614 | int ret = THRIFT_POLL(fds, 2, accTimeout_);
> | ^~~~~~~~~~~{code}
> Looks as though it affects the following files, and the problem is obvious
> (they don't include the correct header {*}<poll.h>{*}).
> * lib/cpp/src/thrift/transport/TNonblockingServerSocket.cpp
> * lib/cpp/src/thrift/transport/TSSLSocket.cpp
> * lib/cpp/src/thrift/transport/TServerSocket.cpp
> * lib/cpp/src/thrift/transport/TSocket.cpp
> The *sys/poll.h* header is not actually where *poll(2)* must be defined
> according to [the POSIX
> spec|[https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/poll.h.html]],
> but the sources above seem to assume that.
> However, we shouldn't simply erase use of *sys/poll.h* everywhere. There may
> be the case where some non-POSIX compliant platform uses that instead of
> {*}<poll.h>{*}.
> PR is here
> [https://github.com/apache/thrift/pull/2723]
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)