scripts/clean-includes: Fully skip / ignore files

When clean-includes claims to skip or ignore a file, only the part
that sanitizes use of qemu/osdep.h skips the file.  The part that
looks for duplicate #include does not, and neither does committing to
Git.

The latter can get unrelated stuff included in the commit, but only if
you run clean-includes in a dirty tree, which is unwise.  Messed up
when we added skipping in commit fd3e39a40c "scripts/clean-includes:
Enhance to handle header files".

The former can cause bogus reports for --check-dup-head.  Added in
commit d66253e46a "scripts/clean-includes: added duplicate #include
check", duplicating the prior mistake.

Fix the script to fully skip files.

Fixes: fd3e39a40c ("scripts/clean-includes: Enhance to handle header files")
Fixes: d66253e46a ("scripts/clean-includes: added duplicate #include check")
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20230202133830.2152150-2-armbru@redhat.com>
This commit is contained in:
Markus Armbruster 2023-02-02 14:38:11 +01:00
parent 969d09c3a6
commit aa735872a8
1 changed files with 5 additions and 3 deletions

View File

@ -111,6 +111,7 @@ cat >"$COCCIFILE" <<EOT
)
EOT
files=
for f in "$@"; do
case "$f" in
*.c.inc)
@ -144,6 +145,7 @@ for f in "$@"; do
continue
;;
esac
files="$files $f"
if [ "$MODE" = "c" ]; then
# First, use Coccinelle to add qemu/osdep.h before the first existing include
@ -174,8 +176,8 @@ for f in "$@"; do
done
if [ "$DUPHEAD" = "yes" ]; then
egrep "^[[:space:]]*#[[:space:]]*include" "$@" | tr -d '[:blank:]' \
if [ "$DUPHEAD" = "yes" ] && [ -n "$files" ]; then
egrep "^[[:space:]]*#[[:space:]]*include" $files | tr -d '[:blank:]' \
| sort | uniq -c | awk '{if ($1 > 1) print $0}'
if [ $? -eq 0 ]; then
echo "Found duplicate header file includes. Please check the above files manually."
@ -184,7 +186,7 @@ if [ "$DUPHEAD" = "yes" ]; then
fi
if [ "$GIT" = "yes" ]; then
git add -- "$@"
git add -- $files
git commit --signoff -F - <<EOF
$GITSUBJ: Clean up includes