Description of problem:
The nginx build is broken because of errors including <linux/aio_abi.h>
Version-Release number of selected component (if applicable):
kernel-headers-4.18.0-0.rc4.git4.1.fc29.x86_64
How reproducible:
always
Steps to Reproduce:
1.echo 'int f;' | gcc -include linux/aio_abi.h -xc -c - -o /dev/null
Actual results:
/usr/include/asm/signal.h:127:2: error: unknown type name ‘size_t’
size_t ss_size;
^~~~~~
In file included from <command-line>:32:
/usr/include/linux/aio_abi.h:115:2: error: unknown type name ‘size_t’
size_t sigsetsize;
^~~~~~
Expected results:
no errors, as in Fedora 28 kernel-headers-4.17.4-200.fc28.x86_64)
Additional info:
echo 'int f;' | gcc -include sys/types.h -include linux/aio_abi.h -xc -c - -o /dev/null
fails differently
In file included from /usr/include/asm/signal.h:7,
from /usr/include/linux/signal.h:5,
from /usr/include/linux/aio_abi.h:32,
from <command-line>:32:
/usr/include/linux/time.h:16:8: error: redefinition of ‘struct timeval’
struct timeval {
^~~~~~~
In file included from /usr/include/sys/select.h:37,
from /usr/include/sys/types.h:196,
from <command-line>:32:
/usr/include/bits/types/struct_timeval.h:8:8: note: originally defined here
struct timeval
^~~~~~~
In file included from /usr/include/linux/signal.h:5,
from /usr/include/linux/aio_abi.h:32,
from <command-line>:32:
/usr/include/asm/signal.h:16:23: error: conflicting types for ‘sigset_t’
typedef unsigned long sigset_t;
^~~~~~~~
In file included from /usr/include/sys/select.h:33,
from /usr/include/sys/types.h:196,
from <command-line>:32:
/usr/include/bits/types/sigset_t.h:7:20: note: previous declaration of ‘sigset_t’ was here
typedef __sigset_t sigset_t;
^~~~~~~~
nginx is using this for io_submit, per io_submit(2) this seems to be a valid way to include the header:
#include <linux/aio_abi.h> /* Defines needed types */
int io_submit(aio_context_t ctx_id, long nr, struct iocb **iocbpp);