Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 3 Nov 2012 09:47:35 +1100 (EST)
From:      Peter Jeremy <peter@rulingia.com>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   bin/173308: [patch] Support "make universe" with read-only src tree
Message-ID:  <201211022247.qA2MlZCd036182@server.rulingia.com>
Resent-Message-ID: <201211022250.qA2Mo0MB078367@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>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@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:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201211022247.qA2MlZCd036182>