Re: [PATCH 3/8] kbuild: move depmod rule to scripts/Makefile.modinst

From: Masahiro Yamada
Date: Sat Aug 26 2023 - 09:51:45 EST


On Thu, Aug 24, 2023 at 8:30 AM Nicolas Schier <nicolas@xxxxxxxxx> wrote:
>
> On Wed 23 Aug 2023 20:50:43 GMT, Masahiro Yamada wrote:
> > depmod is a part of the module installation.
> >
> > scripts/Makefile.modinst is a better place to run it.
> >
> > Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx>
> > ---
> >
> > Makefile | 8 --------
> > scripts/Makefile.modinst | 9 +++++++++
> > scripts/depmod.sh | 10 ++++++----
> > 3 files changed, 15 insertions(+), 12 deletions(-)
> >
> > diff --git a/Makefile b/Makefile
> > index e2dfa3b994f7..c9c8019e4720 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -509,7 +509,6 @@ LEX = flex
> > YACC = bison
> > AWK = awk
> > INSTALLKERNEL := installkernel
> > -DEPMOD = depmod
> > PERL = perl
> > PYTHON3 = python3
> > CHECK = sparse
> > @@ -1871,15 +1870,8 @@ PHONY += modules_check
> > modules_check: $(MODORDER)
> > $(Q)$(CONFIG_SHELL) $(srctree)/scripts/modules-check.sh $<
> >
> > -quiet_cmd_depmod = DEPMOD $(MODLIB)
> > - cmd_depmod = $(CONFIG_SHELL) $(srctree)/scripts/depmod.sh $(DEPMOD) \
> > - $(KERNELRELEASE)
> > -
> > modules_install:
> > $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst
> > -ifndef modules_sign_only
> > - $(call cmd,depmod)
> > -endif
> >
> > else # CONFIG_MODULES
> >
> > diff --git a/scripts/Makefile.modinst b/scripts/Makefile.modinst
> > index ab0c5bd1a60f..7a64ece9b826 100644
> > --- a/scripts/Makefile.modinst
> > +++ b/scripts/Makefile.modinst
> > @@ -86,6 +86,15 @@ $(dst)/%.ko: $(extmod_prefix)%.ko FORCE
> > $(call cmd,strip)
> > $(call cmd,sign)
> >
> > +__modinst: depmod
> > +
> > +PHONY += depmod
> > +depmod: $(modules)
> > + $(call cmd,depmod)
> > +
> > +quiet_cmd_depmod = DEPMOD $(MODLIB)
> > + cmd_depmod = $(srctree)/scripts/depmod.sh $(KERNELRELEASE)
>
> Did you remove the $(CONFIG_SHELL) by intention?


Yes.
I do not know why $(CONFIG_SHELL) is needed.

I remove $(CONFIG_SHELL) when I have a chance to touch the line.


> > +
> > else
> >
> > $(dst)/%.ko: FORCE
> > diff --git a/scripts/depmod.sh b/scripts/depmod.sh
> > index fca689ba4f21..ee771ccb1f9c 100755
> > --- a/scripts/depmod.sh
> > +++ b/scripts/depmod.sh
> > @@ -3,12 +3,14 @@
> > #
> > # A depmod wrapper used by the toplevel Makefile
>
> toplevel Makefile -> scripts/Makefile.modinst


Good catch.
I will fix it.


> >
> > -if test $# -ne 2; then
> > - echo "Usage: $0 /sbin/depmod <kernelrelease>" >&2
> > +if test $# -ne 1; then
> > + echo "Usage: $0 <kernelrelease>" >&2
> > exit 1
> > fi
> > -DEPMOD=$1
> > -KERNELRELEASE=$2
> > +
> > +KERNELRELEASE=$1
> > +
> > +: ${DEPMOD:=depmod}
> >
> > if ! test -r System.map ; then
> > echo "Warning: modules_install: missing 'System.map' file. Skipping depmod." >&2
> > --
> > 2.39.2
>
> A minor observation: with this patch, the "quiet_cmd_*" examples in
> Makefile and in Documentation/kbuild/makefiles.rst become out-dated.


I was opposed to eb38f37c3cee08a0197bdc7bbb9b4e02e40e2300

The section "Script invocation" is not what I ack'ed.

That is what Kees Cook and Andrew Morton did.









>
> But technically, it looks good to me, thus:
> Reviewed-by: Nicolas Schier <nicolas@xxxxxxxxx>



--
Best Regards
Masahiro Yamada