Re: bsd sed / make vs bsd sed / make
- Reply: Tomek CEDRO : "Re: bsd sed / make vs bsd sed / make"
- In reply to: Tomek CEDRO : "bsd sed / make vs bsd sed / make"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 25 Apr 2024 17:43:42 UTC
On 4/25/24 12:36, Tomek CEDRO wrote: > Hello world :-) > > Are there any SED and MAKE experts around? :-) > > There is a piece of Makefile within NuttX RTOS simulator code that > creates the linker scripts. I would like to fix the upstream so it > builds out of the box on FreeBSD (*BSD). > > 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. > > 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. Thanks, Kyle Evans