From owner-freebsd-bugs Thu Mar 30 12:50: 9 2000 Delivered-To: freebsd-bugs@freebsd.org Received: from freefall.freebsd.org (freefall.FreeBSD.ORG [204.216.27.21]) by hub.freebsd.org (Postfix) with ESMTP id 2A80037BDF2 for ; Thu, 30 Mar 2000 12:50:02 -0800 (PST) (envelope-from gnats@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.9.3/8.9.2) id MAA18607; Thu, 30 Mar 2000 12:50:01 -0800 (PST) (envelope-from gnats@FreeBSD.org) Received: from numeri.campus.luth.se (numeri.campus.luth.se [130.240.197.103]) by hub.freebsd.org (Postfix) with ESMTP id A955F37BF23 for ; Thu, 30 Mar 2000 12:42:06 -0800 (PST) (envelope-from k@numeri.campus.luth.se) Received: (from k@localhost) by numeri.campus.luth.se (8.9.3/8.9.3) id WAA29110; Thu, 30 Mar 2000 22:43:03 +0200 (CEST) (envelope-from k) Message-Id: <200003302043.WAA29110@numeri.campus.luth.se> Date: Thu, 30 Mar 2000 22:43:03 +0200 (CEST) From: Johan Karlsson Reply-To: k@numeri.campus.luth.se To: FreeBSD-gnats-submit@freebsd.org X-Send-Pr-Version: 3.2 Subject: kern/17698: [PATCH] Let Makefile.inc1 installkernel install multiple kernels Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org >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