Re: git: 65f28f63a73d - main - tools/build: Create toolchain symlinks for non-absolute compiler/linker

From: Jessica Clarke <jrtc27_at_freebsd.org>
Date: Fri, 28 Jul 2023 18:48:26 UTC
On 28 Jul 2023, at 19:40, Renato Botelho <garga@FreeBSD.org> wrote:
> 
> On 27/07/23 01:12, Jessica Clarke wrote:
>> The branch main has been updated by jrtc27:
>> URL: https://cgit.FreeBSD.org/src/commit/?id=65f28f63a73d3371d9d724a2018be6d1ada0d3e0
>> commit 65f28f63a73d3371d9d724a2018be6d1ada0d3e0
>> Author:     Jessica Clarke <jrtc27@FreeBSD.org>
>> AuthorDate: 2023-07-27 04:10:47 +0000
>> Commit:     Jessica Clarke <jrtc27@FreeBSD.org>
>> CommitDate: 2023-07-27 04:10:47 +0000
>>     tools/build: Create toolchain symlinks for non-absolute compiler/linker
>>          If any of the toolchain variables are not absolute then we need to
>>     create a symlink in WORLDTMP/legacy/bin in order to make them available
>>     during a BUILD_WITH_STRICT_TMPPATH build.
>>          Reviewed by:    brooks, jhb
>>     Differential Revision:  https://reviews.freebsd.org/D41188
> 
> I'm having problems with etcupdate and I suspect this can be the commit that caused the trouble.  After installworld/installkernel on a chroot Boot Environment directory, etcupdate fails with following error message:
> 
> Failed to build new tree.
> 
> I've checked etcupdate log and saw this:
> 
> cd /usr/src/tools/build;  make DIRPRFX=tools/build/ DESTDIR=/var/db/etcupdate/etcupdate-8C3uJ1L/usr/obj/usr/src/amd64.amd64/tmp/legacy host-symlinks
> Linking host tools into /var/db/etcupdate/etcupdate-8C3uJ1L/usr/obj/usr/src/amd64.amd64/tmp/legacy/bin
> cp: /usr/bin/basename: Cross-device link

That’ll be 246364454fc1 ("etcupdate: Use new buildetc and installetc
targets when available”) which exposed; this commit is just for
cc/c++/cpp/ld, and creates actual symlinks. On FreeBSD we copy rather
than symlink tools so that we don’t have issues during installworld.
But we’re not actually trying to create any hardlinks, just copy. What
you’re discovering is that you’re on one of the FreeBSD versions where
ZFS’s clone_range is broken (exposes EXDEV when it’s supposed to be
handled by the kernel with a fallback implementation) and cp is using
clone_range. Update your kernel first and all should be good.

Jess