Hello Yoann,

Thanks for pointing this out. You are right.
The ${var//pattern/replacement} syntax is provided by BusyBox ash only
when CONFIG_ASH_BASH_COMPAT is enabled, so the current patch is not
compatible with minimal BusyBox configurations.
I will rework the character replacement using POSIX-compatible shell
parameter expansion and send a v2 patch. I will also test it with
CONFIG_ASH_BASH_COMPAT disabled.

Regards,
Wenwen

________________________________
From: Yoann Congal <[email protected]>
Sent: Saturday, September 12, 2026 2:56
To: Wenwen Fu <[email protected]>; 
[email protected] 
<[email protected]>
Subject: Re: [OE-core] [PATCH] initramfs-framework: avoid processes when 
parsing cmdline

WARNING: This email originated from outside of Qualcomm. Please be wary of any 
links or attachments, and do not enable macros.

On Fri Sep 11, 2026 at 5:14 PM CEST, Wenwen Fu via lists.openembedded.org wrote:
> Use shell parameter expansion rather than external cut and sed commands
> while parsing kernel command-line parameters in the initramfs.
>
> On the target initramfs, 100 command-line parser runs took 13.48 s
> before this change and 0.51 s afterwards. This reduces the per-run
> cost from 134.8 ms to 5.1 ms.
>
> Signed-off-by: Wenwen Fu <[email protected]>
> ---
>  meta/recipes-core/initrdscripts/initramfs-framework/init | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/meta/recipes-core/initrdscripts/initramfs-framework/init 
> b/meta/recipes-core/initrdscripts/initramfs-framework/init
> index 67590ad765..62d8ccfd0c 100755
> --- a/meta/recipes-core/initrdscripts/initramfs-framework/init
> +++ b/meta/recipes-core/initrdscripts/initramfs-framework/init
> @@ -104,13 +104,14 @@ for p in `cat /proc/cmdline`; do
>               continue
>       fi
>
> -     opt=`echo $p | cut -d'=' -f1`
> -     opt=`echo $opt | sed -e 'y/.-/__/'`
> -     if [ "`echo $p | cut -d'=' -f1`" = "$p" ]; then
> +     key=${p%%=*}
> +     opt=${key//./_}

Hello,

Isn't this only available in busybox if and only if it was compiled
with CONFIG_ASH_BASH_COMPAT? Can you check if that works with more
minimal busybox?

> +     opt=${opt//-/_}
> +     if [ "$key" = "$p" ]; then
>               # opt parameter
>               eval "bootparam_${opt}=true"
>       else
> -             value="`echo $p | cut -d'=' -f2-`"      # Option value
> +             value=${p#*=}   # Option value
>               value_lstripped=${value#\"}
>               value_rstripped=${value%\"}
>

Regards,
--
Yoann Congal
Smile ECS

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#245702): 
https://lists.openembedded.org/g/openembedded-core/message/245702
Mute This Topic: https://lists.openembedded.org/mt/121200898/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to