Merge "Another method of install tpk." into devel
authorChunhua Liu <chunhua1.liu@samsung.com>
Mon, 29 Jan 2018 05:29:00 +0000 (05:29 +0000)
committerGerrit Code Review <gerrit@review.ap-northeast-2.compute.internal>
Mon, 29 Jan 2018 05:29:01 +0000 (05:29 +0000)
1  2 
mic/3rdparty/pykickstart/parser.py
mic/3rdparty/pykickstart/sections.py
mic/conf.py
mic/imager/baseimager.py
mic/kickstart/__init__.py
mic/rt_util.py
plugins/imager/fs_plugin.py
plugins/imager/loop_plugin.py
plugins/imager/qcow_plugin.py
plugins/imager/raw_plugin.py

@@@ -704,5 -720,6 +722,7 @@@ class KickstartParser
          self.registerSection(PostScriptSection(self.handler, dataObj=Script))
          self.registerSection(TracebackScriptSection(self.handler, dataObj=Script))
          self.registerSection(RunScriptSection(self.handler, dataObj=Script))
 +        self.registerSection(PostUmountScriptSection(self.handler, dataObj=Script))
          self.registerSection(PackageSection(self.handler))
+         self.registerSection(TpkPackageSection(self.handler))
Simple merge
diff --cc mic/conf.py
Simple merge
@@@ -1153,8 -1152,49 +1153,49 @@@ class BaseImageCreator(object)
              except:
                  pass
  
+     def tpkinstall(self):
+         if self.ks:
+             tpk_pkgs = kickstart.get_tpkpackages(self.ks)
+             tpk_repoList = kickstart.get_tpkrepos(self.ks)
+             if tpk_repoList and tpk_pkgs:
+                 tpk_dir = "/usr/apps/.preload-tpk"
+                 fs.makedirs(self._instroot + "/usr/apps")
+                 fs.makedirs(self._instroot + tpk_dir)
+             for pkg in tpk_pkgs:
+                 flag = 0
+                 for tpk_repo in tpk_repoList:
+                     if hasattr(tpk_repo,'baseurl') and tpk_repo.baseurl.startswith("file:"):
+                         tpk_repourl = tpk_repo.baseurl.replace('file:','')
+                         tpk_repourl = "/%s" % tpk_repourl.lstrip('/')
+                         tpk_pkgpath = tpk_repourl + "/"+ pkg
+                         if os.path.isfile(tpk_pkgpath):
+                             shutil.copy(tpk_pkgpath,self._instroot + tpk_dir)
+                             flag = 1
+                             break
+                     elif hasattr(tpk_repo,'baseurl'):
+                         url = tpk_repo.baseurl.join(pkg)
+                         filename = self._instroot+tpk_dir+"/"+pkg
+                         if tpk_repo.baseurl.startswith("http:"):
+                             import urllib
+                             status = urllib.urlopen(url).code
+                             if status == 200:
+                                 filename = myurlgrab(url.full, filename, None)
+                                 flag = 1
+                                 break
+                             elif status == 404 or status == None:
+                                 continue
+                         #url is ok, then download, url wrong, check other url.
+                         elif tpk_repo.baseurl.startswith("https:") :
+                             try:
+                                 flag = 1
+                                 filename = myurlgrab(url.full, filename, None)
+                             except CreatorError:
+                                 continue
+                 if flag == 0:
+                     raise CreatorError("Tpk package missing.")
      def postinstall(self):
 -        self.copy_attachment()
 +        pass
  
      def _get_sign_scripts_env(self):
          """Return an environment dict for %post-umount scripts.
Simple merge
diff --cc mic/rt_util.py
Simple merge
Simple merge
@@@ -101,9 -101,9 +101,10 @@@ class LoopPlugin(ImagerPlugin)
              creator.check_depend_tools()
              creator.mount(None, creatoropts["cachedir"])
              creator.install()
+             creator.tpkinstall()
              creator.configure(creatoropts["repomd"])
              creator.copy_kernel()
 +            creator.copy_attachment()
              creator.create_cpio_image()
              creator.unmount()
              creator.copy_cpio_image()
@@@ -132,9 -132,9 +132,10 @@@ class QcowPlugin(ImagerPlugin)
              creator.check_depend_tools()
              creator.mount(None, creatoropts["cachedir"])
              creator.install()
+             creator.tpkinstall()
              creator.configure(creatoropts["repomd"])
              creator.copy_kernel()
 +            creator.copy_attachment()
              creator.create_cpio_image()
              creator.unmount()
              creator.copy_cpio_image()
@@@ -99,9 -99,9 +99,10 @@@ class RawPlugin(ImagerPlugin)
              creator.check_depend_tools()
              creator.mount(None, creatoropts["cachedir"])
              creator.install()
+             creator.tpkinstall()
              creator.configure(creatoropts["repomd"])
              creator.copy_kernel()
 +            creator.copy_attachment()
              creator.unmount()
              creator.generate_bmap()
              creator.package(creatoropts["destdir"])