tools/headers: Pull in stddef.h to uapi to fix BPF selftests build in CI
authorAndrii Nakryiko <andrii@kernel.org>
Wed, 2 Nov 2022 18:25:17 +0000 (11:25 -0700)
committerDaniel Borkmann <daniel@iogearbox.net>
Thu, 3 Nov 2022 12:45:21 +0000 (13:45 +0100)
commita778f5d46b6287ebe26e24b48f3e8079c2db8ed2
treea0e468c9cd6509b9f1860a8b3f04921a812e5891
parentaec1dc972d27c837d1406310dab5170189eb01e5
tools/headers: Pull in stddef.h to uapi to fix BPF selftests build in CI

With recent sync of linux/in.h tools/include headers are now relying on
__DECLARE_FLEX_ARRAY macro, which isn't itself defined inside
tools/include headers anywhere and is instead assumed to be present in
system-wide UAPI header. This breaks isolated environments that don't
have kernel UAPI headers installed system-wide, like BPF CI ([0]).

To fix this, bring in include/uapi/linux/stddef.h into tools/include.
We can't just copy/paste it, though, it has to be processed with
scripts/headers_install.sh, which has a dependency on scripts/unifdef.
So the full command to (re-)generate stddef.h for inclusion into
tools/include directory is:

  $ make scripts_unifdef && \
    cp $KBUILD_OUTPUT/scripts/unifdef scripts/ && \
    scripts/headers_install.sh include/uapi/linux/stddef.h tools/include/uapi/linux/stddef.h

This assumes KBUILD_OUTPUT envvar is set and used for out-of-tree builds.

  [0] https://github.com/kernel-patches/bpf/actions/runs/3379432493/jobs/5610982609

Fixes: 036b8f5b8970 ("tools headers uapi: Update linux/in.h copy")
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Link: https://lore.kernel.org/bpf/20221102182517.2675301-2-andrii@kernel.org
tools/include/uapi/linux/in.h
tools/include/uapi/linux/stddef.h [new file with mode: 0644]