diff options
author | Matthias Andree <mandree@FreeBSD.org> | 2020-05-08 01:10:16 +0000 |
---|---|---|
committer | Matthias Andree <mandree@FreeBSD.org> | 2020-05-08 01:10:16 +0000 |
commit | 106ebbd24e12c1923f24b63a278cf6d88dc75df9 (patch) | |
tree | bb0a7532187bb067f4e8fabe3bf49643c0eba497 /Tools | |
parent | db9d6d4735f0b83315b21b8657b9e99fc91f00d5 (diff) |
Notes
Diffstat (limited to 'Tools')
-rwxr-xr-x | Tools/scripts/bump_revision.pl | 2 | ||||
-rwxr-xr-x | Tools/scripts/sed_checked.sh | 91 |
2 files changed, 82 insertions, 11 deletions
diff --git a/Tools/scripts/bump_revision.pl b/Tools/scripts/bump_revision.pl index 1e7e803e886b..234924dedb66 100755 --- a/Tools/scripts/bump_revision.pl +++ b/Tools/scripts/bump_revision.pl @@ -109,7 +109,7 @@ my ($portsdir, $INDEX); { $opt_i = ""; $opt_u = ""; - getopts("cgi:lnu:p:"); + getopts("fgi:lnu:p:"); $shallow = $opt_l if $opt_l; if ($opt_l and $opt_g) { die "Options -g and -l given, which are mutually exclusive. Pick either."; diff --git a/Tools/scripts/sed_checked.sh b/Tools/scripts/sed_checked.sh index 647d59c7ba19..dd03284db720 100755 --- a/Tools/scripts/sed_checked.sh +++ b/Tools/scripts/sed_checked.sh @@ -1,13 +1,84 @@ #!/bin/sh -set -e -/usr/bin/sed -i.bak "$@" -for x in "${@}" ; do - if [ -f "${x}" ]; then - if cmp -s "${x}" "${x}".bak ; then - if [ ! -z "${REWARNFILE}" ]; then - echo sed failed: file content unchanged from backup: ${x#${WRKSRC}/} >> ${REWARNFILE} - fi - fi +# Rationale: +# The ports tree has accumulated quite a bit of REINPLACE_CMD lines +# in its Makefile. Some of these have gone stale as ports were updated +# upstream, or as the ports have evolved. + +# For DEVELOPERS, we check the effectiveness of REINPLACE_CMD lines +# by requesting backup files be written, and comparing them against +# source files. + +set -eu + +DEBUG=: +#DEBUG=echo + +check_dash_i() { + # this must be called from a subshell so as not to clobber $@ + # WARNING: assumes that -i is given at least once! + unset OPTIND + $DEBUG >&2 DEBUG: check_dash_i "$@" + while getopts :EI:ae:f:i:lnru var ; do + $DEBUG >&2 DEBUG: option "$var" '"'"${OPTARG-""}"'"' + case "$var" in [iI]) + last_i="$OPTARG" + esac + done + + $DEBUG >&2 DEBUG: last_i='"'"$last_i"'"' + printf '"%s"\n' "$last_i" +} + +shadowed="$( (check_dash_i -i.bak "$@") )" +if [ "$shadowed" != '".bak"' ] ; then + echo >&2 "WARNING: $0 -i.bak clobbered by caller's backup suffix $shadowed" +fi + +${SED-/usr/bin/sed} -i.bak "$@" +check() { + issues=0 + files=0 + args= + for x in "${@}" ; do + # we decide very simply whether the argument we are looking at is + # a sed command or a file: if it's not a regular file, it must be + # a sed argument worth collecting for our warning message, + # so that maintainers can identify the failing sed command. + # + # We cannot easily relate to Makefile lines here. + if [ -f "${x}" ]; then + # File? Check if sed was effective. + files=$(($files + 1)) + if cmp -s "${x}" "${x}".bak ; then + issues=$(($issues + 1)) + if [ $issues -eq 1 ] ; then + echo "sed failed:${args} ..." + fi + echo " - file content unchanged from backup: ${x#${WRKSRC}/}" + fi + else + # Not a file? Collect sed(1) command. + args="${args} ${x}" + fi + done + + if [ ${issues} -gt 0 ] ; then + action="review" + if [ ${issues} -eq ${files} ] ; then + action=" FIX " # blanks at either end + else + action="review" + fi + echo "--- issues found: ${issues}, files to edit: ${files}, please ${action} ---" fi -done +} + +if [ ! -z "${REWARNFILE}" ] ; then + check "$@" | tee -a ${REWARNFILE} + # if ${REWARNFILE} is a regular file (not /dev/null) and empty, delete it. + if [ -f "${REWARNFILE}" -a ! -s "${REWARNFILE}" ] ; then rm -f "${REWARNFILE}" ; fi +else + check "$@" +fi + |