Commit b87b4742 authored by Peter Korsgaard's avatar Peter Korsgaard
Browse files

Makefile: add BR2_ENABLE_LOCALE_PURGE to purge unwanted locales

Add BR2_ENABLE_LOCALE_PURGE / BR2_ENABLE_LOCALE_WHITELIST options to
remove unwanted locales from the target rootfs. Handy for stuff like
the gtk stack, which comes with ~25 MB locales.

Works similar to localepurge in Debian, E.G. you provide a white list
of wanted locales, and everything else is removed.
parent 4d298a2d
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -264,6 +264,10 @@ include package/*/*.mk

TARGETS+=target-devfiles

ifeq ($(BR2_ENABLE_LOCALE_PURGE),y)
TARGETS+=target-purgelocales
endif

# target stuff is last so it can override anything else
include target/Makefile.in

@@ -348,6 +352,24 @@ else
	find $(TARGET_DIR)/usr/lib \( -name '*.a' -o -name '*.la' \) -delete
endif

ifeq ($(BR2_ENABLE_LOCALE_PURGE),y)
LOCALE_WHITELIST=$(PROJECT_BUILD_DIR)/locales.nopurge
LOCALE_NOPURGE=$(strip $(subst ",,$(BR2_ENABLE_LOCALE_WHITELIST)))
#"))

target-purgelocales:
	rm -f $(LOCALE_WHITELIST)
	for i in $(LOCALE_NOPURGE); do echo $$i >> $(LOCALE_WHITELIST); done

	for dir in $(wildcard $(addprefix $(TARGET_DIR),/usr/share/locale /usr/share/X11/locale /usr/man /usr/share/man)); \
	do \
		for lang in $$(cd $$dir; ls .|grep -v man); \
		do \
			grep -qx $$lang $(LOCALE_WHITELIST) || rm -rf $$dir/$$lang; \
		done; \
	done
endif

source: $(TARGETS_SOURCE) $(HOST_SOURCE)

_source-check:
+22 −0
Original line number Diff line number Diff line
@@ -44,6 +44,28 @@ config BR2_ENABLE_LOCALE_PREGENERATED
	  Say N here unless your buildhost lacks locale support and you
	  desparately want to use internationalization on your target.

config BR2_ENABLE_LOCALE_PURGE
	bool "Purge unwanted locales"
	depends on BR2_ENABLE_LOCALE
	help
	  Explicitly specify what locales to install on target. If N
	  then all locales supported by packages are installed.

config BR2_ENABLE_LOCALE_WHITELIST
	string "Locales to keep"
	default "C en_US de fr"
	depends on BR2_ENABLE_LOCALE_PURGE
	help
	  Whitespace seperated list of locales to allow on target.
	  Locales not listed here will be removed from the target.
	  See 'locale -a' on your host for a list of locales available
	  on your build host, or have a look in /usr/share/locale in
	  the target file system for available locales.

	  Notice that listing a locale here doesn't guarantee that it
	  will be available on the target - That purely depends on the
	  support for that locale in the selected packages.

config BR2_USE_WCHAR
	bool "Enable WCHAR support"
	help