update-linux-headers: fix forwarding to asm-generic headers

Afer commit 3efc75ad9d ("scripts/update-linux-headers.sh: Remove
temporary directory inbetween", 2024-05-29), updating linux-headers/
results in errors such as

   cp: cannot stat '/tmp/tmp.1A1Eejh1UE/headers/include/asm/bitsperlong.h': No such file or directory

because Loongarch does not have an asm/bitsperlong.h file and uses the
generic version.  Before commit 3efc75ad9d, the missing file would
incorrectly cause stale files to be included in linux-headers/.  The files
were never committed to qemu.git, but were wrong nevertheless. The build
would just use the system version of the files, which is opposite to
the idea of importing Linux header files into QEMU's tree.

Create forwarding headers, resembling the ones that are generated during a
kernel build by scripts/Makefile.asm-generic, if a file is only installed
under include/asm-generic/.

Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2024-06-03 13:49:49 +02:00
parent 7604bbc2d8
commit ef7c70f020

View File

@ -118,7 +118,14 @@ for arch in $ARCHLIST; do
rm -rf "$output/linux-headers/asm-$arch"
mkdir -p "$output/linux-headers/asm-$arch"
for header in kvm.h unistd.h bitsperlong.h mman.h; do
cp "$hdrdir/include/asm/$header" "$output/linux-headers/asm-$arch"
if test -f "$hdrdir/include/asm/$header"; then
cp "$hdrdir/include/asm/$header" "$output/linux-headers/asm-$arch"
elif test -f "$hdrdir/include/asm-generic/$header"; then
# not installed as <asm/$header>, but used as such in kernel sources
cat <<EOF >$output/linux-headers/asm-$arch/$header
#include <asm-generic/$header>
EOF
fi
done
if [ $arch = mips ]; then