include: Delete stale symlinks using find(1) instead of a shell loop.

This reduces the number of execve() syscalls during make includes by 88.

Reviewed By:	jhb
Differential Revision: https://reviews.freebsd.org/D27622
This commit is contained in:
Alex Richardson 2021-01-19 11:35:12 +00:00
parent a81c165bce
commit 8d30571d45

View file

@ -273,26 +273,19 @@ stage_includes: ${SHARED}
SDESTDIR= ${SYSROOT:U${DESTDIR}}
# Take care of stale directory-level symlinks.
# Note: The "|| true" after find is needed in case one of the directories does
# not exist (yet).
compat:
.for i in ${LDIRS} ${LSUBDIRS} machine ${_MARCHS} crypto
if [ -L ${SDESTDIR}${INCLUDEDIR}/$i ]; then \
rm -f ${SDESTDIR}${INCLUDEDIR}/$i; \
fi
.endfor
cd ${SDESTDIR}${INCLUDEDIR}; find ${LDIRS} ${LSUBDIRS} machine ${_MARCHS} \
crypto -maxdepth 0 -mindepth 0 -type l -print -delete || true
mtree -deU ${NO_ROOT:D-W} ${MTREE_FOLLOWS_SYMLINKS} \
-f ${SRCTOP}/etc/mtree/BSD.include.dist \
-p ${SDESTDIR}${INCLUDEDIR} > /dev/null
copies: .PHONY .META
.for i in ${LDIRS} ${LSUBDIRS} ${LSUBSUBDIRS} crypto machine machine/pc \
${_MARCHS}
if [ -d ${SDESTDIR}${INCLUDEDIR}/$i ]; then \
cd ${SDESTDIR}${INCLUDEDIR}/$i; \
for h in *.h; do \
if [ -L $$h ]; then rm -f $$h; fi; \
done; \
fi
.endfor
cd ${SDESTDIR}${INCLUDEDIR}; find ${LDIRS} ${LSUBDIRS} ${LSUBSUBDIRS} crypto \
machine machine/pc ${_MARCHS} -maxdepth 1 -mindepth 1 -type l \
-name "*.h" -print -delete || true
.for i in ${LDIRS} ${LSUBDIRS:Ndev/agp:Ndev/acpica:Ndev/evdev:Ndev/hid:Ndev/hyperv:Ndev/pci:Ndev/veriexec} ${LSUBSUBDIRS}
cd ${SRCTOP}/sys; \
${INSTALL} -C ${TAG_ARGS} -o ${BINOWN} -g ${BINGRP} -m 444 $i/*.h \