Skip site navigation (1)Skip section navigation (2)
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>