treebuilder: add _filelist(*pkgs), use it in removepkg/removefrom
This commit is contained in:
parent
f724051499
commit
f2814d5c90
@ -236,6 +236,10 @@ class TemplateRunner(object):
|
|||||||
def _in(self, path):
|
def _in(self, path):
|
||||||
return joinpaths(self.inroot, path)
|
return joinpaths(self.inroot, path)
|
||||||
|
|
||||||
|
def _filelist(self, *pkgs):
|
||||||
|
pkglist = self.yum.doPackageLists(pkgnarrow="installed", patterns=pkgs)
|
||||||
|
return set([f for pkg in pkglist.installed for f in pkg.filelist])
|
||||||
|
|
||||||
def run(self, parsed_template):
|
def run(self, parsed_template):
|
||||||
logger.info("running template commands")
|
logger.info("running template commands")
|
||||||
for (num, line) in enumerate(parsed_template,1):
|
for (num, line) in enumerate(parsed_template,1):
|
||||||
@ -343,11 +347,8 @@ class TemplateRunner(object):
|
|||||||
self.yum.install(pattern=p)
|
self.yum.install(pattern=p)
|
||||||
|
|
||||||
def removepkg(self, *pkgs):
|
def removepkg(self, *pkgs):
|
||||||
#for p in pkgs:
|
# NOTE: "for p in pkgs: self.yum.remove(pattern=p)" traces back, so..
|
||||||
# self.yum.remove(pattern=p)
|
filepaths = [f.lstrip('/') for f in self._filelist(*pkgs)]
|
||||||
pkglist = self.yum.doPackageLists(pkgnarrow="installed", patterns=pkgs)
|
|
||||||
for pkg in pkglist.installed:
|
|
||||||
filepaths = [f.lstrip('/') for f in pkg.filelist]
|
|
||||||
self.remove(*filepaths)
|
self.remove(*filepaths)
|
||||||
|
|
||||||
def run_pkg_transaction(self):
|
def run_pkg_transaction(self):
|
||||||
@ -359,8 +360,6 @@ class TemplateRunner(object):
|
|||||||
|
|
||||||
def removefrom(self, pkg, *globs):
|
def removefrom(self, pkg, *globs):
|
||||||
globs_re = re.compile("|".join([fnmatch.translate(g) for g in globs]))
|
globs_re = re.compile("|".join([fnmatch.translate(g) for g in globs]))
|
||||||
pkglist = self.yum.doPackageLists(pkgnarrow="installed", patterns=[pkg])
|
remove = filter(globs_re.match, self._filelist(pkg))
|
||||||
pkg_files = [f for pkg in pkglist.installed for f in pkg.filelist]
|
|
||||||
remove = filter(globs_re.match, pkg_files)
|
|
||||||
logger.debug("removing %i files from %s", len(remove), pkg)
|
logger.debug("removing %i files from %s", len(remove), pkg)
|
||||||
self.remove(*remove)
|
self.remove(*remove)
|
||||||
|
Loading…
Reference in New Issue
Block a user