All of lore.kernel.org
 help / color / mirror / Atom feed
From: Masahiro Yamada <masahiroy@kernel.org>
To: Nicolas Schier <n.schier@avm.de>
Cc: Linux Kbuild mailing list <linux-kbuild@vger.kernel.org>,
	linux-arch <linux-arch@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2] kbuild: factor out the common installation code into scripts/install.sh
Date: Tue, 10 May 2022 21:56:45 +0900	[thread overview]
Message-ID: <CAK7LNASDZz4osNX3HgzrK7KVQ0C4uEGOBjbmCfTsBG25jOieXA@mail.gmail.com> (raw)
In-Reply-To: <Yno4m91/H65yX4T1@buildd.core.avm.de>

On Tue, May 10, 2022 at 7:04 PM Nicolas Schier <n.schier@avm.de> wrote:
>
> On Tue,  3 May 2022 11:47 +0900 Masahiro Yamada wrote:
> > Many architectures have similar install.sh scripts.
> >
> > The first half is really generic; verifies that the kernel image and
> > System.map exist, then executes ~/bin/${INSTALLKERNEL} or
> > /sbin/${INSTALLKERNEL} if available.
> >
> > The second half is kind of arch-specific. It just copies the kernel image
> > and System.map to the destination, but the code is slightly different.
> >
> > This patch factors out the generic part into scripts/install.sh.
> >
> > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> > ---
> >
> > Changes in v2:
> >   - Move the installkernel parameters to scripts/install.sh
> >
> >  Makefile                     |  3 ++-
> >  arch/arm/Makefile            |  4 ++--
> >  arch/arm/boot/install.sh     | 21 ------------------
> >  arch/arm64/Makefile          |  6 ++----
> >  arch/arm64/boot/install.sh   | 21 ------------------
> >  arch/ia64/Makefile           |  3 ++-
> >  arch/ia64/install.sh         | 10 ---------
> >  arch/m68k/Makefile           |  3 ++-
> >  arch/m68k/install.sh         | 22 -------------------
> >  arch/nios2/Makefile          |  3 +--
> >  arch/nios2/boot/install.sh   | 22 -------------------
> >  arch/parisc/Makefile         | 11 +++++-----
> >  arch/parisc/install.sh       | 28 ------------------------
> >  arch/powerpc/Makefile        |  3 +--
> >  arch/powerpc/boot/install.sh | 23 --------------------
> >  arch/riscv/Makefile          |  7 +++---
> >  arch/riscv/boot/install.sh   | 21 ------------------
> >  arch/s390/Makefile           |  3 +--
> >  arch/s390/boot/install.sh    |  6 ------
> >  arch/sparc/Makefile          |  3 +--
> >  arch/sparc/boot/install.sh   | 22 -------------------
> >  arch/x86/Makefile            |  3 +--
> >  arch/x86/boot/install.sh     | 22 -------------------
> >  scripts/install.sh           | 41 ++++++++++++++++++++++++++++++++++++
> >  24 files changed, 64 insertions(+), 247 deletions(-)
> >  mode change 100644 => 100755 arch/arm/boot/install.sh
> >  mode change 100644 => 100755 arch/arm64/boot/install.sh
> >  mode change 100644 => 100755 arch/ia64/install.sh
> >  mode change 100644 => 100755 arch/m68k/install.sh
> >  mode change 100644 => 100755 arch/nios2/boot/install.sh
> >  mode change 100644 => 100755 arch/parisc/install.sh
> >  mode change 100644 => 100755 arch/powerpc/boot/install.sh
> >  mode change 100644 => 100755 arch/riscv/boot/install.sh
> >  mode change 100644 => 100755 arch/s390/boot/install.sh
> >  mode change 100644 => 100755 arch/sparc/boot/install.sh
> >  mode change 100644 => 100755 arch/x86/boot/install.sh
> >  create mode 100755 scripts/install.sh
> >
> > diff --git a/Makefile b/Makefile
> > index 9a60f732bb3c..154c32af8805 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -1298,7 +1298,8 @@ scripts_unifdef: scripts_basic
> >  # to this Makefile to build and install external modules.
> >  # Cancel sub_make_done so that options such as M=, V=, etc. are parsed.
> >
> > -install: sub_make_done :=
> > +quiet_cmd_install = INSTALL $(INSTALL_PATH)
> > +      cmd_install = unset sub_make_done; $(srctree)/scripts/install.sh
>
> This is the third 'cmd_install' in the tree; might it be better to take
> a more unique name (e.g. cmd_installkernel) to prevent confusion?

