Makefile: Avoid sanitizing PATH on non-FreeBSD systems

Allow the build process to find host binaries during the host-symlinks target when
cross-building on non-FreeBSD systems. Whilst most non-FreeBSD systems have all
the needed tools in /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin (the final
path added by host-symlinks itself), Homebrew for macOS on Arm defaults to
/opt/homebrew/bin, other more niche systems may also deviate and users may
expect tools in a customised PATH to be picked up, unlike on FreeBSD where we
want to ensure everything comes from base. In particular, (un)xz are needed
from Homebrew on macOS, and thus cannot be found on Arm without this.

Note that non-FreeBSD builds enforce BUILD_WITH_STRICT_TMPPATH, and so the
actual main build steps will still use a sanitised PATH.

Reviewed by:	jrtc27, arichardson
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D37991

(cherry picked from commit 16fbf01912)
This commit is contained in:
Jake Freeland 2023-01-19 22:24:44 +00:00 committed by Jessica Clarke
parent fd22978f86
commit 6879fc8942

View file

@ -216,7 +216,12 @@ META_TGT_WHITELIST+= \
.ORDER: buildkernel reinstallkernel
.ORDER: buildkernel reinstallkernel.debug
# Only sanitize PATH on FreeBSD.
# PATH may include tools that are required to cross-build
# on non-FreeBSD systems.
.if ${.MAKE.OS} == "FreeBSD"
PATH= /sbin:/bin:/usr/sbin:/usr/bin
.endif
MAKEOBJDIRPREFIX?= /usr/obj
_MAKEOBJDIRPREFIX!= /usr/bin/env -i PATH=${PATH} ${MAKE} MK_AUTO_OBJ=no \
${.MAKEFLAGS:MMAKEOBJDIRPREFIX=*} __MAKE_CONF=${__MAKE_CONF} \