On Wed, Jul 17 2024, Stefano Garzarella <sgarz...@redhat.com> wrote: > If a file imported from Linux is touched, emit a warning and suggest > using scripts/update-linux-headers.sh > > Signed-off-by: Stefano Garzarella <sgarz...@redhat.com> > --- > scripts/checkpatch.pl | 14 ++++++++++++-- > 1 file changed, 12 insertions(+), 2 deletions(-) > > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl > index ff373a7083..b0e8266fa2 100755 > --- a/scripts/checkpatch.pl > +++ b/scripts/checkpatch.pl > @@ -1374,6 +1374,7 @@ sub process { > my $in_header_lines = $file ? 0 : 1; > my $in_commit_log = 0; #Scanning lines before patch > my $reported_maintainer_file = 0; > + my $reported_imported_file = 0; > my $non_utf8_charset = 0; > > our @report = (); > @@ -1673,8 +1674,17 @@ sub process { > # ignore non-hunk lines and lines being removed > next if (!$hunk_line || $line =~ /^-/); > > -# ignore files that are being periodically imported from Linux > - next if ($realfile =~ > /^(linux-headers|include\/standard-headers)\//); > +# ignore files that are being periodically imported from Linux and emit a > warning > + if ($realfile =~ > /^(linux-headers|include\/standard-headers)\//) { > + if (!$reported_imported_file) { > + $reported_imported_file = 1; > + WARN("added, moved or deleted file(s) " . > + "imported from Linux, are you using " . > + "scripts/update-linux-headers.sh?\n" . > + $herecurr); > + } > + next; > + }
Thanks, that looks useful -- just two comments (sorry, my perl-fu is low): - Is there a way to check that this is a proper linux headers update? We'd have to rely on heuristics, but OTOH, we also usually want a headers update to use a certain format ($SUBJECT containing "headers update", patch description pointing to the version this update was done against.) Not sure if it is worth actually trying to figure this out. - A common issue is headers changes mixed in with other code changes, which should not happen -- can we check for that as well and advise to either do a headers update, or use a placeholder patch? > > #trailing whitespace > if ($line =~ /^\+.*\015/) {