[Buildroot] [PATCH] purge-locales: Handle empty locale directories better

Arnout Vandecappelle arnout at mind.be
Sun Mar 6 19:37:37 UTC 2016


On 03/04/16 02:50, Trent Piepho wrote:
> If a locale directory is empty, shell code like "for langdir in
> $$dir/*;" will loop once with langdir set to "path/to/dir/*", rather
> than not looping at all, which would obviously be the desired
> behavior.
> 
> Then "grep -qx $${langdir##*/}" ungoes two shell expansions (how?)
> that transform the expression from "${langdir##*/}" to "*" to "list
> of all files in buildroot root dir".  Which is most certainly not what
> this command was supposed to do.
> 
> If one of those files happens to be an 8GB flash image, grep consumes
> all available memory and crashes trying to search it.

 Good catch!

> 
> Signed-off-by: Trent Piepho <tpiepho at kymetacorp.com>
> ---
>  Makefile | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/Makefile b/Makefile
> index f2822a2..0df5a35 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -581,7 +581,8 @@ define PURGE_LOCALES
>  	do \
>  		for langdir in $$dir/*; \
>  		do \
> -			grep -qx $${langdir##*/} $(LOCALE_WHITELIST) || rm -rf $$langdir; \
> +			[ -e "$${langdir}" ] || continue; \

 I would prefer a more explicit if, the continue is a bit more difficult to grok.

 Regards,
 Arnout

> +			grep -qx "$${langdir##*/}" $(LOCALE_WHITELIST) || rm -rf $$langdir; \
>  		done; \
>  	done
>  	if [ -d $(TARGET_DIR)/usr/share/X11/locale ]; \
> 


-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF



More information about the buildroot mailing list