Module Name:    src
Committed By:   christos
Date:           Thu Jun 13 19:30:30 UTC 2019

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

Log Message:
1. fix /etc/defaults/*.conf files
    a. there are more rc.conf.append arch than only for x86, deal with them too.
    b. populate new /etc/defaults/rc.conf files
2. merge sed patterns
3. deal with empty exclude lists


To generate a diff of this commit:
cvs rdiff -u -r1.229 -r1.230 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.229 src/usr.sbin/postinstall/postinstall:1.230
--- src/usr.sbin/postinstall/postinstall:1.229	Wed Jun 12 20:24:43 2019
+++ src/usr.sbin/postinstall/postinstall	Thu Jun 13 15:30:30 2019
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $NetBSD: postinstall,v 1.229 2019/06/13 00:24:43 christos Exp $
+# $NetBSD: postinstall,v 1.230 2019/06/13 19:30:30 christos Exp $
 #
 # Copyright (c) 2002-2015 The NetBSD Foundation, Inc.
 # All rights reserved.
@@ -847,21 +847,23 @@ additem defaults "/etc/defaults/ being u
 do_defaults()
 {
 	[ -n "$1" ] || err 3 "USAGE: do_defaults  fix|check"
-	op="$1"
-	failed=0
+	local op="$1"
+	local failed=0
+	local etcsets=$(getetcsets)
 
-	# Except for i386 and amd64, rc.conf(5) should be the same as the
-	# one obtained from a source directory
-	extra_scripts="rc.conf"
-	if [ "$MACHINE" = "i386" -o "$MACHINE" = "amd64" ]; then
-		if $SOURCEMODE; then
-			extra_scripts=	# clear
+	local rc_exclude_scripts=""
+	if $SOURCEMODE; then
+		# For most architectures rc.conf(5) should be the same as the
+		# one obtained from a source directory, except for the ones
+		# that have an append file for it.
+		local rc_conf_app="${SRC_DIR}/etc/etc.${MACHINE}/rc.conf.append"
+		if [ -f "${rc_conf_app}" ]; then
+			rc_exclude_scripts="rc.conf"
 
 			# Generate and compare the correct rc.conf(5) file
 			mkdir "${SCRATCHDIR}/defaults"
 
-			cat "${SRC_DIR}/etc/defaults/rc.conf" \
-			    "${SRC_DIR}/etc/etc.${MACHINE}/rc.conf.append" \
+			cat "${SRC_DIR}/etc/defaults/rc.conf" "${rc_conf_app}" \
 			    > "${SCRATCHDIR}/defaults/rc.conf"
 
 			compare_dir "${op}" "${SCRATCHDIR}/defaults" \
@@ -872,19 +874,24 @@ do_defaults()
 		fi
 	fi
 
-	compare_dir "$op" "${SRC_DIR}/etc/defaults" "${DEST_DIR}/etc/defaults" \
-		444 \
-		daily.conf monthly.conf npf.boot.conf pkgpath.conf \
-		security.conf weekly.conf ${extra_scripts}
-	failed=$(( ${failed} + $? ))
-
 	find_file_in_dirlist pf.boot.conf "pf.boot.conf" \
 	    "${SRC_DIR}/usr.sbin/pf/etc/defaults" "${SRC_DIR}/etc/defaults" \
 	    || return 1
-			# ${dir} is set by find_file_in_dirlist()
+	# ${dir} is set by find_file_in_dirlist()
 	compare_dir "$op" "${dir}" "${DEST_DIR}/etc/defaults" 444 pf.boot.conf
 	failed=$(( ${failed} + $? ))
 
+	rc_exclude_scripts="${rc_exclude_scripts} pf.boot.conf"
+
+	local rc_default_conf_files="$(select_set_files /etc/defaults/ \
+	    "/etc/defaults/\([^[:space:]]*\.conf\)" ${etcsets} | \
+	    exclude ${rc_exclude_scripts})"
+	compare_dir "$op" "${SRC_DIR}/etc/defaults" "${DEST_DIR}/etc/defaults" \
+		444 \
+		${rc_default_conf_files}
+	failed=$(( ${failed} + $? ))
+
+
 	return ${failed}
 }
 
@@ -1400,9 +1407,33 @@ update_rc()
 	return $?
 }
 
+# select non-obsolete files in a sets file
+# $1: directory pattern
+# $2: file pattern
+# $3: filename
+select_set_files()
+{
+	local qdir="$(echo $1 | ${SED} -e s@/@\\\\/@g -e s/\\./\\\\./g)"
+	${SED} -n -e /obsolete/d \
+	    -e "/^\.${qdir}/s@^.$2[[:space:]].*@\1@p" $3
+}
+
 exclude()
 {
-	eval ${GREP} -v -E "'($(echo $* | sed -e 's/ /|/'g))'"
+	if [ -z "$*" ]; then
+		cat
+	else
+		eval ${GREP} -v -E "'($(echo $* | sed -e 's/ /|/'g))'"
+	fi
+}
+
+getetcsets()
+{
+	if $SOURCEMODE; then
+		echo "${SRC_DIR}/distrib/sets/lists/etc/mi"
+	else
+		echo "${SRC_DIR}/etc/mtree/set.etc"
+	fi
 }
 
 additem rc "/etc/rc* and /etc/rc.d/ being up to date"
@@ -1412,12 +1443,7 @@ do_rc()
 	local op="$1"
 	local failed=0
 	local generated_scripts=""
-	local etcsets=
-	if $SOURCEMODE; then
-		etcsets="${SRC_DIR}/distrib/sets/lists/etc/mi"
-	else
-		etcsets="${SRC_DIR}/etc/mtree/set.etc"
-	fi
+	local etcsets=$(getetcsets)
 	if [ "${MKX11}" != "no" ]; then
 		generated_scripts="${generated_scripts} xdm xfs"
 	fi
@@ -1426,14 +1452,12 @@ do_rc()
 	local rc_external_files="blacklist nsd unbound"
 
 	# rc* files in /etc/
-	local rc_444_files="$(${SED} -n -e /obsolete/d -e '/^\.\/etc\/rc\.d/d' \
-	    -e '/^\.\/etc\/rc/s@./etc/\([^[:space:]]*\)[[:space:]].*@\1@p' \
-	    ${etcsets})"
+	local rc_444_files="$(select_set_files /etc/rc \
+	    "/etc/\(rc[^[:space:]/]*\)" ${etcsets})"
 
 	# no-obsolete rc files in /etc/rc.d
-	local rc_555_files="$(${SED} -n -e /obsolete/d \
-	    -e 's@./etc/rc.d/\([^[:space:]]*\)[[:space:]].*@\1@p' \
-	    ${etcsets} | \
+	local rc_555_files="$(select_set_files /etc/rc.d/ \
+	    "/etc/rc\.d/\([^[:space:]]*\)" ${etcsets} | \
 	    exclude ${rc_external_files})"
 
 	# obsolete rc file in /etc/rc.d

Reply via email to