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>