[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAK7LNAQ1MvB_wXa6F8aZB_srrLTQupRXNsz6Rav27fyjznXZJQ@mail.gmail.com>
Date: Tue, 10 Dec 2024 19:47:45 +0900
From: Masahiro Yamada <masahiroy@...nel.org>
To: Thorsten Blum <thorsten.blum@...ux.dev>
Cc: linux-kbuild@...r.kernel.org, linux-kernel@...r.kernel.org,
rust-for-linux@...r.kernel.org, cocci@...ia.fr
Subject: Re: [PATCH v2 05/11] kbuild: change working directory to external
module directory with M=
On Mon, Dec 9, 2024 at 10:56 PM Thorsten Blum <thorsten.blum@...ux.dev> 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@...nel.org>
> >> ---
> >
> > 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.
--
Best Regards
Masahiro Yamada
Powered by blists - more mailing lists