path: root/Makefile
diff options
authorGravatar Trent Piepho <tpiepho@kymetacorp.com>2016-03-08 21:02:15 +0000
committerGravatar Peter Korsgaard <peter@korsgaard.com>2016-04-28 23:48:09 +0200
commitbbe29b9896d5a6a3b10c999522bb0ac29e934b51 (patch)
tree93aa75ae75db52dc33a4b214d90f1c16f8252a89 /Makefile
parent61451d7dd95c4b764465e1e14b894c52477cb779 (diff)
purge-locales: Handle empty locale directories better
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. Signed-off-by: Trent Piepho <tpiepho@kymetacorp.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Diffstat (limited to 'Makefile')
1 files changed, 4 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 0e4beb2d3b..daa32a41d8 100644
--- a/Makefile
+++ b/Makefile
@@ -583,7 +583,10 @@ define PURGE_LOCALES
do \
for langdir in $$dir/*; \
do \
- grep -qx $${langdir##*/} $(LOCALE_WHITELIST) || rm -rf $$langdir; \
+ if [ -e "$${langdir}" ]; \
+ then \
+ grep -qx "$${langdir##*/}" $(LOCALE_WHITELIST) || rm -rf $$langdir; \
+ fi \
done; \
if [ -d $(TARGET_DIR)/usr/share/X11/locale ]; \