qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] scripts/checkpatch: emit a warning if an imported file is touched
@ 2024-07-17  9:37 Stefano Garzarella
  2024-07-17  9:50 ` Daniel P. Berrangé
  2024-07-17  9:58 ` Cornelia Huck
  0 siblings, 2 replies; 5+ messages in thread
From: Stefano Garzarella @ 2024-07-17  9:37 UTC (permalink / raw)
  To: qemu-devel; +Cc: cohuck, berrange, Stefano Garzarella

If a file imported from Linux is touched, emit a warning and suggest
using scripts/update-linux-headers.sh

Signed-off-by: Stefano Garzarella <sgarzare@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;
+		}
 
 #trailing whitespace
 		if ($line =~ /^\+.*\015/) {
-- 
2.45.2



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] scripts/checkpatch: emit a warning if an imported file is touched
  2024-07-17  9:37 [PATCH] scripts/checkpatch: emit a warning if an imported file is touched Stefano Garzarella
@ 2024-07-17  9:50 ` Daniel P. Berrangé
  2024-07-17 12:26   ` Stefano Garzarella
  2024-07-17  9:58 ` Cornelia Huck
  1 sibling, 1 reply; 5+ messages in thread
From: Daniel P. Berrangé @ 2024-07-17  9:50 UTC (permalink / raw)
  To: Stefano Garzarella; +Cc: qemu-devel, cohuck

On Wed, Jul 17, 2024 at 11:37:52AM +0200, Stefano Garzarella 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 <sgarzare@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);

This is a good hint, but can we add a further check that is a fatal error,
if the headers are changed in the same commit as non-header changes. When
importing headers, they should only ever be in a self-contained patch
with nothing else touched.

> +			}
> +			next;
> +		}

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] scripts/checkpatch: emit a warning if an imported file is touched
  2024-07-17  9:37 [PATCH] scripts/checkpatch: emit a warning if an imported file is touched Stefano Garzarella
  2024-07-17  9:50 ` Daniel P. Berrangé
@ 2024-07-17  9:58 ` Cornelia Huck
  2024-07-17 12:36   ` Stefano Garzarella
  1 sibling, 1 reply; 5+ messages in thread
From: Cornelia Huck @ 2024-07-17  9:58 UTC (permalink / raw)
  To: Stefano Garzarella, qemu-devel; +Cc: berrange, Stefano Garzarella

On Wed, Jul 17 2024, Stefano Garzarella <sgarzare@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 <sgarzare@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/) {



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] scripts/checkpatch: emit a warning if an imported file is touched
  2024-07-17  9:50 ` Daniel P. Berrangé
@ 2024-07-17 12:26   ` Stefano Garzarella
  0 siblings, 0 replies; 5+ messages in thread
From: Stefano Garzarella @ 2024-07-17 12:26 UTC (permalink / raw)
  To: Daniel P. Berrangé; +Cc: qemu-devel, cohuck

On Wed, Jul 17, 2024 at 10:50:51AM GMT, Daniel P. Berrangé wrote:
>On Wed, Jul 17, 2024 at 11:37:52AM +0200, Stefano Garzarella 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 <sgarzare@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);
>
>This is a good hint, but can we add a further check that is a fatal error,
>if the headers are changed in the same commit as non-header changes. When
>importing headers, they should only ever be in a self-contained patch
>with nothing else touched.

Yep, good point! I'll add that check in v2.

Thanks,
Stefano



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] scripts/checkpatch: emit a warning if an imported file is touched
  2024-07-17  9:58 ` Cornelia Huck
@ 2024-07-17 12:36   ` Stefano Garzarella
  0 siblings, 0 replies; 5+ messages in thread
From: Stefano Garzarella @ 2024-07-17 12:36 UTC (permalink / raw)
  To: Cornelia Huck; +Cc: qemu-devel, berrange

On Wed, Jul 17, 2024 at 11:58:46AM GMT, Cornelia Huck wrote:
>On Wed, Jul 17 2024, Stefano Garzarella <sgarzare@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 <sgarzare@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):

Same perl-fu here ;-P

>- 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.

I think it can be done though I think we should formalize it somewhere 
first, or integrate the generation of the commit in the 
scripts/update-linux-headers.sh

At that point here we can add a check based on that.

>- 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?

Yeah, Daniel suggested the same, I'll address in v2.

Thanks,
Stefano



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-07-17 12:37 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-17  9:37 [PATCH] scripts/checkpatch: emit a warning if an imported file is touched Stefano Garzarella
2024-07-17  9:50 ` Daniel P. Berrangé
2024-07-17 12:26   ` Stefano Garzarella
2024-07-17  9:58 ` Cornelia Huck
2024-07-17 12:36   ` Stefano Garzarella

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).