git: 81805ec30074 - main - depend-cleanup.sh: Generalise lib32 code and avoid duplication

From: Jessica Clarke <jrtc27_at_FreeBSD.org>
Date: Thu, 27 Jul 2023 04:12:01 UTC
The branch main has been updated by jrtc27:

URL: https://cgit.FreeBSD.org/src/commit/?id=81805ec30074363e5d7d7add37b3ccf4f1eb396b

commit 81805ec30074363e5d7d7add37b3ccf4f1eb396b
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

    depend-cleanup.sh: Generalise lib32 code and avoid duplication
    
    By passing through _ALL_libcompats we can avoid hard-coding the list of
    libcompats in depend-cleanup.sh. This cleanup also makes clean_dep
    shorter by using a loop instead of handling each case explicitly (at the
    expense of slightly tweaked logging).
    
    Reviewed by:    brooks, jhb
    Differential Revision:  https://reviews.freebsd.org/D41187
---
 Makefile.inc1                 |  1 +
 tools/build/depend-cleanup.sh | 44 +++++++++++++++++++++++++------------------
 2 files changed, 27 insertions(+), 18 deletions(-)

diff --git a/Makefile.inc1 b/Makefile.inc1
index b3a33a928ee5..3f0546861bbd 100644
--- a/Makefile.inc1
+++ b/Makefile.inc1
@@ -1026,6 +1026,7 @@ _sanity_check: .PHONY .MAKE
 _cleanobj_fast_depend_hack: .PHONY
 	@echo ">>> Deleting stale dependencies...";
 	MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH} \
+	    ALL_libcompats=${_ALL_libcompats:Q} \
 	    sh ${.CURDIR}/tools/build/depend-cleanup.sh ${OBJTOP}
 
 _worldtmp: .PHONY
diff --git a/tools/build/depend-cleanup.sh b/tools/build/depend-cleanup.sh
index 39ab518d5dc9..687f04f57f8c 100755
--- a/tools/build/depend-cleanup.sh
+++ b/tools/build/depend-cleanup.sh
@@ -73,6 +73,10 @@ if [ -z "${MACHINE_ARCH+set}" ]; then
 	err "MACHINE_ARCH not set"
 fi
 
+if [ -z "${ALL_libcompats+set}" ]; then
+	err "ALL_libcompats not set"
+fi
+
 run()
 {
 	if [ "$VERBOSE" ]; then
@@ -88,18 +92,15 @@ run()
 # $3 source extension
 clean_dep()
 {
-	if egrep -qw "$2\.$3" "$OBJTOP"/$1/.depend.$2.*o 2>/dev/null; then
-		echo "Removing stale dependencies and objects for $2.$3"
-		run rm -f \
-		    "$OBJTOP"/$1/.depend.$2.* \
-		    "$OBJTOP"/$1/$2.*o
-	fi
-	if egrep -qw "$2\.$3" "$OBJTOP"/obj-lib32/$1/.depend.$2.*o 2>/dev/null; then
-		echo "Removing 32-bit stale dependencies and objects for $2.$3"
-		run rm -f \
-		    "$OBJTOP"/obj-lib32/$1/.depend.$2.* \
-		    "$OBJTOP"/obj-lib32/$1/$2.*o
-	fi
+	for libcompat in "" $ALL_libcompats; do
+		dirprfx=${libcompat:+obj-lib${libcompat}/}
+		if egrep -qw "$2\.$3" "$OBJTOP"/$dirprfx$1/.depend.$2.*o 2>/dev/null; then
+			echo "Removing stale ${libcompat:+lib${libcompat} }dependencies and objects for $2.$3"
+			run rm -f \
+			    "$OBJTOP"/$dirprfx$1/.depend.$2.* \
+			    "$OBJTOP"/$dirprfx$1/$2.*o
+		fi
+	done
 }
 
 # Date      Rev      Description
@@ -113,7 +114,10 @@ if [ -e "$OBJTOP"/cddl/lib/libzfs/.depend.libzfs_changelist.o ] && \
     egrep -qw "cddl/contrib/opensolaris/lib/libzfs/common/libzfs_changelist.c" \
     "$OBJTOP"/cddl/lib/libzfs/.depend.libzfs_changelist.o; then
 	echo "Removing old ZFS tree"
-	run rm -rf "$OBJTOP"/cddl "$OBJTOP"/obj-lib32/cddl
+	for libcompat in "" $ALL_libcompats; do
+		dirprfx=${libcompat:+obj-lib${libcompat}/}
+		run rm -rf "$OBJTOP"/${dirprfx}cddl
+	done
 fi
 
 # 20200916  WARNS bumped, need bootstrapped crunchgen stubs
@@ -134,7 +138,10 @@ fi
 # 20210108  821aa63a0940   non-widechar version of ncurses removed
 if [ -e "$OBJTOP"/lib/ncurses/ncursesw ]; then
 	echo "Removing stale ncurses objects"
-	run rm -rf "$OBJTOP"/lib/ncurses "$OBJTOP"/obj-lib32/lib/ncurses
+	for libcompat in "" $ALL_libcompats; do
+		dirprfx=${libcompat:+obj-lib${libcompat}/}
+		run rm -rf "$OBJTOP"/${dirprfx}lib/ncurses
+	done
 fi
 
 # 20210608  f20893853e8e    move from atomic.S to atomic.c
@@ -183,10 +190,11 @@ clean_dep   lib/libc        kqueue1 S
 # 20230623  b077aed33b7b    OpenSSL 3.0 update
 if [ -f "$OBJTOP"/secure/lib/libcrypto/aria.o ]; then
 	echo "Removing old OpenSSL 1.1.1 tree"
-	run rm -rf "$OBJTOP"/secure/lib/libcrypto \
-	    "$OBJTOP"/secure/lib/libssl \
-	    "$OBJTOP"/obj-lib32/secure/lib/libcrypto \
-	    "$OBJTOP"/obj-lib32/secure/lib/libssl
+	for libcompat in "" $ALL_libcompats; do
+		dirprfx=${libcompat:+obj-lib${libcompat}/}
+		run rm -rf "$OBJTOP"/${dirprfx}secure/lib/libcrypto \
+		    "$OBJTOP"/${dirprfx}secure/lib/libssl
+	done
 fi
 
 # 20230714  ee8b0c436d72    replace ffs/fls implementations with clang builtins