From 4cf4ec6131d41bfd27e510e3540239334b2bee31 Mon Sep 17 00:00:00 2001 From: "xiaojuan.mao" Date: Fri, 22 Sep 2017 15:28:40 +0800 Subject: [PATCH] When increase rpm release number, user can use --local-pkgs-path to install local pkgs. Change-Id: I249c2b42a54bd311bb09296a787ffe7d2f03379d --- mic/imager/baseimager.py | 6 +++--- plugins/backend/zypppkgmgr.py | 23 ++++++++++++++++++++++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/mic/imager/baseimager.py b/mic/imager/baseimager.py index 2daeb82..cca4e50 100755 --- a/mic/imager/baseimager.py +++ b/mic/imager/baseimager.py @@ -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 diff --git a/plugins/backend/zypppkgmgr.py b/plugins/backend/zypppkgmgr.py index 9358cbe..77b942e 100644 --- a/plugins/backend/zypppkgmgr.py +++ b/plugins/backend/zypppkgmgr.py @@ -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 -- 2.7.4