From c6127b6661439b1c7fa2240a102cd4dcb02ddba8 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Wed, 7 Nov 2012 15:10:44 -0600
Subject: LinHES-config:  add support for selecting the lang/country during
 install. The lang is then translated to a locale which is then applied to the
 system by mv_locale.

The lang->locale lookup is done inside mv_locale with a static dict.

refs #738
refs #100
refs #680
---
 abs/core/LinHES-config/PKGBUILD        | 11 +++--
 abs/core/LinHES-config/mv_install.py   |  2 +-
 abs/core/LinHES-config/mv_locale.py    | 89 ++++++++++++++++++++++++++++++++++
 abs/core/LinHES-config/mythvantage.cfg |  1 +
 abs/core/LinHES-config/systemconfig.py |  9 +++-
 5 files changed, 105 insertions(+), 7 deletions(-)
 create mode 100644 abs/core/LinHES-config/mv_locale.py

diff --git a/abs/core/LinHES-config/PKGBUILD b/abs/core/LinHES-config/PKGBUILD
index 092663d..1fcba1b 100755
--- a/abs/core/LinHES-config/PKGBUILD
+++ b/abs/core/LinHES-config/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-config
 pkgver=2.3
-pkgrel=179
+pkgrel=183
 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev LinHes-config )
 pkgdesc="Install and configure your system"
 depends=('bc' 'libstatgrab'  'mysql-python' 'expect' 'curl' 'dnsutils' 'parted'
@@ -45,6 +45,7 @@ source=(mv_install.py 09_mythvantge_runit_grub
 	mv_supplemental.py
 	mv_vnc.py
 	mv_fileshare.py
+	mv_locale.py
     systemconfig.py
 	myth_user_call.py
 	mythvantage.cfg
@@ -99,6 +100,7 @@ build() {
     install -m 0755 mv_supplemental.py $MVDIR/bin/
     install -m 0755 mv_vnc.py $MVDIR/bin/
     install -m 0755 mv_fileshare.py $MVDIR/bin/
+    install -m 0755 mv_locale.py $MVDIR/bin/
     install -m 0755 systemconfig.py $MVDIR/bin/
     install -m 0755 print_xorg_res.py $MVDIR/bin/
     install -m 0755 backend_control.sh $MVDIR/bin/
@@ -125,7 +127,7 @@ build() {
     install -o root -g root  -D -m 0755 blacklist_pcspkr.conf $startdir/pkg/etc/modprobe.d/blacklist_pcspkr.conf
     install -o root -g root  -D -m 0755 blacklist_nouveau.conf $startdir/pkg/etc/modprobe.d/blacklist_nouveau.conf
 }
-md5sums=('6a9a22b3c3cb74d9f1ac595cf437a7b7'
+md5sums=('ecd120a453dd185fc2b345086bfd62f5'
          'f33e1a6f7985091b8d47cbaf7433f90f'
          '17677b9e25b8fe3511ad3a139ed91eea'
          '2596460462cf6c889cf8f95485537b20'
@@ -161,9 +163,10 @@ md5sums=('6a9a22b3c3cb74d9f1ac595cf437a7b7'
          'b4900090d841d3e390cb840cf16afd85'
          'f2a19e3e864984ec95ac5ea090cbfa69'
          'c9c9390ac12145169dfe9a76896db328'
-         'f48b04d714c93146d8711531c266800a'
+         '882830885b852af5a9a5c6df017504e0'
+         'c2ef0f1140bd3fbeb44294fdf5415a32'
          '2596460462cf6c889cf8f95485537b20'
-         '4cba2bb55c6b8e27c57a6171f42d0455'
+         'dc3c5270691a62600475705f4cb78b56'
          '4804aa93aaad3dfcfff08cd9ffd68836'
          '0fa6fffd87f350380d45f1f8a5b7babe'
          '6ec39b010c0ed8901ea896c7e153d330'
diff --git a/abs/core/LinHES-config/mv_install.py b/abs/core/LinHES-config/mv_install.py
index 522fc23..877ca67 100755
--- a/abs/core/LinHES-config/mv_install.py
+++ b/abs/core/LinHES-config/mv_install.py
@@ -1209,7 +1209,7 @@ def genlocale():
                 outline = line.replace('#','')
         f.write(outline)
 
-    f.close
+    f.close()
     #cp_and_log("/tmp/locale.gen.new", data_config.MOUNTPOINT+"/etc/locale.gen")
     cmd = "chroot " + data_config.MOUNTPOINT +" /usr/sbin/locale-gen"
     runcmd(cmd)
diff --git a/abs/core/LinHES-config/mv_locale.py b/abs/core/LinHES-config/mv_locale.py
new file mode 100644
index 0000000..e1bc59c
--- /dev/null
+++ b/abs/core/LinHES-config/mv_locale.py
@@ -0,0 +1,89 @@
+# -*- coding: utf-8 -*-
+import logging, mv_common
+import os, re
+config_file = "mv_config"
+
+lan_map = {'bg':'bg_BG',
+           'cs':'cs_CZ',
+           'da':'da_DK',
+           'de':'de_DE',
+           'el':'el_GR',
+           'en_ca':'en_CA',
+           'en_gb':'en_US',
+           'en_GB':'en_US',
+           'en_us':'en_US',
+           'es_es':'es_ES',
+           'es':'es_ES',
+           'et':'et_EE',
+           'fi':'fi_FI',
+           'fr':'fr_FR',
+           'he':'he_IL',
+           'hr':'hr_HR',
+           'hu':'hu_HU',
+           'it':'it_IT',
+           'ja':'ja_JP',
+           'nb':'nb_NO',
+           'nl':'nl_NL',
+           'pl':'pl_PL',
+           'pt_br':'pt_BR',
+           'pt':'pt_PT',
+           'ru':'ru_RU',
+           'sv':'sv_SE',
+           'zh_cn':'zh_CN',
+           'zh_hk':'zh_HK' }
+
+
+def genlocale(locale_list):
+    logging.info("    Generating locales")
+    localefile="/etc/locale.gen"
+    f = open(localefile)
+    lines = f.readlines()
+    f.close()
+
+    f = open(localefile,'w')
+
+    for line in lines:
+        outline = line
+        for locale in locale_list:
+            #print locale, line
+            if locale in line:
+                outline = line.replace('#','')
+            f.write(outline)
+    f.close()
+    cmd = "/usr/sbin/locale-gen"
+    mv_common.runcmd(cmd)
+
+
+def update_locale_conf(locale):
+    logging.info("    Updating /etc/locale.conf")
+    line='''LOCALE="%s"''' %locale
+    try:
+        f = open('/etc/locale.conf',"w")
+        f.write(line)
+        f.write("\n")
+        f.close()
+    except:
+        logging.debug("*   couldn't update /etc/locale.conf")
+
+
+def setup_locale(systemconfig):
+    logging.info("____Start of locale/lang config ____")
+
+    if  mv_common.read_config(mv_common.module_config,"lang")  == False  :
+        logging.info("____Skipping of lang, config disabled____")
+        return
+
+    try:
+        language = systemconfig.get("language")
+    except:
+        language = "en_us"
+
+    try:
+        locale = lan_map[language]+".UTF-8"
+    except:
+        locale = "en_US.UTF-8"
+    logging.info("    locale is: %s" %locale)
+
+    genlocale([locale])
+    update_locale_conf(locale)
+
diff --git a/abs/core/LinHES-config/mythvantage.cfg b/abs/core/LinHES-config/mythvantage.cfg
index 8897724..1147d9f 100644
--- a/abs/core/LinHES-config/mythvantage.cfg
+++ b/abs/core/LinHES-config/mythvantage.cfg
@@ -20,4 +20,5 @@ software = True
 smolt = True
 vnc = True
 fileshare = True
+language = True
 
diff --git a/abs/core/LinHES-config/systemconfig.py b/abs/core/LinHES-config/systemconfig.py
index baaab4f..d9c83b7 100755
--- a/abs/core/LinHES-config/systemconfig.py
+++ b/abs/core/LinHES-config/systemconfig.py
@@ -153,7 +153,8 @@ def main(argv):
                "all":False, "dhcp_request":False ,
                "func":False, "supplemental":False,
                "vnc":False, "fileshare":False,
-               "config_xml":False }
+               "config_xml":False,
+               "locale":False }
     try:
         opts,  args = getopt.getopt(argv,  'c:hm:d:',  ["help","modules" ] )
     except getopt.GetoptError, why:
@@ -205,6 +206,8 @@ def main(argv):
         cmdmodule["vnc"] = True
         cmdmodule["fileshare"] = True
         cmdmodule["config_xml"] = True
+        cmdmodule["locale"] = True
+
 
     ##putting this here until I can create the seperate share module
     #if cmdmodule["fileshare"]:
@@ -373,7 +376,9 @@ def main(argv):
         import mv_fileshare
         mv_fileshare.setup_fileshare(systemconfig, data_config)
 
-
+    if cmdmodule["locale"]:
+        import mv_locale
+        mv_locale.setup_locale(systemconfig)
 
 if __name__ == "__main__":
 
-- 
cgit v0.12