[1/2] devtools/linux-uapi: conform to kernel headers install

Message ID 20250610151158.209572-2-stephen@networkplumber.org (mailing list archive)
State New
Delegated to: Thomas Monjalon
Headers
Series uapi: script and header update |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Stephen Hemminger June 10, 2025, 3:11 p.m. UTC
The Linux kernel has an existing script to sanitize headers which
uses more steps to clean up the header file. Make the DPDK header
import script use the same regular expression. The kernel script
is GPL-2.0 so ok.

Not necessary for current vduse.h header only but useful if more
headers are added later. Want the distro and DPDK header to
be exact match.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 devtools/linux-uapi.sh | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)
  

Patch

diff --git a/devtools/linux-uapi.sh b/devtools/linux-uapi.sh
index ccd8b6816e..e739bdb1f4 100755
--- a/devtools/linux-uapi.sh
+++ b/devtools/linux-uapi.sh
@@ -79,9 +79,21 @@  import_header()
 fixup_includes()
 {
 	local path=$1
+	local tmpfile=$path.tmp
 
-	sed -i "s|^#include <linux/compiler.h>||g" $path
-	sed -i "s|\<__user[[:space:]]||" $path
+	# script to sanitize see kernel script
+	# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/scripts/headers_install.sh
+
+	sed -E -e '
+	     s/([[:space:](])(__user|__force|__iomem)[[:space:]]/\1/g
+	     s/__attribute_const__([[:space:]]|$)/\1/g
+	     s@^#include <linux/compiler(|_types).h>@@
+	     s/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g
+	     s/(^|[[:space:](])(inline|asm|volatile)([[:space:](]|$)/\1__\2__\3/g
+	    s@#(ifndef|define|endif[[:space:]]*/[*])[[:space:]]*_UAPI@#\1 @' $path >$tmpfile
+
+	unifdef -U__KERNEL__ -D__EXPORTED_HEADERS $tmpfile >$path
+	rm $tmpfile
 
 	# Prepend include path with "uapi/" if the header is imported
 	for include in $(sed -ne 's/^#include <\(.*\)>$/\1/p' $path); do