All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guido Trentalancia <guido-D1bseh+SzQhuxeB9wqlrNw@public.gmane.org>
To: initramfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: [PATCH v4] dracut: 10i18n: add support for custom locale definitions
Date: Sat, 16 Apr 2016 22:13:42 +0200	[thread overview]
Message-ID: <1460837622.3201.14.camel@trentalancia.net> (raw)
In-Reply-To: <1460835143.3201.10.camel-D1bseh+SzQhuxeB9wqlrNw@public.gmane.org>

Compile and install locale definitions using localedef from GNU libc or,
if locale definitions cannot be compiled but are available on the system
as split definitions, just install them.

The resulting locale definitions archive contains at most two different
locale definitions, therefore its size is relatively small.

This revised version fixes several issues in the initial patch (including
the possibility to build locale definitions). Thanks to Andrei Borzenkov
for reviewing the initial patch and providing useful suggestions.

Signed-off-by: Guido Trentalancia <guido-D1bseh+SzQhuxeB9wqlrNw@public.gmane.org>
---
 modules.d/10i18n/module-setup.sh |   20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

--- dracut-044-orig/modules.d/10i18n/module-setup.sh	2015-11-25 14:22:28.000000000 +0100
+++ dracut-044-10i18n-add-support-for-custom-locale-definitions/modules.d/10i18n/module-setup.sh	2016-04-16 22:09:43.667941277 +0200
@@ -212,6 +219,26 @@ install() {
             print_vars LC_ALL LANG >> ${initdir}${I18N_CONF}
         fi
 
+        [[ ${LC_ALL} || ${LANG} ]] && inst_dir /usr/lib/locale
+
+        # Check if we can compile locale definitions
+        command -v localedef > /dev/null && HAS_LOCALEDEF=true || HAS_LOCALEDEF=false
+        [[ -e /usr/share/i18n/locales/${LC_ALL} || -e /usr/share/i18n/locales/${LANG} ]] && HAS_LOCALE_SOURCES=true || HAS_LOCALE_SOURCES=false
+        [[ ${HAS_LOCALEDEF} == true && ${HAS_LOCALE_SOURCES} == true ]] && CAN_BUILD_LOCALE=true || CAN_BUILD_LOCALE=false
+
+        # Generate locale definitions for LC_ALL
+        [ ${LC_ALL} ] && LC_ALL_LOCALE=`echo ${LC_ALL} | awk -F. '{ print $1 }'` && LC_ALL_CHARMAP=`echo ${LC_ALL} | awk -F. '{ print $2 }'`
+        [[ ${LC_ALL} && ${LC_ALL_LOCALE} && ${LC_ALL_CHARMAP} ]] && [ ${CAN_BUILD_LOCALE} == true ] && [ -e /usr/share/i18n/locales/${LC_ALL} ] && localedef --prefix="${initdir}" -i ${LC_ALL_LOCALE} -f ${LC_ALL_CHARMAP} ${LC_ALL}
+
+        # Generate locale definitions for LANG
+        [ ${LANG} ] && [ ${LANG} != ${LC_ALL} ] && LANG_LOCALE=`echo ${LANG} | awk -F. '{ print $1 }'` && LANG_CHARMAP=`echo ${LANG} | awk -F. '{ print $2 }'`
+        [[ ${LANG} && ${LANG_LOCALE} && ${LANG_CHARMAP} ]] && [ ${CAN_BUILD_LOCALE} == true ] && [ -e /usr/share/i18n/locales/${LANG} ] && localedef --prefix="${initdir}" -i ${LANG_LOCALE} -f ${LANG_CHARMAP} ${LANG}
+
+        # If locale definitions cannot be built, but compiled split definitions are
+        # available, then copy them over
+        [ ${LC_ALL} ] && [ ${CAN_BUILD_LOCALE} == false ] && [ -d /usr/lib/locale/${LC_ALL} ] && cp -prfL -t "${initdir}/usr/lib/locale/" /usr/lib/locale/${LC_ALL}
+        [ ${LANG} ] && [ ${LANG} != ${LC_ALL} ] && [ ${CAN_BUILD_LOCALE} == false ] && [ -d /usr/lib/locale/${LANG} ] && cp -prfL -t "${initdir}/usr/lib/locale/" /usr/lib/locale/${LANG}
+
         if dracut_module_included "systemd" && [[ -f ${VCONFIG_CONF} ]]; then
             inst_simple ${VCONFIG_CONF}
         else

  parent reply	other threads:[~2016-04-16 20:13 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-15 22:07 [PATCH] dracut: add support for custom locale definitions Guido Trentalancia
     [not found] ` <1460758050.3211.2.camel-D1bseh+SzQhuxeB9wqlrNw@public.gmane.org>
2016-04-16  6:00   ` Andrei Borzenkov
     [not found]     ` <5711D4E7.9070705-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-04-16 14:12       ` [PATCH v2] dracut: 10i18n: " Guido Trentalancia
     [not found]         ` <1460815966.4296.13.camel-D1bseh+SzQhuxeB9wqlrNw@public.gmane.org>
2016-04-16 17:52           ` Andrei Borzenkov
     [not found]             ` <57127BC9.70103-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-04-16 19:32               ` [PATCH v3] " Guido Trentalancia
     [not found]                 ` <1460835143.3201.10.camel-D1bseh+SzQhuxeB9wqlrNw@public.gmane.org>
2016-04-16 20:13                   ` Guido Trentalancia [this message]
     [not found]                     ` <1460837622.3201.14.camel-D1bseh+SzQhuxeB9wqlrNw@public.gmane.org>
2016-04-16 20:24                       ` [PATCH v5] " Guido Trentalancia
     [not found]                         ` <1460838269.3201.18.camel-D1bseh+SzQhuxeB9wqlrNw@public.gmane.org>
2016-04-19  0:36                           ` [PATCH v6] dracut: " Guido Trentalancia
     [not found]                             ` <1461026208.2262.1.camel-D1bseh+SzQhuxeB9wqlrNw@public.gmane.org>
2016-04-20 13:04                               ` [PATCH v7] " Guido Trentalancia
     [not found]                                 ` <1461157491.11229.3.camel-D1bseh+SzQhuxeB9wqlrNw@public.gmane.org>
2016-04-21 10:24                                   ` Harald Hoyer
     [not found]                                     ` <5718AA77.8090600-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-04-21 12:30                                       ` Guido Trentalancia
     [not found]                                         ` <1461241841.10934.12.camel-D1bseh+SzQhuxeB9wqlrNw@public.gmane.org>
2016-04-21 12:41                                           ` Andrei Borzenkov
     [not found]                                             ` <CAA91j0U0XaJBaWNzBmRE3hs0zV7UKMEvO-6nBx_jaxkwhEHckg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-04-21 12:57                                               ` Guido Trentalancia
2016-04-21 13:07                                           ` Harald Hoyer
     [not found]                                             ` <5718D074.70507-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-04-21 13:48                                               ` Guido Trentalancia
2016-04-21 15:03                                               ` Guido Trentalancia
2016-05-17 10:12                                           ` Thomas Renninger
2016-05-17 12:36                                             ` [PATCH v9] " Guido Trentalancia
2016-04-22 16:13                                       ` [PATCH v8] " Guido Trentalancia
     [not found]                                         ` <1461341618.21231.0.camel-D1bseh+SzQhuxeB9wqlrNw@public.gmane.org>
2016-04-23  7:50                                           ` Andrei Borzenkov
     [not found]                                             ` <571B2950.5060209-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-04-23 16:47                                               ` Guido Trentalancia
2016-04-23 16:50                                           ` [PATCH v9] " Guido Trentalancia
     [not found]                                             ` <1461430242.2604.15.camel-D1bseh+SzQhuxeB9wqlrNw@public.gmane.org>
2016-05-06 15:01                                               ` Guido Trentalancia
2017-10-11 13:17                                               ` Harald Hoyer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1460837622.3201.14.camel@trentalancia.net \
    --to=guido-d1bseh+szqhuxeb9wqlrnw@public.gmane.org \
    --cc=initramfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.