svn commit: r359461 - in head: . tools/build
Ed Maste
emaste at FreeBSD.org
Mon Mar 30 20:20:25 UTC 2020
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
More information about the svn-src-head
mailing list