Re: bsd sed / make vs bsd sed / make

From: Tomek CEDRO <tomek_at_cedro.info>
Date: Thu, 25 Apr 2024 17:59:38 UTC
On Thu, Apr 25, 2024 at 7:43 PM Kyle Evans wrote:
> On 4/25/24 12:36, Tomek CEDRO wrote:
> > sed -e '/====/,/====/!d;//d' -e 's/__executable_start/_stext/g' \
> >       -e 's/^\(\s\+\)\(\.init_array\)/\1\2 : { }\n\1.sinit/g' \
> >       -e 's/^\(\s\+\)\(\.fini_array\)/\1\2 : { }\n\1.einit/g' \
> >       -e 's/__init_array_start/_sinit/g' -e 's/__init_array_end/_einit/g' \
> >       -e 's/__fini_array_start/_sfini/g' -e
> > 's/__fini_array_end/_efini/g' >nuttx.ld
>
> Everything about this is cursed.  IMO you should propose switching these
> to EREs (-E) and fixing all of the escaped things as appropriate for
> that switch, then substituting [[:space:]] in for \s to make them
> compliant expressions.

Thanks Kyle :-) With ERE it would work both with sed and gsed? I will
have to learn sed + ere then.. any good references out there? :-)


> > It does not work with BSD sed but when I replace this with gsed all works fine.
> > BSD sed complalins about trailinig backslash:
> > sed: 1: "s/^\(\s\+\)\(\.init_arr ...": RE error: trailing backslash (\)
> > Is there a way to fix that part so it works both with GNU sed and BSD
> > sed? The easiest way would be adding ${SEDCMD} set to "gsed" on BSD
> > and "sed" for the others (macOS also seems to use gnu sed).
>
> The ports infrastructure also has a BINARY_ALIAS that can be used to
> install gsed as sed for just this build, assuming nothing that uses
> these 'enhanced' expressions hardcodes a path to sed.

Well it will not be a port just local git clone bootstrapped per
project. No hardcoded paths to sed luckily :-) Just wondering what are
the best practices to turn BSD make run GNU make a simple bsd only
makefile that would wrap make wall with gmake or something ? Not
really a big problem I can use it with gmake just want to make life
easier for other users :-)

Thanks! :-)
Tomek

--
CeDeROM, SQ7MHZ, http://www.tomek.cedro.info