If this is confusing, we can rename the ones in
scripts/Makefile.{modinst,headersinst}.

This command name matches the build target ("make install"), so
I believe this name is good.



>
> For me, it would have been more clear, if we'd also move the default
> KBUILD_IMAGE definition here (similar to the corresponding part in
> arch/parisc/Makefile):
>
> zinstall: KBUILD_IMAGE := $(boot)/Image.gz
>
> ($(KBUILD_IMAGE) seems not to be used anywhere else in arch/arm64/
> tree; but I haven't checked in depth.)


KBUILD_IMAGE is _indirectly_ used to specify
the kernel image for package builds.    [1]

This target returns the value IMAGE_BUILD.   [2]


$(KBUILD_IMAGE) is definitely used for arm64.

[1]: https://github.com/torvalds/linux/blob/v5.17/scripts/package/builddeb#L150
[2]: https://github.com/torvalds/linux/blob/v5.17/Makefile#L1943







> > diff --git a/arch/parisc/Makefile b/arch/parisc/Makefile
> > index 7583fc39ab2d..aca1710fd658 100644
> > --- a/arch/parisc/Makefile
> > +++ b/arch/parisc/Makefile
> > @@ -184,12 +184,11 @@ vdso_install:
> >       $(Q)$(MAKE) $(build)=arch/parisc/kernel/vdso $@
> >       $(if $(CONFIG_COMPAT_VDSO), \
> >               $(Q)$(MAKE) $(build)=arch/parisc/kernel/vdso32 $@)
> > -install:
> > -     $(CONFIG_SHELL) $(srctree)/arch/parisc/install.sh \
> > -                     $(KERNELRELEASE) vmlinux System.map "$(INSTALL_PATH)"
> > -zinstall:
> > -     $(CONFIG_SHELL) $(srctree)/arch/parisc/install.sh \
> > -                     $(KERNELRELEASE) vmlinuz System.map "$(INSTALL_PATH)"
> > +
> > +install: KBUILD_IMAGE := vmlinux
> > +zinstall: KBUILD_IMAGE := vmlinuz
>
> Does this make the KBUILD_IMAGE definition in line 19 obsolete and
> unused?


As I said above for arm64, KBUILD_IMAGE is used for package builds.

If you delete line 19, it will change the behavior.
(fall back to the global default [3])


[3]: https://github.com/torvalds/linux/blob/v5.17/Makefile#L1059





> > diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
> > index eb541e730d3c..45a9caa37b4e 100644
> > --- a/arch/powerpc/Makefile
> > +++ b/arch/powerpc/Makefile
> > @@ -408,8 +408,7 @@ endef
> >
> >  PHONY += install
> >  install:
>
> I can't find a KBUILD_IMAGE definition in arch/powerpc/Makefile.
> Should it be set here as a target-specific varibable, too?


Right, powerpc does not define KBUILD_IMAGE explicitly.
It falls back to [3].






-- 
Best Regards
Masahiro Yamada

  reply	other threads:[~2022-05-10 12:58 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-03  2:47 [PATCH v2] kbuild: factor out the common installation code into scripts/install.sh Masahiro Yamada
2022-05-10 10:04 ` Nicolas Schier
2022-05-10 12:56   ` Masahiro Yamada [this message]
2022-05-10 13:21     ` Nicolas Schier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAK7LNASDZz4osNX3HgzrK7KVQ0C4uEGOBjbmCfTsBG25jOieXA@mail.gmail.com \
    --to=masahiroy@kernel.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=n.schier@avm.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.