Module Name:    src
Committed By:   apb
Date:           Fri Aug 22 10:51:18 UTC 2014

Modified Files:
        src/distrib/sets: Makefile

Log Message:
Adapt the sortlists target to deal with commented file names, like
"#./dir/file".  Such lines now compare equal to their uncommented
counterparts like "./dir/file".


To generate a diff of this commit:
cvs rdiff -u -r1.97 -r1.98 src/distrib/sets/Makefile

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/sets/Makefile
diff -u src/distrib/sets/Makefile:1.97 src/distrib/sets/Makefile:1.98
--- src/distrib/sets/Makefile:1.97	Tue Aug  5 15:45:49 2014
+++ src/distrib/sets/Makefile	Fri Aug 22 10:51:18 2014
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.97 2014/08/05 15:45:49 apb Exp $
+#	$NetBSD: Makefile,v 1.98 2014/08/22 10:51:18 apb Exp $
 
 # Experimental RCS METALOG versioning
 # (Needs host's rcs(1) commands)
@@ -304,15 +304,26 @@ makesyspkgsums: .PHONY check_RELEASEDIR
 makedeps: .PHONY
 	${SETSCMD} ./syspkgdeps all >${.CURDIR}/deps
 
-# Sort the lists files
+# Sort the lists files.
+#
+# The tricky stuff with awk and sort -k options is to ensure that the
+# heading remains undisturbed, and on non-heading lines anything before
+# the first "." is ignored, so that "./dir/file" and "#./dir/file" are
+# sorted together.
+#
 sortlists: .PHONY
 	find ${.CURDIR}/lists \! \( -name CVS -prune \) \! -name .#\* \
 	    -type f -print \
 	| while read f ; do \
 	    ${_MKSHMSG} "sorting $${f#${.CURDIR}/}" ; \
-	    { grep '^#' "$$f" ; \
-	      grep -v '^#' "$$f" | sort ; \
-	    } | cat -s >"$$f".tmp; \
+	    awk 'BEGIN { inheader = 1 } \
+		 /^#*\.\// { inheader = 0 } \
+		 // { tag = (inheader ? NR : 999999); \
+		      print tag "." $$0 }' \
+		<"$$f" \
+	    | sort -t . -k 1n,2 -k 3 \
+	    | cut -d . -f 2- \
+	    | cat -s >"$$f".tmp; \
 	    if cmp "$$f" "$$f".tmp >/dev/null; then \
 	      : "$$f is unchanged" ; \
 	      rm "$$f".tmp ; \

Reply via email to