Re: [PATCH] Replace unnecessary perl with sed, printf, and the shell $(( )) operator.

From: Rob Landley
Date: Mon Apr 16 2018 - 08:19:24 EST


On 04/16/2018 07:09 AM, Russell King - ARM Linux wrote:
> On Wed, Apr 11, 2018 at 08:38:37PM -0500, Rob Landley wrote:
>> You can build a kernel in a cross compiling environment that doesn't have perl
>> in the $PATH. Commit 429f7a062e3b broke that for 32 bit arm. Fix it.
...
> This looks more complicated than necessary, and therefore less readable.
> What's wrong with:
>
> KBSS_SZ := $(shell echo $$(($$($(CROSS_COMPILE)nm $(obj)/../../../../vmlinux | \
> sed -n -e 's/^\([^ ]*\) B __bss_start$$/-0x\1/p' \
> -e 's/^\([^ ]*\) B __bss_stop$$/+0x\1/p') ))
>
> The sed command produces output such as:
>
> -0xc0955e58
> +0xc10b0f9c
>
> which the shell is then able to evaluate and produce a decimal number.
> This seems to work fine with both bash and dash.

Yes, that is better.

Acked-by: Rob Landley <rob@xxxxxxxxxxx>

Thanks,

Rob