diff options
author | Steve Wills <swills@FreeBSD.org> | 2020-10-19 12:19:14 +0000 |
---|---|---|
committer | Steve Wills <swills@FreeBSD.org> | 2020-10-19 12:19:14 +0000 |
commit | dd763c441c62074ddff2ca69be5ad95fb4ab0fdb (patch) | |
tree | d40f6d7315dfeda3422e9bc3b85c1d361d0a5653 /Mk/Scripts | |
parent | 7e010fa7b66c1e6151ad03d34d9450c4715b35f3 (diff) | |
download | ports-dd763c441c62074ddff2ca69be5ad95fb4ab0fdb.tar.gz ports-dd763c441c62074ddff2ca69be5ad95fb4ab0fdb.zip |
Notes
Diffstat (limited to 'Mk/Scripts')
-rw-r--r--[-rwxr-xr-x] | Mk/Scripts/sed_checked.sh | 91 |
1 files changed, 10 insertions, 81 deletions
diff --git a/Mk/Scripts/sed_checked.sh b/Mk/Scripts/sed_checked.sh index dd03284db720..9c8c270f6099 100755..100644 --- a/Mk/Scripts/sed_checked.sh +++ b/Mk/Scripts/sed_checked.sh @@ -1,84 +1,13 @@ #!/bin/sh -# 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} ---" +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 - - REINPLACE_CMD ran, but did not modify file contents: ${x#${WRKSRC}/} >> ${REWARNFILE} + fi + fi fi -} - -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 - +done |