stale-symlink-buildworld.sh: a script to check for stale symlinks on a FreeBSD system

You can run the script before or after `make installworld'

You may also check your local ports with:

  env STALE_SYMLINK_BUILDWORLD_DIRS=/usr/local ./stale-symlink-buildworld.sh

PR: 276235
This commit is contained in:
Wolfram Schneider 2024-07-07 12:59:20 +00:00
parent 8c108b341c
commit e880dd644f

View file

@ -0,0 +1,53 @@
#!/bin/sh
# Copyright (c) Feb 2024 Wolfram Schneider <wosch@FreeBSD.org>
# SPDX-License-Identifier: BSD-2-Clause
#
# stale-symlink-buildworld.sh - check for stale symlinks on a FreeBSD system
#
# You can run the script before or after `make installworld'
#
PATH="/bin:/usr/bin"; export PATH
: ${ncpu=$(nproc)}
# check other directories as well
: ${STALE_SYMLINK_BUILDWORLD_DIRS="/usr/obj"}
trap 'rm -f $script' 0
script=$(mktemp -t stale-symlink)
chmod u+x $script
# create a temporary shell script to check for stale symbolic links
cat << 'EOF' > $script
file="$1"
if [ ! -e "$file" ]; then
echo "stale symlink detected: $(ls -ld $file)" >&2
exit 1
else
exit 0
fi
EOF
find -s -H \
/bin \
/boot \
/etc \
/lib \
/libexec \
/sbin \
/usr/bin \
/usr/include \
/usr/lib \
/usr/lib32 \
/usr/libdata \
/usr/libexec \
/usr/sbin \
/usr/src \
/usr/share \
$STALE_SYMLINK_BUILDWORLD_DIRS \
-type l \
-print0 | xargs -n1 -0 -P${ncpu} $script
#EOF