Re: [PATCH v2] kbuild: check uniqueness of module names

From: Alexander Kapshuk
Date: Fri May 17 2019 - 05:27:54 EST

On Fri, May 17, 2019 at 11:58 AM Bernd Petrovitsch
<bernd@xxxxxxxxxxxxxxxxxxx> wrote:
> On 17/05/2019 10:16, Alexander Kapshuk wrote:
> [...]
> > The 'xargs' '-r' flag is a GNU extension.
> > If POSIX compliance is important here, the use of 'cat', 'xargs' and
> > 'basename' may be substituted with that of 'sed' to initialise
> > same_name_modules:
> > sed 's!.*/!!' modules.order modules.builtin | sort | uniq -d
> 's!' is TTBOMK also a GNU-extension:
> sed 's/.*\///' modules.order modules.builtin | sort | uniq -d

It isn't.
Here's an excerpt from the POSIX manpage for 'sed',
... Any character other than backslash or <newline> can be used
instead of a slash to delimit the BRE and the replacement....

> > 'Sed' may also be used on its own in the 'for' loop instead of as part
> > of a pipeline along with 'grep' to generate the desired output:
> > sed '/\/'$m'/!d;s:^kernel/: :' modules.order modules.builtin
> sed "/\/${m}/!d;s/^kernel\// /" modules.order modules.builtin

The parameter expansion syntax is redundant here.
The parameter name or symbol can be enclosed in braces, which are
optional except for positional parameters with more than one digit or
when parameter is a name and is followed by a character that could be
interpreted as part of the name.

Here's an alternative version using double quotes.
sed "/\/$m/!d;s:^kernel/: :" modules.order modules.builtin

> MfG,
> Bernd
> --
> Bernd Petrovitsch Email : bernd@xxxxxxxxxxxxxxxxxxx
> LUGA :