Module Name:    src
Committed By:   uwe
Date:           Sat Feb 11 19:35:45 UTC 2017

Modified Files:
        src/usr.sbin/postinstall: postinstall

Log Message:
Don't use slow file_exists_exact if we don't have to.

file_exists_exact function was introduced in 1.26 for the benefit of
cross-building on OS X case-insensitive file system.  It is extremely
slow on diskless machines.  That becomes especially noticeable when
you upgrade a system that has a lot of obsolete files, it can take
literally hours.


To generate a diff of this commit:
cvs rdiff -u -r1.209 -r1.210 src/usr.sbin/postinstall/postinstall

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

Modified files:

Index: src/usr.sbin/postinstall/postinstall
diff -u src/usr.sbin/postinstall/postinstall:1.209 src/usr.sbin/postinstall/postinstall:1.210
--- src/usr.sbin/postinstall/postinstall:1.209	Mon Jan  9 19:51:31 2017
+++ src/usr.sbin/postinstall/postinstall	Sat Feb 11 19:35:45 2017
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $NetBSD: postinstall,v 1.209 2017/01/09 19:51:31 christos Exp $
+# $NetBSD: postinstall,v 1.210 2017/02/11 19:35:45 uwe Exp $
 #
 # Copyright (c) 2002-2015 The NetBSD Foundation, Inc.
 # All rights reserved.
@@ -523,7 +523,7 @@ obsolete_paths()
 
 	failed=0
 	while read ofile; do
-		if ! file_exists_exact "${ofile}"; then
+		if ! ${file_exists_exact} "${ofile}"; then
 			continue
 		fi
 		ofile="${DEST_DIR}${ofile#.}"
@@ -534,6 +534,8 @@ obsolete_paths()
 		elif [ -d "${ofile}" ]; then
 			ftype="directory"
 			cmd="rmdir"
+		elif [ ! -e "${ofile}" ]; then
+			continue
 		fi
 		if [ "${op}" = "check" ]; then
 			msg "Remove obsolete ${ftype} ${ofile}"
@@ -2328,6 +2330,16 @@ main()
 	DIRMODE=false		# true if "-s" specified a directory
 	SOURCEMODE=false	# true if "-s" specified a source directory
 
+	case "$(uname -s)" in
+	Darwin)
+		# case sensitive match for case insensitive fs
+		file_exists_exact=file_exists_exact
+		;;
+	*)
+		file_exists_exact=:
+		;;
+	esac
+
 	while getopts s:x:d:m:a: ch; do
 		case "${ch}" in
 		s)

Reply via email to