On Tue, Oct 26, 2021 at 12:47:49PM +0200, Axel Kielhorn wrote:
> Hello,
>
> I get the following error when building on MacOS 11:
>
> sed: 17: ./contrib/sboxes/notquine.sed: unexpected EOF (pending }’s)
>
> If I remove
>
> /\\##/{
> s/\\##//
> b}
>
> It works:
If you insert a semicolon or a newline after the b command, you will
make it more portable. Also, there is no need to repeat the regular
expression a second time.
/\\##/ { s///; b; }
or even just
s/\\##//
t
The sed script also has another substitution further up that requries
GNU sed:
s/.*\\##.*/&\n&/
POSIX sed can't insert a newline with its s command using \n. However,
the following would be portable:
s/.*\\##.*/&\
&/
That is, escape the literal newline.
>
> /Applications/Xcode.app/Contents/Developer/usr/bin/make all-am
> GEN contrib/sboxes/msboxes.ms
> GROFF contrib/sboxes/msboxes.pdf
>
> Later I get:
>
> sed: 1: "1i .lf 1 contrib/sboxes ...": command i expects \ followed by text
This is from another GNU sed convinience feature taht allows you to
insert text with the i command on the same line as the command itself:
1i\ .lf 1
With POSIX sed, that needs to be written
1i\
.lf 1
Now, looking at the Makefile or Makefile.in, at around line 4538 (search
for where DOC_SED is being used), it seems as if someone has tried to
write this properly, with a literal newline and everything. The only
issue is that Make will remove that literal newline, which turns it into
a sed expression that only GNU sed understands.
DOC_GROFF = $(DOC_SED) -e '1i\
.lf 1 $<' $< | $(DOC_GROFF_ONLY)
The above is turned into something like
LANG=C LC_ALL=C sed -e "...blah blah..." -e '1i\n .lf 1 ...etc.'
which on my OpenBSD system generates
sed: 1: "1i\n .lf 1 doc/webpage.ms": extra characters after \ at the
end of i command
Instead, that line in the Makefile should look like
DOC_GROFF = $(DOC_SED) -e '1i\' -e '.lf 1 $<' $< | $(DOC_GROFF_ONLY)
That is, break the single expression string up into two.
I've only tested with OpenBSD sed.
>
> Sed doesn’t tell me its version but the man pages says March 27, 2017.
>
> Greetings
>
> Axel
--
Andreas (Kusalananda) Kähäri
SciLifeLab, NBIS, ICM
Uppsala University, Sweden
.