diff mbox series

coccinelle: fix verbose message about .cocci file being run

Message ID 1508993751-17218-1-git-send-email-yamada.masahiro@socionext.com
State Accepted
Commit cd1af7cfbbdc7719b74ad9f3c88e50bb77713664
Headers show
Series coccinelle: fix verbose message about .cocci file being run | expand

Commit Message

Masahiro Yamada Oct. 26, 2017, 4:55 a.m. UTC
If you run coccicheck with V=1 and COCCI=, you will see a strange
path to the semantic patch file.  For example, run the following:

$ make V=1 COCCI=scripts/coccinelle/free/kfree.cocci coccicheck
  [ snip ]
 The semantic patch that makes this report is available
 in scriptcoccinelle/free/kfree.cocci.

Notice "s/" was dropped from "scripts/coccinelle/free/kfree.cocci".

When running coccicheck without O=, $srctree is expanded to ".", which
represents one arbitrary character in the regular expression.  Using
sed is not a good choice here.  Strip $srctree/ simply without sed.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

---

 scripts/coccicheck | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.7.4

Comments

Nicolas Palix (LIG) Oct. 26, 2017, 7:22 a.m. UTC | #1
Le 26/10/17 à 06:55, Masahiro Yamada a écrit :
> If you run coccicheck with V=1 and COCCI=, you will see a strange

> path to the semantic patch file.  For example, run the following:

> 

> $ make V=1 COCCI=scripts/coccinelle/free/kfree.cocci coccicheck

>    [ snip ]

>   The semantic patch that makes this report is available

>   in scriptcoccinelle/free/kfree.cocci.

> 

> Notice "s/" was dropped from "scripts/coccinelle/free/kfree.cocci".

> 

> When running coccicheck without O=, $srctree is expanded to ".", which

> represents one arbitrary character in the regular expression.  Using

> sed is not a good choice here.  Strip $srctree/ simply without sed.

> 

> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

Acked-by: Nicolas Palix <nicolas.palix@imag.fr>

> ---

> 

>   scripts/coccicheck | 2 +-

>   1 file changed, 1 insertion(+), 1 deletion(-)

> 

> diff --git a/scripts/coccicheck b/scripts/coccicheck

> index 1bfa2d2..9d18662 100755

> --- a/scripts/coccicheck

> +++ b/scripts/coccicheck

