Makefile: Force DISTDIR=/ for (update-)packages

The make(1) variable DISTDIR is used by both ports and src with a
different meaning.  Some users may set DISTDIR in /etc/make.conf
for ports, which previously worked fine when building src since
the src targets which used this variable were not very commonly
used (mainly, make distributeworld).

Unfortunately, with pkgbase becoming the default, this is no longer
true since make (update-)packages invokes make stageworld, which is
sensitive to DISTDIR, and these users find that their build now fails.

A correct fix for this probably requires renaming one or both of
the DISTDIR variables, but for now, work around the problem by
setting DISTDIR=/ for the user-facing pkgbase targets, packages
and update-package.  Since setting DISTDIR doesn't work for these
targets anyway, this should not break any existing configurations.

MFC after:	1 week
PR:		290010
Reported by:	Oleh Vinichenko <[email protected]>
Reviewed by:	imp, bapt
Sponsored by:	https://www.patreon.com/bsdivy
Differential Revision:	https://reviews.freebsd.org/D52929

(cherry picked from commit f7dc7d7af3)
This commit is contained in:
Lexi Winter committed 2025-10-10 07:15:56 +01:00
1 parent e3df9a78da
commit 182eef99ee
1 file changed
+4 -1
+4 -1
View File
@@ -179,7 +179,7 @@ TGTS= all all-man buildenv buildenvvars buildetc buildkernel buildworld \
create-packages-world create-packages-kernel \
create-packages-kernel-repo create-packages-world-repo \
create-packages-source create-packages \
update-packages packages installconfig real-packages real-update-packages \
installconfig real-packages real-update-packages \
sign-packages package-pkg print-dir test-system-compiler test-system-linker \
test-includes
@@ -529,6 +529,9 @@ kernels: .PHONY
worlds: .PHONY
@cd ${.CURDIR}; ${SUB_MAKE} UNIVERSE_TARGET=buildworld universe
packages update-packages: .PHONY
${_+_}@cd ${.CURDIR}; ${_MAKE} DISTDIR=/ ${.TARGET}
#
# universe
#