From: Valentine Barshak Date: Mon, 13 Jul 2015 23:45:28 +0000 (+0200) Subject: purge-locales: fix handling of X11 locale.dir X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b791571c030f0be004bdb180013ca6650dfe6b09;p=buildroot.git purge-locales: fix handling of X11 locale.dir The /usr/share/X11/locale/locale.dir file is needed by libX11. Removing it breaks locale support in X11. However, make removes not only directories but also all files, which are not listed in the BR2_ENABLE_LOCALE_WHITELIST. This re-creates locale.dir database file where needed. Signed-off-by: Valentine Barshak Signed-off-by: Arnout Vandecappelle (Essensium/Mind) [Arnout: use a separate loop, and add some explanatory comments] Signed-off-by: Thomas Petazzoni --- diff --git a/Makefile b/Makefile index f764ae5419..8eb8c6d387 100644 --- a/Makefile +++ b/Makefile @@ -540,6 +540,11 @@ ifeq ($(BR2_ENABLE_LOCALE_PURGE),y) LOCALE_WHITELIST = $(BUILD_DIR)/locales.nopurge LOCALE_NOPURGE = $(call qstrip,$(BR2_ENABLE_LOCALE_WHITELIST)) +# This piece of junk does the following: +# First collect the whitelist in a file. +# Then go over all the locale dirs and for each subdir, check if it exists +# in the whitelist file. If it doesn't, kill it. +# Finally, specifically for X11, regenerate locale.dir from the whitelist. define PURGE_LOCALES rm -f $(LOCALE_WHITELIST) for i in $(LOCALE_NOPURGE) locale-archive; do echo $$i >> $(LOCALE_WHITELIST); done @@ -551,6 +556,16 @@ define PURGE_LOCALES grep -qx $${langdir##*/} $(LOCALE_WHITELIST) || rm -rf $$langdir; \ done; \ done + if [ -d $(TARGET_DIR)/usr/share/X11/locale ]; \ + then \ + for lang in $(LOCALE_NOPURGE); \ + do \ + if [ -f $(TARGET_DIR)/usr/share/X11/locale/$$lang/XLC_LOCALE ]; \ + then \ + echo "$$lang/XLC_LOCALE: $$lang"; \ + fi \ + done > $(TARGET_DIR)/usr/share/X11/locale/locale.dir; \ + fi endef TARGET_FINALIZE_HOOKS += PURGE_LOCALES endif