Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 25 Jan 2021 15:11:16 GMT
From:      Alex Richardson <arichardson@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: a8b20f4fabbc - main - Create symlinks to host tools on non-FreeBSD hosts
Message-ID:  <202101251511.10PFBGZJ039546@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by arichardson:

URL: https://cgit.FreeBSD.org/src/commit/?id=a8b20f4fabbca9bef377009429848d4f9cea18ae

commit a8b20f4fabbca9bef377009429848d4f9cea18ae
Author:     Alexander Richardson <Alexander.Richardson@cl.cam.ac.uk>
AuthorDate: 2021-01-25 14:18:16 +0000
Commit:     Alex Richardson <arichardson@FreeBSD.org>
CommitDate: 2021-01-25 15:09:43 +0000

    Create symlinks to host tools on non-FreeBSD hosts
    
    This is unnecessary when cross-building from Linux/macOS.
    Additionally, cp -p appears to be broken on macOS Big Sur
    (https://openradar.appspot.com/8957219).
    
    For some unknown reason this commit appears to fix
    freezes when building on macOS Big Sur.
    This also fixes building in docker with volume mounts
    with ACLs, since setting the ACL with cp -p fails otherwise.
    
    Obtained From:  CheriBSD
    Tested By:      gnn (macOS Big Sur), Nathaniel Wesley Filardo (docker)
    Reviewed By:    jrtc27, imp
    Differential Revision: https://reviews.freebsd.org/D28267
---
 tools/build/Makefile | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/tools/build/Makefile b/tools/build/Makefile
index c0c1786d4bfa..48e62e6561b7 100644
--- a/tools/build/Makefile
+++ b/tools/build/Makefile
@@ -272,7 +272,17 @@ _host_tools_to_symlink=	basename bzip2 bunzip2 chmod chown cmp comm cp date dd \
 _make_abs!=	which "${MAKE}"
 _host_abs_tools_to_symlink=	${_make_abs}:make ${_make_abs}:bmake
 
-.if ${.MAKE.OS} != "FreeBSD"
+.if ${.MAKE.OS} == "FreeBSD"
+# When building on FreeBSD we always copy the host tools instead of linking
+# into WORLDTMP to avoid issues with incompatible libraries (see r364030).
+# Note: we could create links if we don't intend to update the current machine.
+_COPY_HOST_TOOL=cp -pf
+.else
+# However, this is not necessary on Linux/macOS. Additionally, copying the host
+# tools to another directory with cp -p results in freezes on macOS Big Sur for
+# some unknown reason. It can also break building inside docker containers if
+# there are ACLs on shared volumes.
+_COPY_HOST_TOOL=ln -sfn
 _make_abs!=	which "${MAKE}"
 _host_abs_tools_to_symlink+=	${_make_abs}:make ${_make_abs}:bmake
 .if ${.MAKE.OS} == "Darwin"
@@ -293,7 +303,7 @@ host-symlinks:
 		echo "Cannot find host tool '${_tool}' in PATH ($$PATH)." >&2; false; \
 	fi; \
 	rm -f "${DESTDIR}/bin/${_tool}"; \
-	cp -pf "$${source_path}" "${DESTDIR}/bin/${_tool}"
+	${_COPY_HOST_TOOL} "$${source_path}" "${DESTDIR}/bin/${_tool}"
 .endfor
 .for _tool in ${_host_abs_tools_to_symlink}
 	@source_path="${_tool:S/:/ /:[1]}"; \
@@ -302,11 +312,11 @@ host-symlinks:
 		echo "Host tool '${src_path}' is missing"; false; \
 	fi; \
 	rm -f "$${target_path}"; \
-	cp -pf "$${source_path}" "$${target_path}"
+	${_COPY_HOST_TOOL} "$${source_path}" "$${target_path}"
 .endfor
 .if exists(/usr/libexec/flua)
 	rm -f ${DESTDIR}/usr/libexec/flua
-	cp -pf /usr/libexec/flua ${DESTDIR}/usr/libexec/flua
+	${_COPY_HOST_TOOL} /usr/libexec/flua ${DESTDIR}/usr/libexec/flua
 .endif
 
 # Create all the directories that are needed during the legacy, bootstrap-tools



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202101251511.10PFBGZJ039546>