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.law...@inria.fr>
> Fixes: c7c4e29fb5a4 ("scripts: add_namespace: Fix coccicheck failed")
> Cc: YueHaibing <yuehaib...@huawei.com>
> Cc: j...@kernel.org
> Cc: cocci@systeme.lip6.fr
> Cc: sta...@vger.kernel.org
> Signed-off-by: Matthias Maennich <maenn...@google.com>

Acked-by: Julia Lawall <julia.law...@inria.fr>

Shuah reported the problem to me, so you could add

Reported-by: Shuah Khan <sk...@linuxfoundation.org>


> ---
>  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
>
>
_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci

Reply via email to