On 10. Dec 2024, at 11:47, Masahiro Yamada wrote: > On Mon, Dec 9, 2024 at 10:56 PM Thorsten Blum wrote: >> On 9. Dec 2024, at 14:46, Thorsten Blum wrote: >>> On 10. Nov 2024, at 02:34, Masahiro Yamada wrote: >>>> >>>> Currently, Kbuild always operates in the output directory of the kernel, >>>> even when building external modules. This increases the risk of external >>>> module Makefiles attempting to write to the kernel directory. >>>> >>>> This commit switches the working directory to the external module >>>> directory, allowing the removal of the $(KBUILD_EXTMOD)/ prefix from >>>> some build artifacts. >>>> >>>> The command for building external modules maintains backward >>>> compatibility, but Makefiles that rely on working in the kernel >>>> directory may break. In such cases, $(objtree) and $(srctree) should >>>> be used to refer to the output and source directories of the kernel. >>>> >>>> The appearance of the build log will change as follows: >>>> >>>> [Before] >>>> >>>> $ make -C /path/to/my/linux M=/path/to/my/externel/module >>>> make: Entering directory '/path/to/my/linux' >>>> CC [M] /path/to/my/externel/module/helloworld.o >>>> MODPOST /path/to/my/externel/module/Module.symvers >>>> CC [M] /path/to/my/externel/module/helloworld.mod.o >>>> CC [M] /path/to/my/externel/module/.module-common.o >>>> LD [M] /path/to/my/externel/module/helloworld.ko >>>> make: Leaving directory '/path/to/my/linux' >>>> >>>> [After] >>>> >>>> $ make -C /path/to/my/linux M=/path/to/my/externel/module >>>> make: Entering directory '/path/to/my/linux' >>>> make[1]: Entering directory '/path/to/my/externel/module' >>>> CC [M] helloworld.o >>>> MODPOST Module.symvers >>>> CC [M] helloworld.mod.o >>>> CC [M] .module-common.o >>>> LD [M] helloworld.ko >>>> make[1]: Leaving directory '/path/to/my/externel/module' >>>> make: Leaving directory '/path/to/my/linux' >>>> >>>> Printing "Entering directory" twice is cumbersome. This will be >>>> addressed later. >>>> >>>> Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx> >>>> --- >>> >>> Hi Masahiro, >>> >>> I get the following error since this patch is in master, but only when >>> using COCCI= in combination with M=<relative or absolute path>. >>> >>> It works when I either use COCCI= or M=, but not with both. >> >> Using the absolute path of the cocci script fixes my problem, but this >> used to work with relative paths too. >> >> $ make coccicheck COCCI=$(pwd)/scripts/coccinelle/misc/flexible_array.cocci M=arch/ > > M= looks a bit weird for the upstream code, but > I think using the absolute path is the right thing to do. The documentation[1] uses M= and also COCCI= with relative paths and some of the examples don't work anymore. Could you try this one? ``` export COCCI=scripts/coccinelle/misc/irqf_oneshot.cocci make coccicheck DEBUG_FILE="err.log" MODE=report SPFLAGS="--profile --show-trying" M=./drivers/mfd ``` I get this: $ export COCCI=scripts/coccinelle/misc/irqf_oneshot.cocci $ make coccicheck DEBUG_FILE="err.log" MODE=report SPFLAGS="--profile --show-trying" M=./drivers/mfd make[1]: Entering directory '/home/fedora/linux/drivers/mfd' Please check for false positives in the output before submitting a patch. When using "patch" mode, carefully review the patch before submitting it. grep: scripts/coccinelle/misc/irqf_oneshot.cocci: No such file or directory grep: scripts/coccinelle/misc/irqf_oneshot.cocci: No such file or directory coccicheck failed make[2]: *** [/home/fedora/linux/Makefile:2089: coccicheck] Error 2 make[1]: *** [/home/fedora/linux/Makefile:251: __sub-make] Error 2 make[1]: Leaving directory '/home/fedora/linux/drivers/mfd' make: *** [Makefile:251: __sub-make] Error 2 Thanks, Thorsten [1] https://www.kernel.org/doc/html/latest/dev-tools/coccinelle.html