On Wed, 25 Aug 2021 01:50:24 +0900 Masahiro Yamada wrote: > Many architectures has a similar install.sh script. > > The first half is really generic; ensures the kernel image and the map > file exist, then invokes ~/bin/${INSTALLKERNEL} or /sbin/${INSTALLKERNEL} > if available. > > The second half is kind of arch-specific. It just copies the kernel image > and map file to the destination, but the code is slightly different. > (Maybe, this part can be consolidated as well if we want). > > This patch factors out the generic part into scripts/install.sh, which > will architectures to drop the duplicated code. ^ I am afraid, a word is missing here, e.g.: ... which will allow architectures to drop ...? > > Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx> > --- > > Makefile | 8 ++++++++ > scripts/install.sh | 43 +++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 51 insertions(+) > create mode 100755 scripts/install.sh > > diff --git a/Makefile b/Makefile > index 185ce47d6734..725eadc4fcb8 100644 > --- a/Makefile > +++ b/Makefile > @@ -1325,6 +1325,14 @@ scripts_unifdef: scripts_basic > > install: sub_make_done := > > +# Install $(KBUILD_IMAGE) by default. > +# If necessary, override install-image per target. > +install-image = $(KBUILD_IMAGE) > + > +quiet_cmd_install = INSTALL $(INSTALL_PATH) > + cmd_install = scripts/install.sh $(KERNELRELEASE) $(install-image) \ > + System.map "$(INSTALL_PATH)" > + > # --------------------------------------------------------------------------- > # Tools > > diff --git a/scripts/install.sh b/scripts/install.sh > new file mode 100755 > index 000000000000..6ac0e0c0f078 > --- /dev/null > +++ b/scripts/install.sh > @@ -0,0 +1,43 @@ > +#!/bin/sh > +# SPDX-License-Identifier: GPL-2.0-only > +# > +# This file is subject to the terms and conditions of the GNU General Public > +# License. See the file "COPYING" in the main directory of this archive > +# for more details. > +# > +# Copyright (C) 1995 by Linus Torvalds > +# > +# Adapted from code in arch/i386/boot/Makefile by H. Peter Anvin > +# > +# Arguments: > +# $1 - kernel version > +# $2 - kernel image file > +# $3 - kernel map file > +# $4 - default install path (blank if root directory) > + > +verify () { > + if [ ! -f "$1" ]; then > + echo >&2 > + echo >&2 " *** Missing file: $1" > + echo >&2 ' *** You need to run "make" before "make install".' > + echo >&2 > + exit 1 > + fi > +} > + > +# Make sure the files actually exist > +verify "$2" > +verify "$3" > + > +# User/arch may have a custom install script > + > +for script in "~/bin/${INSTALLKERNEL}" "/sbin/${INSTALLKERNEL}" \ Quoted ~ will not be expanded. Either you need to put the leading ~/ before the quotes, or replace it by ${HOME}. Reviewed-by: Nicolas Schier <nicolas@xxxxxxxxx> > + "arch/${SRCARCH}/install.sh" "arch/${SRCARCH}/boot/install.sh" > +do > + if [ -x "${script}" ]; then > + exec "${script}" "$@" > + fi > +done > + > +echo "No install script found" >&2 > +exit 1 > -- > 2.30.2 >