Makefile.inc1: Only copy locales to INSTALLTMP on FreeBSD

Makefile.inc1 copies locales to ${INSTALLTMP} to avoid issues when
running make installworld on a live system.  However, this can break
on non-FreeBSD systems, e.g. on openSUSE where /usr/share/locales
has mode 0555, which means after we copy it, we can't delete it,
so the build fails.

Since this functionality is only useful when installing over a
live system, disable it when the build host is not FreeBSD.

MFC after:	2 weeks
Reviewed by:	kevans, emaste
Sponsored by:	https://www.patreon.com/bsdivy
Differential Revision:	https://reviews.freebsd.org/D56677
This commit is contained in:
Lexi Winter
2026-04-28 20:42:39 +01:00
parent d1c176fedf
commit 4429630d1c
+9 -2
View File
@@ -965,8 +965,10 @@ IMAKE= ${TIME_ENV} ${IMAKEENV} ${MAKE} -f Makefile.inc1 \
${IMAKE_INSTALL} ${IMAKE_MTREE} ${IMAKE_INSTALL} ${IMAKE_MTREE}
.if empty(.MAKEFLAGS:M-n) .if empty(.MAKEFLAGS:M-n)
IMAKEENV+= PATH=${STRICTTMPPATH:Q}:${INSTALLTMP:Q} \ IMAKEENV+= PATH=${STRICTTMPPATH:Q}:${INSTALLTMP:Q} \
LD_LIBRARY_PATH=${INSTALLTMP:Q} \ LD_LIBRARY_PATH=${INSTALLTMP:Q}
PATH_LOCALE=${INSTALLTMP}/locale .if ${.MAKE.OS} == "FreeBSD"
IMAKEENV+= PATH_LOCALE=${INSTALLTMP}/locale
.endif
IMAKE+= __MAKE_SHELL=${INSTALLTMP}/sh IMAKE+= __MAKE_SHELL=${INSTALLTMP}/sh
.else .else
IMAKEENV+= PATH=${TMPPATH:Q}:${INSTALLTMP:Q} IMAKEENV+= PATH=${TMPPATH:Q}:${INSTALLTMP:Q}
@@ -1475,7 +1477,12 @@ distributeworld installworld stageworld: _installcheck_world .PHONY
done); \ done); \
fi; \ fi; \
${INSTALLTMP_COPY_HOST_TOOL} $$libs $$progs ${INSTALLTMP} ${INSTALLTMP_COPY_HOST_TOOL} $$libs $$progs ${INSTALLTMP}
# On non-FreeBSD systems, there's no point copying locales here
# since we aren't going to overwrite them anyway. This avoids
# failing if /usr/share/locale has odd modes (e.g., openSUSE).
.if ${.MAKE.OS} == "FreeBSD"
cp -R $${PATH_LOCALE:-"/usr/share/locale"} ${INSTALLTMP}/locale cp -R $${PATH_LOCALE:-"/usr/share/locale"} ${INSTALLTMP}/locale
.endif
.if defined(NO_ROOT) .if defined(NO_ROOT)
-mkdir -p ${METALOG:H} -mkdir -p ${METALOG:H}
echo "#${MTREE_MAGIC}" > ${METALOG} echo "#${MTREE_MAGIC}" > ${METALOG}