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