Module Name: src
Committed By: apb
Date: Tue Nov 22 18:25:48 UTC 2011
Modified Files:
src/share/mk: bsd.clean.mk
Log Message:
Use :Q to deal with the case that CLEANFILES or CLEANDIRFILES
contains quoted substrings (such as file names with spaces).
Problem reported by Joseph Koshy, who also provided the
important part of the fix.
To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/share/mk/bsd.clean.mk
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/share/mk/bsd.clean.mk
diff -u src/share/mk/bsd.clean.mk:1.4 src/share/mk/bsd.clean.mk:1.5
--- src/share/mk/bsd.clean.mk:1.4 Wed Oct 5 12:34:04 2011
+++ src/share/mk/bsd.clean.mk Tue Nov 22 18:25:48 2011
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.clean.mk,v 1.4 2011/10/05 12:34:04 apb Exp $
+# $NetBSD: bsd.clean.mk,v 1.5 2011/11/22 18:25:48 apb Exp $
# <bsd.clean.mk>
#
@@ -44,18 +44,27 @@ __docleandir: .PHONY .MADE __cleanuse CL
# If the list of files is empty, then the commands
# reduce to "true", with an "@" prefix to prevent echoing.
#
+# The use of :M* is needed to handle the case that CLEANFILES
+# or CLEANDIRFILES is not completely empty but contains spaces.
+# This can easily happen when CLEANFILES or CLEANDIRFILES is set
+# from other variables that happen to be empty.)
+#
+# The use of :Q is needed to handle the case that CLEANFILES
+# or CLEANDIRFILES contains quoted strings, such as
+# CLEANFILES = "filename with spaces".
+#
__cleanuse: .USE
.if 0 # print "# clean CLEANFILES" for debugging
- ${"${.ALLSRC:@v@${${v}:M*}@}" == "":?@true:${_MKMSG} \
+ ${"${.ALLSRC:@v@${${v}:M*}@:Q}" == "":?@true:${_MKMSG} \
"clean" ${.ALLSRC} }
.endif
.for _d in ${"${.OBJDIR}" == "${.CURDIR}" || "${MKCLEANSRC}" == "no" \
:? ${.OBJDIR} \
: ${.OBJDIR} ${.CURDIR} }
- ${"${.ALLSRC:@v@${${v}:M*}@}" == "":?@true: \
+ ${"${.ALLSRC:@v@${${v}:M*}@:Q}" == "":?@true: \
(cd ${_d} && rm -f ${.ALLSRC:@v@${${v}}@} || true) }
.if "${MKCLEANVERIFY}" == "yes"
- @${"${.ALLSRC:@v@${${v}:M*}@}" == "":?true: \
+ @${"${.ALLSRC:@v@${${v}:M*}@:Q}" == "":?true: \
bad="\$(cd ${_d} && ls -d ${.ALLSRC:@v@${${v}}@} 2>/dev/null)"; \
if test -n "\$bad"; then \
echo "Failed to remove files from ${_d}:" ; \