From ad842cf98f3b8b1dd1ea165005d473ee12ae4677 Mon Sep 17 00:00:00 2001 From: Holger Steinhaus Date: Mon, 9 Nov 2015 22:15:21 +0100 Subject: [PATCH 1/2] glibc: fixed locale support by adding on-target locale archive generation --- packages/devel/glibc/package.mk | 20 ++++++++++++++----- .../devel/glibc/scripts/locale-gen-archive | 12 +++++++++++ packages/devel/glibc/system.d/locale.service | 13 ++++++++++++ 3 files changed, 40 insertions(+), 5 deletions(-) create mode 100755 packages/devel/glibc/scripts/locale-gen-archive create mode 100644 packages/devel/glibc/system.d/locale.service diff --git a/packages/devel/glibc/package.mk b/packages/devel/glibc/package.mk index beb68e4c4b3..2825e3e882b 100644 --- a/packages/devel/glibc/package.mk +++ b/packages/devel/glibc/package.mk @@ -62,7 +62,7 @@ fi NSS_CONF_DIR="$PKG_BUILD/nss" GLIBC_EXCLUDE_BIN="catchsegv gencat getconf iconv iconvconfig ldconfig lddlibc4" -GLIBC_EXCLUDE_BIN="$GLIBC_EXCLUDE_BIN localedef makedb mtrace pcprofiledump" +GLIBC_EXCLUDE_BIN="$GLIBC_EXCLUDE_BIN makedb mtrace pcprofiledump" GLIBC_EXCLUDE_BIN="$GLIBC_EXCLUDE_BIN pldd rpcgen sln sotruss sprof tzselect" GLIBC_EXCLUDE_BIN="$GLIBC_EXCLUDE_BIN xtrace zdump zic" @@ -137,14 +137,18 @@ post_makeinstall_target() { rm -rf $INSTALL/usr/lib/*.map rm -rf $INSTALL/var -# remove locales and charmaps - rm -rf $INSTALL/usr/share/i18n/charmaps - if [ ! "$GLIBC_LOCALES" = yes ]; then + # remove locales and charmaps + rm -rf $INSTALL/usr/share/i18n/charmaps rm -rf $INSTALL/usr/share/i18n/locales mkdir -p $INSTALL/usr/share/i18n/locales - cp -PR $ROOT/$PKG_BUILD/localedata/locales/POSIX $INSTALL/usr/share/i18n/locales + cp -PR $ROOT/$PKG_BUILD/localedata/locales/POSIX $INSTALL/usr/share/i18n/locales + cp -PR $ROOT/$PKG_BUILD/localedata/locales/* $INSTALL/usr/share/i18n/locales + else + # prepare locale environment, actual archive generation has to be done on target + cp $PKG_DIR/scripts/locale-gen-archive $INSTALL/usr/bin + ln -s /storage/.config/locale $INSTALL/usr/lib/ fi # create default configs @@ -178,3 +182,9 @@ makeinstall_init() { ln -sf ld.so $INSTALL/lib/ld-linux.so.3 fi } + +post_install() { + if [ "$GLIBC_LOCALES" = yes ]; then + enable_service locale.service + fi +} diff --git a/packages/devel/glibc/scripts/locale-gen-archive b/packages/devel/glibc/scripts/locale-gen-archive new file mode 100755 index 00000000000..f8286ae3f48 --- /dev/null +++ b/packages/devel/glibc/scripts/locale-gen-archive @@ -0,0 +1,12 @@ +#!/bin/sh + +# generate locale archive containing for some common languages +# TODO: make configurable +mkdir -p /storage/.config/locale +echo "This directory contains the locale archive, please do not delete" > /storage/.config/locale/README + +localedef --prefix=$INSTALL -v -c -i de_DE -f UTF-8 de_DE.UTF-8 +localedef --prefix=$INSTALL -v -c -i en_US -f UTF-8 en_US.UTF-8 +localedef --prefix=$INSTALL -v -c -i es_ES -f UTF-8 es_ES.UTF-8 +localedef --prefix=$INSTALL -v -c -i fr_FR -f UTF-8 fr_FR.UTF-8 +localedef --prefix=$INSTALL -v -c -i ru_RU -f UTF-8 ru_RU.UTF-8 diff --git a/packages/devel/glibc/system.d/locale.service b/packages/devel/glibc/system.d/locale.service new file mode 100644 index 00000000000..4c1e5d1a950 --- /dev/null +++ b/packages/devel/glibc/system.d/locale.service @@ -0,0 +1,13 @@ +[Unit] +Description=Generate locale archive if not already there +DefaultDependencies=no +ConditionPathExists=!/storage/.config/locale/locale-archive +After=userconfig.service + +[Service] +Type=oneshot +ExecStart=/bin/sh -c "/usr/bin/locale-gen-archive &> /dev/null" +RemainAfterExit=yes + +[Install] +WantedBy=sysinit.target From 658482d15926839424a72219cbcfe42e9a665036 Mon Sep 17 00:00:00 2001 From: Holger Steinhaus Date: Tue, 17 Nov 2015 12:06:14 +0100 Subject: [PATCH 2/2] build: do not delete package locale data if GLIBC_LOCALE is set to yes --- scripts/build | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/build b/scripts/build index e7439ed1eaf..65736b83777 100755 --- a/scripts/build +++ b/scripts/build @@ -336,7 +336,9 @@ if [ ! -f $STAMP ]; then rm -rf $i/share/doc rm -rf $i/share/gtk-doc rm -rf $i/share/info - rm -rf $i/share/locale + if [ ! "$GLIBC_LOCALES" = yes ]; then + rm -rf $i/share/locale + fi rm -rf $i/share/man rm -rf $i/share/pkgconfig find $i -name "*.la" -exec rm -f "{}" ";" 2>/dev/null || true