From 02ef0b6d76e9717b8e3182dd706e23fd2702701d Mon Sep 17 00:00:00 2001 From: Siva Mahadevan Date: Wed, 20 May 2026 16:05:53 -0400 Subject: [PATCH] universe: allow moving build logs to UNIVERSE_LOGDIR This allows `make universe` or `make tinderbox` to build from a read-only src tree. Reviewed by: ziaee, imp, delphij Approved by: lwhsu (mentor), emaste (mentor) MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D55566 --- Makefile | 17 ++++++++--------- share/man/man7/build.7 | 7 ++++++- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index 9308883b850..e7a565cff05 100644 --- a/Makefile +++ b/Makefile @@ -599,8 +599,9 @@ targets: .PHONY .endfor .endfor +UNIVERSE_LOGDIR?=${.CURDIR} .if defined(DOING_TINDERBOX) -FAILFILE=${.CURDIR}/_.tinderbox.failed +FAILFILE=${UNIVERSE_LOGDIR}/_.tinderbox.failed MAKEFAIL=tee -a ${FAILFILE} .else MAKEFAIL=cat @@ -612,9 +613,7 @@ universe_prologue: .PHONY @echo "--------------------------------------------------------------" @echo ">>> make universe started on ${STARTTIME}" @echo "--------------------------------------------------------------" -.if defined(DOING_TINDERBOX) @rm -f ${FAILFILE} -.endif universe-toolchain: .PHONY universe_prologue @echo "--------------------------------------------------------------" @@ -630,9 +629,9 @@ universe-toolchain: .PHONY universe_prologue TOOLS_PREFIX_UNDEF= \ kernel-toolchain \ MK_LLVM_TARGET_ALL=yes \ - > _.${.TARGET} 2>&1 || \ + > ${UNIVERSE_LOGDIR}/_.${.TARGET} 2>&1 || \ (echo "${.TARGET} failed," \ - "check _.${.TARGET} for details" | \ + "check ${UNIVERSE_LOGDIR}/_.${.TARGET} for details" | \ ${MAKEFAIL}; false) @if [ ! -e "${HOST_OBJTOP}/tmp/usr/bin/cc" ]; then \ echo "Missing host compiler at ${HOST_OBJTOP}/tmp/usr/bin/cc?" >&2; \ @@ -716,9 +715,9 @@ universe_${target}_${target_arch}: universe_${target}_prologue .MAKE .PHONY TARGET=${target} \ TARGET_ARCH=${target_arch} \ ${MAKE_PARAMS_${target_arch}} \ - > _.${target}.${target_arch}.${UNIVERSE_TARGET} 2>&1 || \ + > ${UNIVERSE_LOGDIR}/_.${target}.${target_arch}.${UNIVERSE_TARGET} 2>&1 || \ (echo "${target}.${target_arch} ${UNIVERSE_TARGET} failed," \ - "check _.${target}.${target_arch}.${UNIVERSE_TARGET} for details" | \ + "check ${UNIVERSE_LOGDIR}/_.${target}.${target_arch}.${UNIVERSE_TARGET} for details" | \ ${MAKEFAIL})) @echo ">> ${target}.${target_arch} ${UNIVERSE_TARGET} completed on `LC_ALL=C date`" .endfor @@ -775,9 +774,9 @@ universe_kernconf_${TARGET}_${kernel}: .MAKE TARGET_ARCH=${TARGET_ARCH_${kernel}} \ ${MAKE_PARAMS_${TARGET_ARCH_${kernel}}} \ KERNCONF=${kernel} \ - > _.${TARGET}.${kernel} 2>&1 || \ + > ${UNIVERSE_LOGDIR}/_.${TARGET}.${kernel} 2>&1 || \ (echo "${TARGET} ${kernel} kernel failed," \ - "check _.${TARGET}.${kernel} for details"| ${MAKEFAIL})) + "check ${UNIVERSE_LOGDIR}/_.${TARGET}.${kernel} for details"| ${MAKEFAIL})) @echo ">> ${TARGET}.${TARGET_ARCH_${kernel}} ${kernel} kernel completed on `LC_ALL=C date`" .endfor .for target_arch in ${TARGET_ARCHES_${TARGET}} diff --git a/share/man/man7/build.7 b/share/man/man7/build.7 index b9a781a9b5a..23980875eaa 100644 --- a/share/man/man7/build.7 +++ b/share/man/man7/build.7 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd April 28, 2026 +.Dd May 20, 2026 .Dt BUILD 7 .Os .Sh NAME @@ -958,6 +958,11 @@ Only build worlds for each supported architecture. Only build kernels for each supported architecture. .It Va WITHOUT_KERNELS Only build worlds for each supported architecture. +.It Va UNIVERSE_LOGDIR +Write all build logs to this directory for each supported architecture. +When invoking +.Cm tinderbox , +also write the summary of all failed targets to this directory. .It Va UNIVERSE_TARGET Execute the specified .Xr make 1