Date: Thu, 30 Mar 2000 22:43:03 +0200 (CEST) From: Johan Karlsson <k@numeri.campus.luth.se> To: FreeBSD-gnats-submit@freebsd.org Subject: kern/17698: [PATCH] Let Makefile.inc1 installkernel install multiple kernels Message-ID: <200003302043.WAA29110@numeri.campus.luth.se>
next in thread | raw e-mail | index | archive | help
>Number: 17698
>Category: kern
>Synopsis: [PATCH] Let Makefile.inc1 installkernel install multiple kernels
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Thu Mar 30 12:50:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator: Johan Karlsson
>Release: FreeBSD 4.0-RELEASE i386
>Organization:
>Environment:
numeri# ident Makefile.inc1 sys/conf/Makefile.i386
Makefile.inc1:
$FreeBSD: src/Makefile.inc1,v 1.141.2.1 2000/03/30 13:08:32 sheldonh Exp $
sys/conf/Makefile.i386:
$FreeBSD: src/sys/conf/Makefile.i386,v 1.179 2000/01/23 12:24:47 peter Exp $
numeri#
>Description:
Currently only the first kernel in ${KERNEL} get installed
by the installkernel target in ${SRC}/Makefile.inc1.
Moreover, it gets installed as ${KERNEL} not 'kernel'
It would be nice to be able to install multiple kernel and
have them named nicely.
To do this I have added a new variable INSTKERNEL to
${SRC}/sys/conf/Makefile.i386 (should be added to Makefile.alpha
and Makefile.pc98 as well but I can not test on these mashines).
The kernel gets installed as ${INSTKERNEL} (which defaults to
${KERNEL}) instead of ${KERNEL} in ${DESTDIR}.
I have also patched ${SRC}/Makefile.inc1 to install all valid
kernels in ${KERNEL}. The first kernel is installed as ${INSTKERNEL}
(which defaults to 'kernel') and the following are installed as
${INSTKERNEL}.${FOO} in ${DESTDIR}.
w/o the attached patch
===============
numeri# make KERNEL='GENERIC NEWCARD' installkernel
cd /usr/obj/usr/src/sys/GENERIC; MAKEOBJDIRPREFIX=/usr/obj COMPILER_PATH=/usr/obj/usr/src/i386/usr/libexec:/usr/obj/usr/src/i386/usr/bin LIBRARY_PATH=/usr/obj/usr/src/i386/usr/lib:/usr/obj/usr/src/i386/usr/lib OBJFORMAT_PATH=/usr/obj/usr/src/i386/usr/libexec PERL5LIB=/usr/obj/usr/src/i386/usr/libdata/perl/5.00503 MACHINE=i386 KERNEL=GENERIC make install
install -c -m 555 -o root -g wheel -fschg GENERIC /GENERIC
numeri#
===============
w/ the attached patch (note that I've set INSTKERNEL=Kernel)
===============
numeri# make KERNEL='GENERIC NEWCARD GENERIC' INSTKERNEL=Kernel installkernel
--------------------------------------------------------------
>How-To-Repeat:
>Fix:
--- Makefile.inc1.orig Thu Mar 30 20:10:14 2000
+++ Makefile.inc1 Thu Mar 30 22:39:13 2000
@@ -339,6 +339,7 @@
# properly.
KERNEL?= GENERIC GENERIC98
+INSTKERNEL?= kernel
# The only exotic MACHINE_ARCH/MACHINE combination valid at this
# time is i386/pc98. In all other cases set MACHINE equal to
@@ -357,11 +358,14 @@
BUILDKERNELS=
INSTALLKERNEL=
+INSTALLKERNELS=
.for _kernel in ${KERNEL}
.if exists(${KRNLCONFDIR}/${_kernel})
BUILDKERNELS+= ${_kernel}
.if empty(INSTALLKERNEL)
INSTALLKERNEL= ${_kernel}
+.else
+INSTALLKERNELS+= ${_kernel}
.endif
.endif
.endfor
@@ -392,12 +396,25 @@
#
# installkernel
#
-# Install the kernel defined by INSTALLKERNEL
+# Install the kernel defined by INSTALLKERNEL and INSTALLKERNELS
#
installkernel:
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo ">>> Installing kernel(s)"
+ @echo "--------------------------------------------------------------"
+ @echo "===> ${INSTALLKERNEL} as ${DESTDIR}/${INSTKERNEL}"
cd ${KRNLOBJDIR}/${INSTALLKERNEL}; \
${IMAKEENV} MACHINE=${MACHINE} KERNEL=${INSTALLKERNEL} \
- ${MAKE} install
+ INSTKERNEL=${INSTKERNEL} ${MAKE} install
+.for _kernel in ${INSTALLKERNELS}
+ @echo "===> ${_kernel} as ${DESTDIR}/${INSTKERNEL}.${_kernel}"
+ cd ${KRNLOBJDIR}/${_kernel}; \
+ ${IMAKEENV} MACHINE=${MACHINE} KERNEL=${_kernel} \
+ INSTKERNEL=${INSTKERNEL}.${_kernel} ${MAKE} install
+.endfor
+
+
#
# update
--- sys/conf/Makefile.i386.orig Thu Mar 30 21:26:22 2000
+++ sys/conf/Makefile.i386 Thu Mar 30 20:59:19 2000
@@ -21,6 +21,7 @@
# Can be overridden by makeoptions or /etc/make.conf
KERNEL?= kernel
+INSTKERNEL?= ${KERNEL}
STD8X16FONT?= iso
.if !defined(S)
@@ -197,16 +198,16 @@
echo "You must build a kernel first." ; \
exit 1 ; \
fi
-.if exists(${DESTDIR}/${KERNEL})
- -chflags noschg ${DESTDIR}/${KERNEL}
- mv ${DESTDIR}/${KERNEL} ${DESTDIR}/${KERNEL}.old
+.if exists(${DESTDIR}/${INSTKERNEL})
+ -chflags noschg ${DESTDIR}/${INSTKERNEL}
+ mv ${DESTDIR}/${INSTKERNEL} ${DESTDIR}/${INSTKERNEL}.old
.endif
install -c -m 555 -o root -g wheel -fschg \
- ${KERNEL}${.TARGET:S/install//} ${DESTDIR}/${KERNEL}
+ ${KERNEL}${.TARGET:S/install//} ${DESTDIR}/${INSTKERNEL}
reinstall reinstall.debug:
install -c -m 555 -o root -g wheel -fschg \
- ${KERNEL}${.TARGET:S/reinstall//} ${DESTDIR}/${KERNEL}
+ ${KERNEL}${.TARGET:S/reinstall//} ${DESTDIR}/${INSTKERNEL}
config.o:
${NORMAL_C}
>Release-Note:
>Audit-Trail:
>Unformatted:
>>> Installing kernel(s)
--------------------------------------------------------------
===> GENERIC as /Kernel
cd /usr/obj/usr/src/sys/GENERIC; MAKEOBJDIRPREFIX=/usr/obj COMPILER_PATH=/usr/obj/usr/src/i386/usr/libexec:/usr/obj/usr/src/i386/usr/bin LIBRARY_PATH=/usr/obj/usr/src/i386/usr/lib:/usr/obj/usr/src/i386/usr/lib OBJFORMAT_PATH=/usr/obj/usr/src/i386/usr /libexec PERL5LIB=/usr/obj/usr/src/i386/usr/libdata/perl/5.00503 MACHINE=i386 KERNEL=GENERIC INSTKERNEL=Kernel make install
chflags noschg /Kernel
mv /Kernel /Kernel.old
install -c -m 555 -o root -g wheel -fschg GENERIC /Kernel
===> NEWCARD as /Kernel.NEWCARD
cd /usr/obj/usr/src/sys/NEWCARD; MAKEOBJDIRPREFIX=/usr/obj COMPILER_PATH=/usr/obj/usr/src/i386/usr/libexec:/usr/obj/usr/src/i386/usr/bin LIBRARY_PATH=/usr/obj/usr/src/i386/usr/lib:/usr/obj/usr/src/i386/usr/lib OBJFORMAT_PATH=/usr/obj/usr/src/i386/usr /libexec PERL5LIB=/usr/obj/usr/src/i386/usr/libdata/perl/5.00503 MACHINE=i386 KERNEL=NEWCARD INSTKERNEL=Kernel.NEWCARD make install
chflags noschg /Kernel.NEWCARD
mv /Kernel.NEWCARD /Kernel.NEWCARD.old
install -c -m 555 -o root -g wheel -fschg NEWCARD /Kernel.NEWCARD
===> GENERIC as /Kernel.GENERIC
cd /usr/obj/usr/src/sys/GENERIC; MAKEOBJDIRPREFIX=/usr/obj COMPILER_PATH=/usr/obj/usr/src/i386/usr/libexec:/usr/obj/usr/src/i386/usr/bin LIBRARY_PATH=/usr/obj/usr/src/i386/usr/lib:/usr/obj/usr/src/i386/usr/lib OBJFORMAT_PATH=/usr/obj/usr/src/i386/usr /libexec PERL5LIB=/usr/obj/usr/src/i386/usr/libdata/perl/5.00503 MACHINE=i386 KERNEL=GENERIC INSTKERNEL=Kernel.GENERIC make install
chflags noschg /Kernel.GENERIC
mv /Kernel.GENERIC /Kernel.GENERIC.old
install -c -m 555 -o root -g wheel -fschg GENERIC /Kernel.GENERIC
numeri#
===============
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200003302043.WAA29110>
