Date: Sun, 25 Oct 2009 13:56:59 +0000 (UTC) From: "Bjoern A. Zeeb" <bzeeb-lists@lists.zabbadoz.net> To: arch@FreeBSD.org Subject: src/Makefile, universe, LINT, VIMAGE, .. Message-ID: <20091025134226.Q91695@maildrop.int.zabbadoz.net>
next in thread | raw e-mail | index | archive | help
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/<arch>/conf/Makefile set TARGET to <arch>. 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"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20091025134226.Q91695>