[PATCH 1/2] (v2) Add kickstart lang --addsupport option

Radek Vykydal rvykydal at redhat.com
Mon Mar 25 14:45:25 UTC 2013


---
 pyanaconda/install.py              |  2 +-
 pyanaconda/kickstart.py            |  4 ++--
 pyanaconda/packaging/yumpayload.py | 35 +++++++++++++++++++++++------------
 3 files changed, 26 insertions(+), 15 deletions(-)

diff --git a/pyanaconda/install.py b/pyanaconda/install.py
index 08b3966..cbaefce 100644
--- a/pyanaconda/install.py
+++ b/pyanaconda/install.py
@@ -128,7 +128,7 @@ def doInstall(storage, payload, ksdata, instClass):
     # system is bootable and configurable, and some other packages in order
     # to finish setting up the system.
     packages = storage.packages + ["authconfig", "firewalld"]
-    payload.preInstall(packages=packages, groups=payload.languageGroups(ksdata.lang.lang))
+    payload.preInstall(packages=packages, groups=payload.languageGroups())
     payload.install()
 
     if flags.flags.livecdInstall:
diff --git a/pyanaconda/kickstart.py b/pyanaconda/kickstart.py
index 9060c58..bcfcea6 100644
--- a/pyanaconda/kickstart.py
+++ b/pyanaconda/kickstart.py
@@ -576,9 +576,9 @@ class IscsiName(commands.iscsiname.FC6_IscsiName):
         blivet.iscsi.iscsi().initiator = self.iscsiname
         return retval
 
-class Lang(commands.lang.FC3_Lang):
+class Lang(commands.lang.F19_Lang):
     def __init__(self, *args, **kwargs):
-        commands.lang.FC3_Lang.__init__(self, *args, **kwargs)
+        commands.lang.F19_Lang.__init__(self, *args, **kwargs)
         if not self.lang and not flags.automatedInstall:
             self.lang = DEFAULT_LANG
 
diff --git a/pyanaconda/packaging/yumpayload.py b/pyanaconda/packaging/yumpayload.py
index 4fc6177..5eeb416 100644
--- a/pyanaconda/packaging/yumpayload.py
+++ b/pyanaconda/packaging/yumpayload.py
@@ -235,6 +235,13 @@ class YumPayload(PackagePayload):
 
         self.txID = None
 
+    def _writeLangpacksConfig(self):
+        langs = [self.data.lang.lang] + self.data.lang.addsupport
+        log.debug("configuring langpacks for %s" % langs)
+        with open("/etc/yum/pluginconf.d/langpacks.conf", "a") as f:
+            f.write("# Added by Anaconda\n")
+            f.write("langpack_locales = %s\n" % ", ".join(langs))
+
     def _writeYumConfig(self):
         """ Write out anaconda's main yum configuration file. """
         buf = """
@@ -345,6 +352,7 @@ reposdir=%s
 
         releasever = self._yum.conf.yumvar['releasever']
         self._writeYumConfig()
+        self._writeLangpacksConfig()
         self._resetYum(root=ROOT_PATH, keep_cache=True)
         log.debug("setting releasever to previous value of %s" % releasever)
         self._yum.preconf.releasever = releasever
@@ -1094,20 +1102,23 @@ reposdir=%s
 
         return groups
 
-    def languageGroups(self, lang):
-        groups = []
+    def languageGroups(self):
         yum_groups = self._yumGroups
+        if not yum_groups:
+            return []
 
-        if yum_groups:
-            with _yum_lock:
-                langs = expand_langs(lang)
-                groups = map(lambda x: [g.groupid for g in
-                             yum_groups.get_groups() if g.langonly == x],
-                             langs)
-
-        # the map gives us a list of results, this set call reduces
-        # it down to a unique set, then list() makes it back into a list.
-        return list(set(itertools.chain(*groups)))
+        lang_codes = [self.data.lang.lang] + self.data.lang.addsupport
+        lang_groups = set()
+
+        with _yum_lock:
+            groups = yum_groups.get_groups()
+            for lang_code in lang_codes:
+                for lang_code_guess in expand_langs(lang_code):
+                    for group in groups:
+                        if group.langonly == lang_code_guess:
+                            lang_groups.add(group.groupid)
+
+        return list(lang_groups)
 
     def groupDescription(self, groupid):
         """ Return name/description tuple for the group specified by id. """
-- 
1.7.11.7



More information about the anaconda-patches mailing list