> @@ -186,7 +186,7 @@ coccinelle () {

>   

>       if [ $VERBOSE -ne 0 -a $ONLINE -eq 0 ] ; then

>   

> -	FILE=`echo $COCCI | sed "s|$srctree/||"`

> +	FILE=${COCCI#$srctree/}

>   

>   	echo "Processing `basename $COCCI`"

>   	echo "with option(s) \"$OPT\""

> 



-- 
Nicolas Palix
http://lig-membres.imag.fr/palix/
Jim Davis Oct. 27, 2017, 11:56 p.m. UTC | #2
On Wed, Oct 25, 2017 at 9:55 PM, Masahiro Yamada
<yamada.masahiro@socionext.com> wrote:
> If you run coccicheck with V=1 and COCCI=, you will see a strange

> path to the semantic patch file.  For example, run the following:

>

> $ make V=1 COCCI=scripts/coccinelle/free/kfree.cocci coccicheck

>   [ snip ]

>  The semantic patch that makes this report is available

>  in scriptcoccinelle/free/kfree.cocci.

>

> Notice "s/" was dropped from "scripts/coccinelle/free/kfree.cocci".

>

> When running coccicheck without O=, $srctree is expanded to ".", which

> represents one arbitrary character in the regular expression.  Using

> sed is not a good choice here.  Strip $srctree/ simply without sed.

>

> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

> ---

>

>  scripts/coccicheck | 2 +-

>  1 file changed, 1 insertion(+), 1 deletion(-)

>

> diff --git a/scripts/coccicheck b/scripts/coccicheck

> index 1bfa2d2..9d18662 100755

> --- a/scripts/coccicheck

> +++ b/scripts/coccicheck

> @@ -186,7 +186,7 @@ coccinelle () {

>

>      if [ $VERBOSE -ne 0 -a $ONLINE -eq 0 ] ; then

>

> -       FILE=`echo $COCCI | sed "s|$srctree/||"`

> +       FILE=${COCCI#$srctree/}


[jim@krebstar linux-rc]$ make CONFIG_SHELL=dash V=1
COCCI=scripts/coccinelle/free/kfree.cocci coccicheck
dash ./scripts/coccicheck
./scripts/coccicheck: 63: ./scripts/coccicheck: Bad substitution
make: *** [Makefile:1585: coccicheck] Error 2

-- 
Jim
Masahiro Yamada Oct. 28, 2017, 11:26 a.m. UTC | #3
Hi Jim

2017-10-28 8:56 GMT+09:00 Jim Davis <jim.epost@gmail.com>:
> On Wed, Oct 25, 2017 at 9:55 PM, Masahiro Yamada

> <yamada.masahiro@socionext.com> wrote:

>> If you run coccicheck with V=1 and COCCI=, you will see a strange

>> path to the semantic patch file.  For example, run the following:

>>

>> $ make V=1 COCCI=scripts/coccinelle/free/kfree.cocci coccicheck

>>   [ snip ]

>>  The semantic patch that makes this report is available

>>  in scriptcoccinelle/free/kfree.cocci.

>>

>> Notice "s/" was dropped from "scripts/coccinelle/free/kfree.cocci".

>>

>> When running coccicheck without O=, $srctree is expanded to ".", which

>> represents one arbitrary character in the regular expression.  Using

>> sed is not a good choice here.  Strip $srctree/ simply without sed.

>>

>> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

>> ---

>>

>>  scripts/coccicheck | 2 +-

>>  1 file changed, 1 insertion(+), 1 deletion(-)

>>

>> diff --git a/scripts/coccicheck b/scripts/coccicheck

>> index 1bfa2d2..9d18662 100755

>> --- a/scripts/coccicheck

>> +++ b/scripts/coccicheck

>> @@ -186,7 +186,7 @@ coccinelle () {

>>

>>      if [ $VERBOSE -ne 0 -a $ONLINE -eq 0 ] ; then

>>

>> -       FILE=`echo $COCCI | sed "s|$srctree/||"`

>> +       FILE=${COCCI#$srctree/}

>

> [jim@krebstar linux-rc]$ make CONFIG_SHELL=dash V=1

> COCCI=scripts/coccinelle/free/kfree.cocci coccicheck

> dash ./scripts/coccicheck

> ./scripts/coccicheck: 63: ./scripts/coccicheck: Bad substitution

> make: *** [Makefile:1585: coccicheck] Error 2

>

> --

> Jim



Did you review/test this patch?
or point out something about existing code?


The error message points to line 63:
COCCIINCLUDE=${LINUXINCLUDE//-I/-I }


My code
FILE=${COCCI#$srctree/}
works on dash.
I believe your post does not block my patch.


Actually, scripts/coccicheck contains three lines
that depend on bash.

line 63: COCCIINCLUDE=${LINUXINCLUDE//-I/-I }
line 64: COCCIINCLUDE=${COCCIINCLUDE// -include/ --include}
line 134: if [[ $? -ne 0 ]]; then


They are legitimate because I see the correct shebang #!/bin/bash
on the top of this script.


CONFIG_SHELL is not described in Documentation/kbuild/kbuild.txt
so Kbuild does not expect CONFIG_SHELL overridden from the command line.
(at least for now).



Some sell scripts in kernel tree are specified with "#!/bin/sh"
and others with "#!/bin/bash"
Both of the cases are invoked with CONFIG_SHELL in Kbuild,
so several scripts give error with CONFIG_SHELL=dash.

For example,

masahiro@grover:~/ref/linux$ make CONFIG_SHELL=dash tags
  GEN     tags
./scripts/tags.sh: 159: ./scripts/tags.sh: Syntax error: "(" unexpected
make: *** [tags] Error 2


Of course, it will be possible to improve this situation if we like,
but should be discussed in a new thread since this is
about Kbuild infrastructure, not a coccinelle-related topic.


-- 
Best Regards
Masahiro Yamada
Masahiro Yamada Nov. 7, 2017, 12:27 a.m. UTC | #4
2017-10-26 16:22 GMT+09:00 Nicolas Palix (LIG) <Nicolas.Palix@imag.fr>:
> Le 26/10/17 à 06:55, Masahiro Yamada a écrit :

>>

>> If you run coccicheck with V=1 and COCCI=, you will see a strange

>> path to the semantic patch file.  For example, run the following:

>>

>> $ make V=1 COCCI=scripts/coccinelle/free/kfree.cocci coccicheck

>>    [ snip ]

>>   The semantic patch that makes this report is available

>>   in scriptcoccinelle/free/kfree.cocci.

>>

>> Notice "s/" was dropped from "scripts/coccinelle/free/kfree.cocci".

>>

>> When running coccicheck without O=, $srctree is expanded to ".", which

>> represents one arbitrary character in the regular expression.  Using

>> sed is not a good choice here.  Strip $srctree/ simply without sed.

>>

>> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

>

> Acked-by: Nicolas Palix <nicolas.palix@imag.fr>

>>

>> ---


Applied to linux-kbuild/misc.


-- 
Best Regards
Masahiro Yamada
Julia Lawall Nov. 8, 2017, 1:12 p.m. UTC | #5
On Tue, 7 Nov 2017, Masahiro Yamada wrote:

> 2017-10-26 16:22 GMT+09:00 Nicolas Palix (LIG) <Nicolas.Palix@imag.fr>:

> > Le 26/10/17 à 06:55, Masahiro Yamada a écrit :

> >>

> >> If you run coccicheck with V=1 and COCCI=, you will see a strange

> >> path to the semantic patch file.  For example, run the following:

> >>

> >> $ make V=1 COCCI=scripts/coccinelle/free/kfree.cocci coccicheck

> >>    [ snip ]

> >>   The semantic patch that makes this report is available

> >>   in scriptcoccinelle/free/kfree.cocci.

> >>

> >> Notice "s/" was dropped from "scripts/coccinelle/free/kfree.cocci".

> >>

> >> When running coccicheck without O=, $srctree is expanded to ".", which

> >> represents one arbitrary character in the regular expression.  Using

> >> sed is not a good choice here.  Strip $srctree/ simply without sed.

> >>

> >> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

> >

> > Acked-by: Nicolas Palix <nicolas.palix@imag.fr>

> >>

> >> ---

>

> Applied to linux-kbuild/misc.


Thanks!

julia
diff mbox series

Patch

diff --git a/scripts/coccicheck b/scripts/coccicheck
index 1bfa2d2..9d18662 100755
--- a/scripts/coccicheck
+++ b/scripts/coccicheck
@@ -186,7 +186,7 @@  coccinelle () {
 
     if [ $VERBOSE -ne 0 -a $ONLINE -eq 0 ] ; then
 
-	FILE=`echo $COCCI | sed "s|$srctree/||"`
+	FILE=${COCCI#$srctree/}
 
 	echo "Processing `basename $COCCI`"
 	echo "with option(s) \"$OPT\""