From: Paul Eggert Date: Sat, 1 Jan 2022 23:30:38 +0000 (-0800) Subject: gen-header: port to BusyBox ‘sed’ X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=76d5241dfa097282df76212d5e1673912167dd3b;p=gnulib.git gen-header: port to BusyBox ‘sed’ Problem reported by Tim Rühsen in: https://lists.gnu.org/r/bug-gnulib/2022-01/msg00004.html * modules/gen-header (SED_HEADER_NOEDIT): Replace instead of prepend. (SED_HEADER_STDOUT, SED_HEADER_TO_AT_t): Adjust to that change. Do not use ‘w foo’ twice in the same script, as BusyBox ‘sed’ mistakenly opens ‘foo’ for output twice, thus losing some output. --- diff --git a/ChangeLog b/ChangeLog index e2e2c11b2a..3eb87d7d64 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2022-01-01 Paul Eggert + + gen-header: port to BusyBox ‘sed’ + Problem reported by Tim Rühsen in: + https://lists.gnu.org/r/bug-gnulib/2022-01/msg00004.html + * modules/gen-header (SED_HEADER_NOEDIT): Replace instead of prepend. + (SED_HEADER_STDOUT, SED_HEADER_TO_AT_t): Adjust to that change. + Do not use ‘w foo’ twice in the same script, as BusyBox ‘sed’ + mistakenly opens ‘foo’ for output twice, thus losing some output. + 2022-01-01 Bruno Haible maint: Update copyright notices. diff --git a/modules/gen-header b/modules/gen-header index ab1858d65f..feb711b5c6 100644 --- a/modules/gen-header +++ b/modules/gen-header @@ -11,24 +11,17 @@ Depends-on: configure.ac: Makefile.am: -# In 'sed', prepend a "DO NOT EDIT" comment to the pattern space. -SED_HEADER_NOEDIT = s,^,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */, +# In 'sed', replace the pattern space with a "DO NOT EDIT" comment. +SED_HEADER_NOEDIT = s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */, # '$(SED_HEADER_STDOUT) -e "..."' runs 'sed' but first outputs "DO NOT EDIT". -SED_HEADER_STDOUT = sed \ - -e x \ - -e '1$(SED_HEADER_NOEDIT)p' \ - -e x +SED_HEADER_STDOUT = sed -e 1h -e '1$(SED_HEADER_NOEDIT)' -e 1G # '$(SED_HEADER_TO_AT_t) FILE' copies FILE to $@-t, prepending a leading # "DO_NOT_EDIT". Although this could be done more simply via: # SED_HEADER_TO_AT_t = $(SED_HEADER_STDOUT) > $@-t -# the -n and 'w's avoid a fork+exec, at least when GNU Make is used. -SED_HEADER_TO_AT_t = sed -n \ - -e x \ - -e '1$(SED_HEADER_NOEDIT)w $@-t' \ - -e x \ - -e 'w $@-t' +# the -n and 'w' avoid a fork+exec, at least when GNU Make is used. +SED_HEADER_TO_AT_t = $(SED_HEADER_STDOUT) -n -e 'w $@-t' # Use $(gl_V_at) instead of $(AM_V_GEN) or $(AM_V_at) on a line that # is its recipe's first line if and only if @NMD@ lines are absent.