svn commit: r185499 - head

Alfred Perlstein alfred at FreeBSD.org
Sun Nov 30 16:45:52 PST 2008


Author: alfred
Date: Mon Dec  1 00:45:51 2008
New Revision: 185499
URL: http://svn.freebsd.org/changeset/base/185499

Log:
  Provide a 'tinderbox' target that compiles enough of FreeBSD that
  a developer can rest reasonably assured that the tinderbox will not
  be broken.  This target leverages most of 'universe' but will exit
  non-zero and output a summary at the end.
  
  "make tinderbox"

Modified:
  head/Makefile

Modified: head/Makefile
==============================================================================
--- head/Makefile	Mon Dec  1 00:23:12 2008	(r185498)
+++ head/Makefile	Mon Dec  1 00:45:51 2008	(r185499)
@@ -267,6 +267,10 @@ make: .PHONY
 		${MMAKE} all && \
 		${MMAKE} install DESTDIR=${MAKEPATH} BINDIR=
 
+tinderbox:
+	cd ${.CURDIR} && \
+		DOING_TINDERBOX=YES ${MAKE} ${JFLAG} universe
+
 #
 # universe
 #
@@ -274,14 +278,24 @@ make: .PHONY
 # with a reasonable chance of success, regardless of how old your
 # existing system is.
 #
-.if make(universe)
+.if make(universe) || make(tinderbox)
 TARGETS?=amd64 arm i386 ia64 pc98 powerpc sparc64 sun4v
 
+.if defined(DOING_TINDERBOX)
+FAILFILE=tinderbox.failed
+MAKEFAIL=tee -a ${FAILFILE}
+.else
+MAKEFAIL=cat
+.endif
+
 universe: universe_prologue
 universe_prologue:
 	@echo "--------------------------------------------------------------"
 	@echo ">>> make universe started on ${STARTTIME}"
 	@echo "--------------------------------------------------------------"
+.if defined(DOING_TINDERBOX)
+	rm -f ${FAILFILE}
+.endif
 .for target in ${TARGETS}
 KERNCONFS!=	cd ${.CURDIR}/sys/${target}/conf && \
 		find [A-Z]*[A-Z] -type f -maxdepth 0 \
@@ -296,15 +310,15 @@ universe_${target}:
 	    ${MAKE} ${JFLAG} buildworld \
 	    TARGET=${target} \
 	    > _.${target}.buildworld 2>&1 || \
-	    echo "${target} world failed," \
-	    "check _.${target}.buildworld for details")
+	    (echo "${target} world failed," \
+	    "check _.${target}.buildworld for details" | ${MAKEFAIL}))
 	@echo ">> ${target} buildworld completed on `LC_ALL=C date`"
 .endif
 .if exists(${.CURDIR}/sys/${target}/conf/NOTES)
 	@(cd ${.CURDIR}/sys/${target}/conf && env __MAKE_CONF=/dev/null \
 	    ${MAKE} LINT > ${.CURDIR}/_.${target}.makeLINT 2>&1 || \
-	    echo "${target} 'make LINT' failed," \
-	    "check _.${target}.makeLINT for details")
+	    (echo "${target} 'make LINT' failed," \
+	    "check _.${target}.makeLINT for details"| ${MAKEFAIL}))
 .endif
 .for kernel in ${KERNCONFS}
 	@(cd ${.CURDIR} && env __MAKE_CONF=/dev/null \
@@ -312,8 +326,8 @@ universe_${target}:
 	    TARGET=${target} \
 	    KERNCONF=${kernel} \
 	    > _.${target}.${kernel} 2>&1 || \
-	    echo "${target} ${kernel} kernel failed," \
-	    "check _.${target}.${kernel} for details")
+	    (echo "${target} ${kernel} kernel failed," \
+	    "check _.${target}.${kernel} for details"| ${MAKEFAIL}))
 .endfor
 	@echo ">> ${target} completed on `LC_ALL=C date`"
 .endfor
@@ -323,4 +337,11 @@ universe_epilogue:
 	@echo ">>> make universe completed on `LC_ALL=C date`"
 	@echo "                      (started ${STARTTIME})"
 	@echo "--------------------------------------------------------------"
+.if defined(DOING_TINDERBOX)
+	@if [ -e ${FAILFILE} ] ; then \
+		echo "Tinderbox failed:" ;\
+		cat ${FAILFILE} ;\
+		exit 1 ;\
+	fi
+.endif
 .endif


More information about the svn-src-head mailing list