Re: buildworld failed

From: Simon J. Gerraty <sjg_at_juniper.net>
Date: Tue, 08 Feb 2022 17:56:19 UTC
Warner Losh <imp@bsdimp.com> wrote:
> --- sys/abi_compat.c ---
> echo "#include <sys/abi_compat.h>" > sys/abi_compat.c
> sh: cannot create sys/abi_compat.c: No such file or directory
> *** [sys/abi_compat.c] Error code 2
> 
> make[4]: stopped in /usr/src/tools/build/test-includes
> --- sys/acct.c ---
> echo "#include <sys/acct.h>" > sys/acct.c
> sh: cannot create sys/acct.c: No such file or directory
> *** [sys/acct.c] Error code 2
> 
> make[4]: stopped in /usr/src/tools/build/test-includes
> --- sys/aio.c ---
> echo "#include <sys/aio.h>" > sys/aio.c
> sh: cannot create sys/aio.c: No such file or directory
> *** [sys/aio.c] Error code 2
> 
> make[4]: stopped in /usr/src/tools/build/test-includes
> --- sys/acl.c ---
> echo "#include <sys/acl.h>" > sys/acl.c
> sh: cannot create sys/acl.c: No such file or directory
> *** [sys/acl.c] Error code 2
> 
> 
> 
> Same here for me for the past couple of weeks. Haven't been able to
> identify why it fails. My hunch was that a particular objdir wasn't
> being created. As a workaround I edited the Makefile.inc1 to remove
> the test-includes command (line 1128 I think).

The sys subdir does not exist.
Best bet would be to avoid the need:

diff --git a/tools/build/test-includes/Makefile b/tools/build/test-includes/Makefile
index 3ae39a2cb61..eb9016ecc03 100644
--- a/tools/build/test-includes/Makefile
+++ b/tools/build/test-includes/Makefile
@@ -24,11 +24,11 @@ CFLAGS.event.c=	-D_WANT_KEVENT32 -D_WANT_FREEBSD11_KEVENT
 
 .include "badfiles.inc"
 
-.for h in ${HDRS}
+.for h c in ${HDRS:@x@$x ${x:S,/,_,g:R}.c@}
 .if !${BADHDRS:M${h}}
-SRCS+=	${h:R}.c
-CLEANFILES+=${h:R}.c
-${h:R}.c:
+SRCS+=	$c
+CLEANFILES+=$c
+$c:
 	echo "#include <$h>" > ${.TARGET}
 .endif
 .endfor

so you get:

echo "#include <sys/abi_compat.h>" > sys_abi_compat.c
echo "#include <sys/acct.h>" > sys_acct.c
echo "#include <sys/acl.h>" > sys_acl.c
echo "#include <sys/aio.h>" > sys_aio.c
echo "#include <sys/alq.h>" > sys_alq.c
echo "#include <sys/apm.h>" > sys_apm.c
echo "#include <sys/arb.h>" > sys_arb.c
echo "#include <sys/asan.h>" > sys_asan.c
echo "#include <sys/assym.h>" > sys_assym.c

etc