[master 1/1] Make sure LANG is always set to something (#1201896)

dashea installerbot-noreply at redhat.com
Fri Mar 20 21:30:11 UTC 2015


From: David Shea <dshea at redhat.com>

Kickstart and command line language settings were not copied to the
environment, caused issues later on in the GUI progress hub. Copy
user-specified lang data to LANG, and make sure that LANG is always set
to something usable.
---
 anaconda | 42 ++++++++++++++++++++----------------------
 1 file changed, 20 insertions(+), 22 deletions(-)

diff --git a/anaconda b/anaconda
index 88091ab..ad0a69c 100755
--- a/anaconda
+++ b/anaconda
@@ -1224,30 +1224,28 @@ if __name__ == "__main__":
     if "LANG" not in os.environ:
         localization.load_firmware_language(ksdata.lang)
 
-    # check if the LANG environmental variable is set
-    env_lang = os.environ.get("LANG")
-    if env_lang is not None:
-        # parse it using langtable
-        env_langs = localization.get_language_locales(env_lang)
-        # if parsed LANG is the same as our default language - ignore it;
-        # otherwise use it as valid language candidate
-        if env_langs and env_langs[0] != constants.DEFAULT_LANG:
-            env_lang = env_langs[0]  # the first language is the best match
-        else:
-            env_lang = None
-
-    requested_lang = opts.lang or ksdata.lang.lang or env_lang
+    # If command line options or kickstart set LANG, override the environment
+    if opts.lang:
+        os.environ["LANG"] = opts.lang # pylint: disable=environment-modify
+    elif ksdata.lang.lang:
+        os.environ["LANG"] = ksdata.lang.lang # pylint: disable=environment-modify
 
-    if requested_lang:
-        locales = localization.get_language_locales(requested_lang)
-        if locales:
-            localization.setup_locale(locales[0], ksdata.lang)
-            ksdata.lang.seen = True
-        else:
-            log.error("Invalid locale '%s' given on command line or in kickstart", requested_lang)
+    # Make sure LANG is set to something
+    if "LANG" not in os.environ:
+        os.environ["LANG"] = constants.DEFAULT_LANG # pylint: disable=environment-modify
+
+    # parse it using langtable and update the environment
+    # If langtable returns no locales, fall back to the default
+    env_langs = localization.get_language_locales(os.environ["LANG"])
+    if env_langs:
+        # the first language is the best match
+        os.environ["LANG"] = env_langs[0]  # pylint: disable=environment-modify
     else:
-        # no kickstart or bootoption - use default
-        localization.setup_locale(constants.DEFAULT_LANG, ksdata.lang)
+        log.error("Invalid locale '%s' given on command line or in kickstart", os.environ["LANG"])
+        os.environ["LANG"] = constants.DEFAULT_LANG # pylint: disable=environment-modify
+
+    localization.setup_locale(os.environ["LANG"], ksdata.lang)
+    ksdata.lang.seen = True
 
     import blivet
     blivet.enable_installer_mode()


-- 
To view this commit on github, visit https://github.com/rhinstaller/anaconda/commit/d446ba4ed050c2b1df14c7784e1fdc20e14be530


More information about the anaconda-patches mailing list