Problem with make installworld

From: <tuexen_at_freebsd.org>
Date: Wed, 20 Mar 2024 20:44:13 UTC
Dear all,

I'm trying to run make buildworld / make installworld on a recent main branch
(some days old).

The problem is related to lib/libc/tests/ssp/Makefile
which contains:
_libclang_rt_ubsan=     ${SYSROOT}${SANITIZER_LIBDIR}/libclang_rt.ubsan_standalone-${CRTARCH}.a
.if exists(${_libclang_rt_ubsan})
PROGS+=         h_raw
LDADD.h_raw+=   ${SANITIZER_LDFLAGS}

When running make buildworld, we have
${SYSROOT} = /usr/obj/usr/home/tuexen/freebsd-src/powerpc.powerpc64/tmp
${SANITIZER_LIBDIR} = /usr/lib/clang/17/lib/freebsd
and so the script is looking for
/usr/obj/usr/home/tuexen/freebsd-src/powerpc.powerpc64/tmp/usr/lib/clang/17/lib/freebsd/libclang_rt.ubsan_standalone-powerpc64.a
which does not exist:
tuexen@blackbird:~ % ls -l /usr/obj/usr/home/tuexen/freebsd-src/powerpc.powerpc64/tmp/usr/lib/clang/17/lib/freebsd/
total 652
-r--r--r--  1 root wheel 284316 Mar 20 18:03 libclang_rt.profile-powerpc.a
-r--r--r--  1 root wheel 380704 Mar 20 17:41 libclang_rt.profile-powerpc64.a

Therefore, h_raw to NOT built.

However, when make installworld runs, we have
${SYSROOT} =
${SANITIZER_LIBDIR} = /usr/lib/clang/17/lib/freebsd
and so the script is looking for
/usr/lib/clang/17/lib/freebsd/libclang_rt.ubsan_standalone-powerpc64.a
which does exist:
tuexen@blackbird:~ % ls -l /usr/lib/clang/17/lib/freebsd/
total 47320
-r--r--r--  1 root wheel 14485032 Dec 24 22:48 libclang_rt.asan-powerpc64.a
-r--r--r--  1 root wheel  1249352 Dec 24 22:48 libclang_rt.asan-powerpc64.so
-r--r--r--  1 root wheel     9820 Dec 24 22:48 libclang_rt.asan-preinit-powerpc64.a
-r--r--r--  1 root wheel   176354 Dec 24 22:48 libclang_rt.asan_cxx-powerpc64.a
-r--r--r--  1 root wheel    10154 Dec 24 22:48 libclang_rt.asan_static-powerpc64.a
-r--r--r--  1 root wheel  8261052 Dec 24 22:48 libclang_rt.msan-powerpc64.a
-r--r--r--  1 root wheel   166924 Dec 24 22:48 libclang_rt.msan_cxx-powerpc64.a
-r--r--r--  1 root wheel   284316 Dec 24 22:51 libclang_rt.profile-powerpc.a
-r--r--r--  1 root wheel   380704 Dec 24 22:48 libclang_rt.profile-powerpc64.a
-r--r--r--  1 root wheel  3925468 Dec 24 22:48 libclang_rt.stats-powerpc64.a
-r--r--r--  1 root wheel     9770 Dec 24 22:48 libclang_rt.stats_client-powerpc64.a
-r--r--r--  1 root wheel 14144552 Dec 24 22:48 libclang_rt.tsan-powerpc64.a
-r--r--r--  1 root wheel   295650 Dec 24 22:48 libclang_rt.tsan_cxx-powerpc64.a
-r--r--r--  1 root wheel    64462 Dec 24 22:48 libclang_rt.ubsan_minimal-powerpc64.a
-r--r--r--  1 root wheel  4550190 Dec 24 22:48 libclang_rt.ubsan_standalone-powerpc64.a
-r--r--r--  1 root wheel   113638 Dec 24 22:48 libclang_rt.ubsan_standalone_cxx-powerpc64.a

Therefore, h_raw is tried to be installed, which fails since it wasn't built.

Is it intended that ${SYSROOT} is different during make installworld and make buildworld?

This is on a Power9 system, but I guess this is not relevant... But maybe I'm wrong.

Best regards
Michael