When increase rpm release number, user can use --local-pkgs-path to install local...
authorxiaojuan.mao <xiaojuan.mao@samsung.com>
Fri, 22 Sep 2017 07:28:40 +0000 (15:28 +0800)
committeryuhuan.yang <yuhuan.yang@samsung.com>
Fri, 26 Jan 2018 08:34:49 +0000 (16:34 +0800)
Change-Id: I249c2b42a54bd311bb09296a787ffe7d2f03379d

mic/imager/baseimager.py
plugins/backend/zypppkgmgr.py

index 2daeb82..cca4e50 100755 (executable)
@@ -967,9 +967,9 @@ class BaseImageCreator(object):
         for pkg in self._excluded_pkgs:
             pkg_manager.deselectPackage(pkg)
 
-    def __localinst_packages(self, pkg_manager):
+    """def __localinst_packages(self, pkg_manager):
         for rpm_path in self._get_local_packages():
-            pkg_manager.installLocal(rpm_path)
+            pkg_manager.installLocal(rpm_path)"""
 
     def __preinstall_packages(self, pkg_manager):
         if not self.ks:
@@ -1107,7 +1107,7 @@ class BaseImageCreator(object):
             self.__select_packages(pkg_manager)
             self.__select_groups(pkg_manager)
             self.__deselect_packages(pkg_manager)
-            self.__localinst_packages(pkg_manager)
+            #self.__localinst_packages(pkg_manager)
             self.__check_packages(pkg_manager)
 
             BOOT_SAFEGUARD = 256L * 1024 * 1024 # 256M
index 9358cbe..77b942e 100644 (file)
@@ -19,6 +19,7 @@ import os
 import shutil
 import urlparse
 import rpm
+import glob
 
 import zypp
 if not hasattr(zypp, 'PoolQuery') or \
@@ -33,7 +34,7 @@ from mic.utils import misc, rpmmisc, runner, fs_related
 from mic.utils.grabber import myurlgrab, TextProgress
 from mic.utils.proxy import get_proxy_for
 from mic.utils.errors import CreatorError, RepoError, RpmError
-from mic.imager.baseimager import BaseImageCreator
+from mic.conf import configmgr
 
 class RepositoryStub:
     def __init__(self):
@@ -463,10 +464,30 @@ class Zypp(BackendPlugin):
     def checkPackage(self, pkg):
         self.check_pkgs.append(pkg)
 
+    def _get_local_packages(self):
+        """Return a list of rpm path to be local installed.
+        This is the hook where subclasses may specify a set of rpms which
+        it requires to be installed locally.
+        This returns an empty list by default.
+        Note, subclasses should usually chain up to the base class
+        implementation of this hook.
+        """
+        cropts = configmgr.create
+        if cropts['local_pkgs_path']:
+            if os.path.isdir(cropts['local_pkgs_path']):
+                return glob.glob(
+                        os.path.join(cropts['local_pkgs_path'], '*.rpm'))
+            elif os.path.splitext(cropts['local_pkgs_path'])[-1] == '.rpm':
+                return [cropts['local_pkgs_path']]
+        return []
+    def __localinst_packages(self):
+        for rpm_path in self._get_local_packages():
+            self.installLocal(rpm_path)
     def runInstall(self, checksize = 0):
         os.environ["HOME"] = "/"
         os.environ["LD_PRELOAD"] = ""
         self.buildTransaction()
+        self.__localinst_packages()
 
         todo = zypp.GetResolvablesToInsDel(self.Z.pool())
         installed_pkgs = todo._toInstall