Hi Jim 2017-10-28 8:56 GMT+09:00 Jim Davis <jim.epost@xxxxxxxxx>: > On Wed, Oct 25, 2017 at 9:55 PM, Masahiro Yamada > <yamada.masahiro@xxxxxxxxxxxxx> 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@xxxxxxxxxxxxx> >> --- >> >> 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 -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html