From owner-freebsd-arch@FreeBSD.ORG Sun Oct 25 14:00:08 2009 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5A5E1106566B for ; Sun, 25 Oct 2009 14:00:08 +0000 (UTC) (envelope-from bzeeb-lists@lists.zabbadoz.net) Received: from mail.cksoft.de (mail.cksoft.de [195.88.108.3]) by mx1.freebsd.org (Postfix) with ESMTP id EA0948FC13 for ; Sun, 25 Oct 2009 14:00:07 +0000 (UTC) Received: from localhost (amavis.fra.cksoft.de [192.168.74.71]) by mail.cksoft.de (Postfix) with ESMTP id C495741C6A7 for ; Sun, 25 Oct 2009 15:00:06 +0100 (CET) X-Virus-Scanned: amavisd-new at cksoft.de Received: from mail.cksoft.de ([195.88.108.3]) by localhost (amavis.fra.cksoft.de [192.168.74.71]) (amavisd-new, port 10024) with ESMTP id n3bFt5oG1onA for ; Sun, 25 Oct 2009 15:00:06 +0100 (CET) Received: by mail.cksoft.de (Postfix, from userid 66) id E543541C6A3; Sun, 25 Oct 2009 15:00:05 +0100 (CET) Received: from maildrop.int.zabbadoz.net (maildrop.int.zabbadoz.net [10.111.66.10]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.int.zabbadoz.net (Postfix) with ESMTP id 930ED4448E6 for ; Sun, 25 Oct 2009 13:56:59 +0000 (UTC) Date: Sun, 25 Oct 2009 13:56:59 +0000 (UTC) From: "Bjoern A. Zeeb" X-X-Sender: bz@maildrop.int.zabbadoz.net To: arch@FreeBSD.org Message-ID: <20091025134226.Q91695@maildrop.int.zabbadoz.net> X-OpenPGP-Key: 0x14003F198FEFA3E77207EE8D2B58B8F83CCF1842 MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: Subject: src/Makefile, universe, LINT, VIMAGE, .. X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Oct 2009 14:00:08 -0000 Hi, since the advent of VIMAGE in FreeBSD HEAD we've had a way to compile the network stack in multiple ways. Unfortunately LINT can always only test one of the options. In addition I, for quite a while, had other combinations I tested like nooptions INET6 or nooptions INET nooptions INET6 etc. We need a solution to be able to test those things and make sure to not break those combinations (atm at least VIMAGE). Unfortunately our build system and kernel configurations are not there yet. I had been pondering whether to just commit a LINT-VIMAGE file that would include LINT and just fail if that wasn't there but then realized that this will not fix the real problem. Some archs do not even have a LINT file, btw. The information attached to the diff will tell you more about what I did. I am not yet convinced that the solution presented further down is the right thing to do (and would do the right thing in all cases though I tested the obvious ones). Thus I'd like to solicit feedback, comments, improved version, ..;) You can also fetch the diff temporary from: http://people.freebsd.org/~bz/20091025-01-make-LINT-VIMAGE.diff Thanks, /bz -- Bjoern A. Zeeb It will not break if you know what you are doing. ! ! In sys//conf/Makefile set TARGET to . That allows ! sys/conf/makeLINT.mk to only do certain things for certain ! architectures. ! ! Generate a second LINT configuration for i386 and amd64 in ! sys/conf/makeLINT.mk, which includes LINT and sets options VIMAGE ! so that we will have VIMAGE LINT builds[1]. ! ! To avoid hardcoding further kernel configuration names for ! make universe, split the logic into two parts: ! - 1st to build worlds and generate kernel configs like LINT. ! - 2nd to build kernels for a given TARGET architecture correctly ! finding all newly generated configs, not knowing anything about ! LINT anymore. (*) ! ! (*) If you know better/cleaner/... ways to do this, let me know. ! ! Annotation: this also allows one to add more such kernel configs ! like LINT-NOINET, LINT-NOINET6, .. that I have had for ages now ! to generate and maintain in a single place. ! ! ! Requested by: jhb [1] ! Discussed with: jhb, rwatson [1] ! Reviewed by: ! MFC After: ! Index: Makefile =================================================================== --- Makefile (revision 198467) +++ Makefile (working copy) @@ -297,10 +297,6 @@ rm -f ${FAILFILE} .endif .for target in ${TARGETS} -KERNCONFS!= cd ${.CURDIR}/sys/${target}/conf && \ - find [A-Z0-9]*[A-Z0-9] -type f -maxdepth 0 \ - ! -name DEFAULTS ! -name LINT -KERNCONFS:= ${KERNCONFS:S/^NOTES$/LINT/} universe: universe_${target} .ORDER: universe_prologue universe_${target} universe_epilogue universe_${target}: @@ -320,15 +316,7 @@ (echo "${target} 'make LINT' failed," \ "check _.${target}.makeLINT for details"| ${MAKEFAIL})) .endif -.for kernel in ${KERNCONFS} - @(cd ${.CURDIR} && env __MAKE_CONF=/dev/null \ - ${MAKE} ${JFLAG} buildkernel \ - TARGET=${target} \ - KERNCONF=${kernel} \ - > _.${target}.${kernel} 2>&1 || \ - (echo "${target} ${kernel} kernel failed," \ - "check _.${target}.${kernel} for details"| ${MAKEFAIL})) -.endfor + cd ${.CURDIR} && ${MAKE} ${.MAKEFLAGS} TARGET=${target} universe_kernels @echo ">> ${target} completed on `LC_ALL=C date`" .endfor universe: universe_epilogue @@ -345,3 +333,18 @@ fi .endif .endif + +universe_kernels: universe_kernels_foo +TARGET?= ${BUILD_ARCH} +KERNCONFS!= cd ${.CURDIR}/sys/${TARGET}/conf && \ + find [A-Z0-9]*[A-Z0-9] -type f -maxdepth 0 \ + ! -name DEFAULTS ! -name NOTES +KERNCONFS:= ${KERNCONFS} +universe_kernels_foo: +.for kernel in ${KERNCONFS} + @(cd ${.CURDIR} && env __MAKE_CONF=/dev/null \ + ${MAKE} ${JFLAG} buildkernel TARGET=${TARGET} KERNCONF=${kernel} \ + > _.${TARGET}.${kernel} 2>&1 || \ + (echo "${TARGET} ${kernel} kernel failed," \ + "check _.${TARGET}.${kernel} for details"| ${MAKEFAIL})) +.endfor Index: sys/powerpc/conf/Makefile =================================================================== --- sys/powerpc/conf/Makefile (revision 198467) +++ sys/powerpc/conf/Makefile (working copy) @@ -1,3 +1,5 @@ # $FreeBSD$ +TARGET=powerpc + .include "${.CURDIR}/../../conf/makeLINT.mk" Index: sys/sparc64/conf/Makefile =================================================================== --- sys/sparc64/conf/Makefile (revision 198467) +++ sys/sparc64/conf/Makefile (working copy) @@ -1,3 +1,5 @@ # $FreeBSD$ +TARGET=sparc64 + .include "${.CURDIR}/../../conf/makeLINT.mk" Index: sys/conf/makeLINT.mk =================================================================== --- sys/conf/makeLINT.mk (revision 198467) +++ sys/conf/makeLINT.mk (working copy) @@ -5,7 +5,15 @@ clean: rm -f LINT +.if ${TARGET} == "amd64" || ${TARGET} == "i386" + rm -f LINT=VIMAGE +.endif NOTES= ../../conf/NOTES NOTES LINT: ${NOTES} ../../conf/makeLINT.sed cat ${NOTES} | sed -E -n -f ../../conf/makeLINT.sed > ${.TARGET} +.if ${TARGET} == "amd64" || ${TARGET} == "i386" + echo "include ${.TARGET}" > ${.TARGET}-VIMAGE + echo "ident ${.TARGET}-VIMAGE" >> ${.TARGET}-VIMAGE + echo "options VIMAGE" >> ${.TARGET}-VIMAGE +.endif Index: sys/ia64/conf/Makefile =================================================================== --- sys/ia64/conf/Makefile (revision 198467) +++ sys/ia64/conf/Makefile (working copy) @@ -1,3 +1,5 @@ # $FreeBSD$ +TARGET=ia64 + .include "${.CURDIR}/../../conf/makeLINT.mk" Index: sys/sun4v/conf/Makefile =================================================================== --- sys/sun4v/conf/Makefile (revision 198467) +++ sys/sun4v/conf/Makefile (working copy) @@ -1,3 +1,5 @@ # $FreeBSD$ +TARGET=sun4v + .include "${.CURDIR}/../../conf/makeLINT.mk" Index: sys/pc98/conf/Makefile =================================================================== --- sys/pc98/conf/Makefile (revision 198467) +++ sys/pc98/conf/Makefile (working copy) @@ -1,3 +1,5 @@ # $FreeBSD$ +TARGET=pc98 + .include "${.CURDIR}/../../conf/makeLINT.mk" Index: sys/i386/conf/Makefile =================================================================== --- sys/i386/conf/Makefile (revision 198467) +++ sys/i386/conf/Makefile (working copy) @@ -1,3 +1,5 @@ # $FreeBSD$ +TARGET=i386 + .include "${.CURDIR}/../../conf/makeLINT.mk" Index: sys/amd64/conf/Makefile =================================================================== --- sys/amd64/conf/Makefile (revision 198467) +++ sys/amd64/conf/Makefile (working copy) @@ -1,3 +1,5 @@ # $FreeBSD$ +TARGET=amd64 + .include "${.CURDIR}/../../conf/makeLINT.mk"