Date: Thu, 25 Apr 2024 12:43:42 -0500 From: Kyle Evans <kevans@FreeBSD.org> To: questions@freebsd.org Subject: Re: bsd sed / make vs bsd sed / make Message-ID: <493f8ca1-75e1-4ae6-8641-5998c53457cb@FreeBSD.org> In-Reply-To: <CAFYkXjnq7LB3mhnK4vtQ0p_YJfSU5OOCWgcF6sm64FTCN8gF8Q@mail.gmail.com> References: <CAFYkXjnq7LB3mhnK4vtQ0p_YJfSU5OOCWgcF6sm64FTCN8gF8Q@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?493f8ca1-75e1-4ae6-8641-5998c53457cb>
