diff mbox series

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

Message ID 20230823115048.823011-3-masahiroy@kernel.org (mailing list archive)
State New, archived
Headers show
Series [1/8] kbuild: do not run depmod for 'make modules_sign' | expand

Commit Message

Masahiro Yamada Aug. 23, 2023, 11:50 a.m. UTC
depmod is a part of the module installation.

scripts/Makefile.modinst is a better place to run it.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 Makefile                 |  8 --------
 scripts/Makefile.modinst |  9 +++++++++
 scripts/depmod.sh        | 10 ++++++----
 3 files changed, 15 insertions(+), 12 deletions(-)

Comments

Nicolas Schier Aug. 23, 2023, 7:53 p.m. UTC | #1
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@kernel.org>
> ---
> 
>  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?

> +
>  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

>  
> -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.

But technically, it looks good to me, thus:
Reviewed-by: Nicolas Schier <nicolas@fjasle.eu>
Masahiro Yamada Aug. 26, 2023, 1:50 p.m. UTC | #2
On Thu, Aug 24, 2023 at 8:30 AM Nicolas Schier <nicolas@fjasle.eu> 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@kernel.org>
> > ---
> >
> >  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@fjasle.eu>



--
Best Regards
Masahiro Yamada
diff mbox series

Patch

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)
+
 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
 
-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