Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 30 Mar 2020 20:20:16 +0000 (UTC)
From:      Ed Maste <emaste@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r359461 - in head: . tools/build
Message-ID:  <202003302020.02UKKGs3076840@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: emaste
Date: Mon Mar 30 20:20:15 2020
New Revision: 359461
URL: https://svnweb.freebsd.org/changeset/base/359461

Log:
  add shell script for stale dependency hack
  
  It's rather awkward to debug issues with the dependency cleanup hacks
  when implemented via make.  Add a cleanup shell script and move the
  libomp hack there as an initial example.
  
  Reviewed by:	brooks
  MFC after:	2 weeks
  Sponsored by:	The FreeBSD Foundation
  Differential Revision:	https://reviews.freebsd.org/D24228

Added:
  head/tools/build/depend-cleanup.sh   (contents, props changed)
Modified:
  head/Makefile.inc1

Modified: head/Makefile.inc1
==============================================================================
--- head/Makefile.inc1	Mon Mar 30 20:15:19 2020	(r359460)
+++ head/Makefile.inc1	Mon Mar 30 20:20:15 2020	(r359461)
@@ -924,17 +924,8 @@ _sanity_check: .PHONY .MAKE
 # replacing generated files.  Handle these cases here in an ad-hoc fashion.
 _cleanobj_fast_depend_hack: .PHONY
 	@echo ">>> Deleting stale dependencies...";
+	sh ${.CURDIR}/tools/build/depend-cleanup.sh ${OBJTOP}
 # Date      SVN Rev  Syscalls/Changes
-# 20200310  r358851  rename of openmp's ittnotify_static.c to .cpp
-.for f in ittnotify_static
-	@if [ -e "${OBJTOP}/lib/libomp/.depend.${f}.pico" ] && \
-	    egrep -qw '${f}\.c' ${OBJTOP}/lib/libomp/.depend.${f}.pico; then \
-		echo "Removing stale dependencies for ${f}"; \
-		rm -f ${OBJTOP}/lib/libomp/.depend.${f}.* \
-		   ${OBJTOP}/obj-lib32/lib/libomp/.depend.${f}.* \
-		   ${LIBCOMPAT:D${LIBCOMPAT_OBJTOP}/lib/libomp/.depend.${f}.*}; \
-	fi
-.endfor
 # Syscall stubs rewritten in C and obsolete MD assembly implementations
 # 20191009  r353340  removal of opensolaris_atomic.S (also r353381)
 .if ${MACHINE} != i386

Added: head/tools/build/depend-cleanup.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/tools/build/depend-cleanup.sh	Mon Mar 30 20:20:15 2020	(r359461)
@@ -0,0 +1,36 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+# Our current make(1)-based approach to dependency tracking cannot cope with
+# certain source tree changes, including:
+# - removing source files
+# - replacing generated files with files committed to the tree
+# - changing file extensions (e.g. a C source file rewritten in C++)
+#
+# We handle those cases here in an ad-hoc fashion by looking for the known-
+# bad case in the main .depend file, and if found deleting all of the related
+# .depend files (including for example the lib32 version).
+
+OBJTOP=$1
+if [ ! -d "$OBJTOP" ]; then
+	echo "usage: $(basename $0) objtop" >&2
+	exit 1
+fi
+
+# $1 directory
+# $2 source filename w/o extension
+# $3 source extension
+clean_dep()
+{
+	if [ -e "$OBJTOP"/$1/.depend.$2.pico ] && \
+	    egrep -qw "$2\.$3" "$OBJTOP"/$1/.depend.$2.pico; then \
+		echo "Removing stale dependencies for $2.$3"; \
+		rm -f "$OBJTOP"/$1/.depend.$2.* \
+		    "$OBJTOP"/obj-lib32/$1/.depend.$2.*
+	fi
+}
+
+# Date      Rev      Description
+# 20200310  r358851  rename of openmp's ittnotify_static.c to .cpp
+clean_dep lib/libomp ittnotify_static c



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202003302020.02UKKGs3076840>