[ https://issues.apache.org/jira/browse/THRIFT-5666?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Christopher Friedt updated THRIFT-5666: --------------------------------------- Description: Multiple errors of this form when *HAVE_POLL_H* is defined but *HAVE_SYS_POLL_H* is not defined. Technically, the correct dependency here should be {*}HAVE_POLL_H{*}, because that is the actual header in [the POSIX spec|https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/poll.h.html]. {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] was: Multiple errors of this form when *HAVE_POLL_H* is defined but *HAVE_SYS_POLL_H* is not defined. Technically, the correct dependency here should be {*}HAVE_POLL_H{*}, because that is the actual header in [the POSIX spec|[https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/poll.h.html]]. {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] > lib: cpp: build fails when non-standard sys/poll.h is not present > ----------------------------------------------------------------- > > 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. Technically, the correct dependency here > should be {*}HAVE_POLL_H{*}, because that is the actual header in [the POSIX > spec|https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/poll.h.html]. > > {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)