If you import locale before the file(s) get created, you end up with a traceback from locale that says: Error: unsupported locale setting And this happens no matter what the locale is. We used to create the locale files for the default lang in loader, so now let's have anaconda declare a default locale and build its locale data before we import locale. --- anaconda | 7 ++++++- pyanaconda/constants.py | 3 +++ pyanaconda/language.py | 6 +++--- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/anaconda b/anaconda index 0094ef9..a123bee 100755 --- a/anaconda +++ b/anaconda @@ -614,7 +614,7 @@ if __name__ == "__main__": # pull this in to get product name and versioning from pyanaconda import product - from pyanaconda.constants import ROOT_PATH + from pyanaconda.constants import ROOT_PATH, DEFAULT_LANG from pyanaconda import isys isys.initLog() @@ -625,6 +625,11 @@ if __name__ == "__main__": from pyanaconda import vnc from pyanaconda import kickstart + # Write out the default locale before anything imports locale (#731356) + deflang, defcode = DEFAULT_LANG.split('.') + iutil.execWithRedirect("localedef", + ["-i", deflang, "-f", defcode, DEFAULT_LANG]) + import gettext _ = lambda x: gettext.ldgettext("anaconda", x) diff --git a/pyanaconda/constants.py b/pyanaconda/constants.py index 4167f96..9ceeb9b 100644 --- a/pyanaconda/constants.py +++ b/pyanaconda/constants.py @@ -87,3 +87,6 @@ relabelDirs = ["/etc/sysconfig/network-scripts", "/var/lib/rpm", "/var/lib/yum" ANACONDA_CLEANUP = "anaconda-cleanup" ROOT_PATH = "/mnt/sysimage" + +# NOTE: this should be LANG.CODESET, e.g. en_US.UTF-8 +DEFAULT_LANG = "en_US.UTF-8" diff --git a/pyanaconda/language.py b/pyanaconda/language.py index cb90085..f49c041 100644 --- a/pyanaconda/language.py +++ b/pyanaconda/language.py @@ -26,7 +26,7 @@ import string import locale import gettext -from pyanaconda.constants import ROOT_PATH +from pyanaconda.constants import ROOT_PATH, DEFAULT_LANG import localeinfo from simpleconfig import SimpleConfigFile import system_config_keyboard.keyboard as keyboard @@ -51,7 +51,7 @@ class Language(object): self._instLang = value # If we're running in text mode, value may not be a supported language - # to display. We need to default to en_US.UTF-8 for now. + # to display. Fall back to the default for now. if self.displayMode == 't': for (lang, info) in self.localeInfo.iteritems(): if lang == self._instLang and info[2] == "False": @@ -117,7 +117,7 @@ class Language(object): systemLang = property(lambda s: s._systemLang, lambda s, v: s._setSystemLang(v)) def __init__ (self, display_mode = 'g'): - self._default = "en_US.UTF-8" + self._default = DEFAULT_LANG self.displayMode = display_mode self.info = {} self.nativeLangNames = {} -- 1.7.7.6 _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list