Re: [PATCH] scripts: add dummy report mode to add_namespace.cocci

From: Julia Lawall
Date: Thu Jun 04 2020 - 15:31:26 EST




On Thu, 4 Jun 2020, Matthias Maennich wrote:

> When running `make coccicheck` in report mode using the
> add_namespace.cocci file, it will fail for files that contain
> MODULE_LICENSE. Those match the replacement precondition, but spatch
> errors out as virtual.ns is not set.
>
> In order to fix that, add the virtual rule nsdeps and only do search and
> replace if that rule has been explicitly requested.
>
> In order to make spatch happy in report mode, we also need a dummy rule,
> as otherwise it errors out with "No rules apply". Using a script:python
> rule appears unrelated and odd, but this is the shortest I could come up
> with.
>
> Adjust scripts/nsdeps accordingly to set the nsdeps rule when run trough
> `make nsdeps`.
>
> Suggested-by: Julia Lawall <julia.lawall@xxxxxxxx>
> Fixes: c7c4e29fb5a4 ("scripts: add_namespace: Fix coccicheck failed")
> Cc: YueHaibing <yuehaibing@xxxxxxxxxx>
> Cc: jeyu@xxxxxxxxxx
> Cc: cocci@xxxxxxxxxxxxxxx
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Matthias Maennich <maennich@xxxxxxxxxx>

Acked-by: Julia Lawall <julia.lawall@xxxxxxxx>

Shuah reported the problem to me, so you could add

Reported-by: Shuah Khan <skhan@xxxxxxxxxxxxxxxxxxx>


> ---
> scripts/coccinelle/misc/add_namespace.cocci | 8 +++++++-
> scripts/nsdeps | 2 +-
> 2 files changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/scripts/coccinelle/misc/add_namespace.cocci b/scripts/coccinelle/misc/add_namespace.cocci
> index 99e93a6c2e24..cbf1614163cb 100644
> --- a/scripts/coccinelle/misc/add_namespace.cocci
> +++ b/scripts/coccinelle/misc/add_namespace.cocci
> @@ -6,6 +6,7 @@
> /// add a missing namespace tag to a module source file.
> ///
>
> +virtual nsdeps
> virtual report
>
> @has_ns_import@
> @@ -16,10 +17,15 @@ MODULE_IMPORT_NS(ns);
>
> // Add missing imports, but only adjacent to a MODULE_LICENSE statement.
> // That ensures we are adding it only to the main module source file.
> -@do_import depends on !has_ns_import@
> +@do_import depends on !has_ns_import && nsdeps@
> declarer name MODULE_LICENSE;
> expression license;
> identifier virtual.ns;
> @@
> MODULE_LICENSE(license);
> + MODULE_IMPORT_NS(ns);
> +
> +// Dummy rule for report mode that would otherwise be empty and make spatch
> +// fail ("No rules apply.")
> +@script:python depends on report@
> +@@
> diff --git a/scripts/nsdeps b/scripts/nsdeps
> index 03a8e7cbe6c7..dab4c1a0e27d 100644
> --- a/scripts/nsdeps
> +++ b/scripts/nsdeps
> @@ -29,7 +29,7 @@ fi
>
> generate_deps_for_ns() {
> $SPATCH --very-quiet --in-place --sp-file \
> - $srctree/scripts/coccinelle/misc/add_namespace.cocci -D ns=$1 $2
> + $srctree/scripts/coccinelle/misc/add_namespace.cocci -D nsdeps -D ns=$1 $2
> }
>
> generate_deps() {
> --
> 2.27.0.rc2.251.g90737beb825-goog
>
>