[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