[OE-core] [PATCH] initscripts: fix bashism in bootmisc.sh

Richard Purdie richard.purdie at linuxfoundation.org
Wed Jul 23 15:41:58 UTC 2014


On Wed, 2014-07-23 at 09:49 -0500, Ben Shelton wrote:
> In the commit 'initscripts: save /etc/timestamp with seconds accuracy',
> a bashism was introduced in the bootmisc.sh script in the code to set
> the current date from the stored value in /etc/timestamp.  This causes
> that operation to fail with the following message when /bin/sh is not
> bash:
> 
> /etc/init.d/rc: /etc/rcS.d/S55bootmisc.sh: line 73: syntax error: bad substitution
> 
> Fixed by using 'cut' (standard under POSIX) rather than bash-specific
> substring expansion.
> 
> [YOCTO #6566]
> 
> Signed-off-by: Ben Shelton <ben.shelton at ni.com>
> Tested-by: Maxin B. John <maxin.john at enea.com>
> ---
>  meta/recipes-core/initscripts/initscripts-1.0/bootmisc.sh | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/meta/recipes-core/initscripts/initscripts-1.0/bootmisc.sh b/meta/recipes-core/initscripts/initscripts-1.0/bootmisc.sh
> index ccc7f9f..923fa88 100755
> --- a/meta/recipes-core/initscripts/initscripts-1.0/bootmisc.sh
> +++ b/meta/recipes-core/initscripts/initscripts-1.0/bootmisc.sh
> @@ -70,7 +70,10 @@ then
>  	read TIMESTAMP < /etc/timestamp
>  	if [ ${TIMESTAMP} -gt $SYSTEMDATE ]; then
>  		# format the timestamp as date expects it (2m2d2H2M4Y.2S)
> -		date -u ${TIMESTAMP:4:8}${TIMESTAMP:0:4}.${TIMESTAMP:(-2)}
> +		TS_YR=$(echo $TIMESTAMP | cut -c 1-4)
> +		TS_SEC=$(echo $TIMESTAMP | cut -c 13-14)
> +		TS_REST=$(echo $TIMESTAMP | cut -c 5-12)
> +		date -u ${TS_REST}${TS_YR}.${TS_SEC}
>  		test -x /etc/init.d/hwclock.sh && /etc/init.d/hwclock.sh stop
>  	fi
>  fi

We have tried hard to remove exec/fork/subshell calls from the init
processes since each one does cost quite some time. The above introduces
more than I'm comfortable with. Can we find some other way to do this
please?

Cheers,

Richard




More information about the Openembedded-core mailing list