Merge "Another method of install tpk." into devel
[tools/mic.git] / mic / kickstart / __init__.py
old mode 100644 (file)
new mode 100755 (executable)
index 8116da3..c3cb5f4
@@ -100,11 +100,13 @@ def read_kickstart(path):
     using_version = ksversion.DEVEL
     commandMap[using_version]["desktop"] = desktop.Mic_Desktop
     commandMap[using_version]["repo"] = micrepo.Mic_Repo
+    commandMap[using_version]["tpk_repo"] = micrepo.Mic_Tpk_Repo
     commandMap[using_version]["bootloader"] = micboot.Mic_Bootloader
     commandMap[using_version]["part"] = partition.Mic_Partition
     commandMap[using_version]["partition"] = partition.Mic_Partition
     commandMap[using_version]["installerfw_plugins"] = installerfw.Mic_installerfw
     dataMap[using_version]["RepoData"] = micrepo.Mic_RepoData
+    dataMap[using_version]["Tpk_RepoData"] = micrepo.Mic_Tpk_RepoData
     dataMap[using_version]["PartData"] = partition.Mic_PartData
     superclass = ksversion.returnClassForVersion(version=using_version)
 
@@ -167,6 +169,12 @@ class LanguageConfig(KickstartConfig):
             f.write("LANG=\"" + kslang.lang + "\"\n")
             f.close()
 
+            #cp ks lang setting to other file, then can access the file in %post section
+            fs.makedirs(self.path("/etc/config"))
+            f = open(self.path("/etc/config/mic_language"), "w+")
+            f.write("LANG=\"" + kslang.lang + "\"\n")
+            f.close()
+
 class KeyboardConfig(KickstartConfig):
     """A class to apply a kickstart keyboard configuration to a system."""
     @apply_wrapper
@@ -194,16 +202,23 @@ class TimezoneConfig(KickstartConfig):
         f.write("ZONE=\"" + tz + "\"\n")
         f.write("UTC=" + utc + "\n")
         f.close()
+        if not os.path.exists("/opt/etc"):
+            fs.makedirs("/opt/etc")
         tz_source = "/usr/share/zoneinfo/%s" % (tz)
+        tz_midst = "/opt/etc/localtime"
         tz_dest = "/etc/localtime"
         try:
-            cpcmd = fs.find_binary_inchroot('cp', self.instroot)
-            if cpcmd:
-                self.call([cpcmd, "-f", tz_source, tz_dest])
+            lncmd = fs.find_binary_inchroot('ln', self.instroot)
+            if lncmd:
+                self.call([lncmd, "-s", tz_source, tz_midst])
+                self.call([lncmd, "-s", tz_midst, tz_dest])
             else:
-                cpcmd = fs.find_binary_path('cp')
-                subprocess.call([cpcmd, "-f",
+                lncmd = fs.find_binary_path('ln')
+                subprocess.call([lncmd, "-s",
                                  self.path(tz_source),
+                                 self.path(tz_midst)])
+                subprocess.call([lncmd, "-s",
+                                 self.path(tz_midst),
                                  self.path(tz_dest)])
         except (IOError, OSError), (errno, msg):
             raise errors.KsError("Timezone setting error: %s" % msg)
@@ -726,11 +741,11 @@ RepoType = collections.namedtuple("Repo",
 
 def Repo(name, baseurl, mirrorlist=None, includepkgs=[], excludepkgs=[], proxy=None,
          proxy_username=None, proxy_password=None, debuginfo=None,
-         source=None, gpgkey=None, disable=None, ssl_verify=False,
+         source=None, gpgkey=None, disable=None, ssl_verify=None,
          nocache=False, cost=None, priority=None):
     return RepoType(name, baseurl, mirrorlist, includepkgs, excludepkgs, proxy,
                     proxy_username, proxy_password, debuginfo,
-                    source, gpgkey, disable, ssl_verify == "yes", nocache,
+                    source, gpgkey, disable, ssl_verify, nocache,
                     cost, priority)
 
 
@@ -759,9 +774,32 @@ def get_repos(ks, repo_urls=None, ignore_ksrepo=False):
                                           repo.get('user', None),
                                           repo.get('passwd', None))
             repos[name] = Repo(**repo)
-
     return repos.values()
 
+TpkRepoType = collections.namedtuple("TpkRepo",
+               "name, baseurl,proxy,proxy_username,proxy_password,ssl_verify")
+
+def TpkRepo(name, baseurl, proxy=None,proxy_username=None, proxy_password=None,ssl_verify=None):
+    return TpkRepoType(name, baseurl,proxy,proxy_username,proxy_password,ssl_verify)
+
+
+def get_tpkrepos(ks):
+    tpkrepos = {}
+    for tpkrepodata in ks.handler.tpk_repo.tpkRepoList:
+        tpkrepo = {}
+        for field in TpkRepoType._fields:
+            if hasattr(tpkrepodata, field) and getattr(tpkrepodata, field):
+                tpkrepo[field] = getattr(tpkrepodata, field)
+
+        if hasattr(tpkrepodata, 'baseurl') and getattr(tpkrepodata, 'baseurl'):
+            tpkrepo['baseurl'] = SafeURL(getattr(tpkrepodata, 'baseurl'),getattr(tpkrepodata, 'user',None),getattr(tpkrepodata, 'passwd',None))
+
+        if 'name' in tpkrepo:
+            tpkrepos[tpkrepo['name']] = TpkRepo(**tpkrepo)
+
+    return tpkrepos.values()
+
+
 def convert_method_to_repo(ks):
     try:
         ks.handler.repo.methodToRepo()
@@ -777,6 +815,9 @@ def get_pre_packages(ks, required=()):
 def get_packages(ks, required=()):
     return ks.handler.packages.packageList + list(required)
 
+def get_tpkpackages(ks):
+    return ks.handler.tpk_packages.tpk_packageList
+
 def get_groups(ks, required=()):
     return ks.handler.packages.groupList + list(required)
 
@@ -807,6 +848,14 @@ def get_post_scripts(ks):
         scripts.append(s)
     return scripts
 
+def get_sign_scripts(ks):
+    scripts = []
+    for s in ks.handler.scripts:
+        if (s.type == ksparser.KS_SCRIPT_RUN or \
+            s.type == ksparser.KS_SCRIPT_UMOUNT):
+            scripts.append(s)
+    return scripts
+
 def add_repo(ks, repostr):
     args = repostr.split()
     repoobj = ks.handler.repo.parse(args[1:])