bin/173308: [patch] Support "make universe" with read-only src tree

Peter Jeremy peter at rulingia.com
Fri Nov 2 22:50:01 UTC 2012


>Number:         173308
>Category:       bin
>Synopsis:       [patch] Support "make universe" with read-only src tree
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Fri Nov 02 22:50:00 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator:     Peter Jeremy
>Release:        FreeBSD 8.3-STABLE amd64
>Organization:
FreeBSD
>Environment:
System: FreeBSD server.rulingia.com 8.3-STABLE FreeBSD 8.3-STABLE #18 r237444M: Sun Jul 8 10:47:08 EST 2012 root at server.rulingia.com:/var/obj/usr/src/sys/server amd64

>Description:
	"make universe" creates separate logs for each target and
	architecture but these are all hard-wired to be in the tree
	being built.  This prevents the use of "make universe" with
	a read-only root (in my case, I wanted to use a ro NFS mount),

>How-To-Repeat:
	Mount a source tree read-only and run "make universe".  It will
	report lots of failures like:
cannot create _.amd64.buildworld: Read-only file system

>Fix:
	The following patch creates a new "LOGDIR" variable and creates
	all the "make universe" logfiles in that directory.  If not
	specified, it defaults to "${.CURDIR}" for consistency with the
	existing behaviour.

Index: head/Makefile
===================================================================
--- head/Makefile	(revision 242498)
+++ head/Makefile	(working copy)
@@ -346,6 +346,9 @@
 .endif
 KERNSRCDIR?=		${.CURDIR}/sys
 
+# Directory for writing logs etc
+LOGDIR?=${.CURDIR}
+
 targets:
 	@echo "Supported TARGET/TARGET_ARCH pairs for world and kernel targets"
 .for target in ${TARGETS}
@@ -355,7 +358,7 @@
 .endfor
 
 .if defined(DOING_TINDERBOX)
-FAILFILE=${.CURDIR}/_.tinderbox.failed
+FAILFILE=${LOGDIR}/_.tinderbox.failed
 MAKEFAIL=tee -a ${FAILFILE}
 .else
 MAKEFAIL=cat
@@ -384,9 +387,9 @@
 	    ${MAKE} ${JFLAG} ${UNIVERSE_TARGET} \
 	    TARGET=${target} \
 	    TARGET_ARCH=${target_arch} \
-	    > _.${target}.${target_arch}.${UNIVERSE_TARGET} 2>&1 || \
+	    > ${LOGDIR}/_.${target}.${target_arch}.${UNIVERSE_TARGET} 2>&1 || \
 	    (echo "${target}.${target_arch} ${UNIVERSE_TARGET} failed," \
-	    "check _.${target}.${target_arch}.${UNIVERSE_TARGET} for details" | \
+	    "check ${LOGDIR}/_.${target}.${target_arch}.${UNIVERSE_TARGET} for details" | \
 	    ${MAKEFAIL}))
 	@echo ">> ${target}.${target_arch} ${UNIVERSE_TARGET} completed on `LC_ALL=C date`"
 .endfor
@@ -394,9 +397,9 @@
 .if !defined(MAKE_JUST_WORLDS)
 .if exists(${KERNSRCDIR}/${target}/conf/NOTES)
 	@(cd ${KERNSRCDIR}/${target}/conf && env __MAKE_CONF=/dev/null \
-	    ${MAKE} LINT > ${.CURDIR}/_.${target}.makeLINT 2>&1 || \
+	    ${MAKE} LINT > ${LOGDIR}/_.${target}.makeLINT 2>&1 || \
 	    (echo "${target} 'make LINT' failed," \
-	    "check _.${target}.makeLINT for details"| ${MAKEFAIL}))
+	    "check ${LOGDIR}/_.${target}.makeLINT for details"| ${MAKEFAIL}))
 .endif
 	@cd ${.CURDIR} && ${MAKE} ${.MAKEFLAGS} TARGET=${target} \
 	    universe_kernels
@@ -425,9 +428,9 @@
 	    TARGET=${TARGET} \
 	    TARGET_ARCH=${TARGET_ARCH_${kernel}} \
 	    KERNCONF=${kernel} \
-	    > _.${TARGET}.${kernel} 2>&1 || \
+	    > ${LOGDIR}/_.${TARGET}.${kernel} 2>&1 || \
 	    (echo "${TARGET} ${kernel} kernel failed," \
-	    "check _.${TARGET}.${kernel} for details"| ${MAKEFAIL}))
+	    "check ${LOGDIR}/_.${TARGET}.${kernel} for details"| ${MAKEFAIL}))
 .endfor
 universe: universe_epilogue
 universe_epilogue:


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list