[OE-core] [PATCH] buildhistory.bbclass: Improve robustness in image file listing

Randy MacLeod randy.macleod at windriver.com
Mon Jan 27 21:52:45 UTC 2014


On 14-01-23 07:11 AM, Otavio Salvador wrote:
> The filenames sometimes may have strange names. With the 'awk' script
> it handled a limited number of spaces in the filename and a package
> installing a file named "test file with spaces" would have its name
> truncated.
>
> This patch uses the find's printf formating to simplify the code and
> proper handle this case. From a testing image, the only diff produced
s/proper/properly/
   Yes, I'm with the grammar police; we're here to be helpful.
> is:
>
> ,----[ files-in-image.txt diff ]
> | --rwxr-xr-x root       root                0 ./usr/bin/test\ file\ with\
> | +-rwxr-xr-x root       root                0 ./usr/bin/test file with spaces
> `----
>
> The options used are available since findutils 4.2.5, released in 19
> Nov 2004, making it available in all supported host distributions.

Acked-by: Randy MacLeod <Randy.MacLeod at windriver.com>

Works for me, even on CentOS/RHEL-5.9/10 which does indeed have
findutils > 4.2.5:

$ rpm -qf `which find`
findutils-4.2.27-6.el5

and the find command seems to work as intended:

  $ find jj -printf "%M %-10u %-10g %10s %p -> %l\n"  | cut -c 44-
  jj ->
  jj/usr ->
  jj/usr/bin ->
  jj/usr/bin/test file with spaces ->

../Randy

>
> Signed-off-by: Otavio Salvador <otavio at ossystems.com.br>
> ---
>   meta/classes/buildhistory.bbclass | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/meta/classes/buildhistory.bbclass b/meta/classes/buildhistory.bbclass
> index e9a9c3b..545a42f 100644
> --- a/meta/classes/buildhistory.bbclass
> +++ b/meta/classes/buildhistory.bbclass
> @@ -385,7 +385,7 @@ buildhistory_get_sdk_installed() {
>   buildhistory_list_files() {
>   	# List the files in the specified directory, but exclude date/time etc.
>   	# This awk script is somewhat messy, but handles where the size is not printed for device files under pseudo
> -	( cd $1 && find . -ls | awk '{ if ( $7 ~ /[0-9]/ ) printf "%s %10-s %10-s %10s %s %s %s\n", $3, $5, $6, $7, $11, $12, $13 ; else printf "%s %10-s %10-s %10s %s %s %s\n", $3, $5, $6, 0, $10, $11, $12 }' | sort -k5 | sed 's/ *$//' > $2 )
> +	( cd $1 && find . -printf "%M %-10u %-10g %10s %p -> %l\n" | sort -k5 | sed 's/ * -> $//' > $2 )
>   }
>
>
>


-- 
# Randy MacLeod. SMTS, Linux, Wind River
Direct: 613.963.1350



More information about the Openembedded-core mailing list