Allow specifying a mask when removing package files
This commit is contained in:
parent
f602a2eb7b
commit
15988fd5b2
@ -150,9 +150,9 @@ class Lorax(BaseLoraxClass):
|
||||
if not os.path.isdir("/tmp/pkglists"):
|
||||
os.makedirs("/tmp/pkglists")
|
||||
|
||||
for pkg in self.installtree.yum.installed_packages:
|
||||
with open("/tmp/pkglists/%s" % pkg.name, "w") as f:
|
||||
for filename in self.installtree.yum.get_file_list(pkg):
|
||||
for pkgobj in self.installtree.yum.installed_packages.values():
|
||||
with open("/tmp/pkglists/%s" % pkgobj.name, "w") as f:
|
||||
for filename in pkgobj.filelist:
|
||||
f.write("%s\n" % filename)
|
||||
|
||||
self.installtree.run_ldconfig()
|
||||
@ -623,7 +623,12 @@ class YumHelper(object):
|
||||
@property
|
||||
def installed_packages(self):
|
||||
pl = self.yb.doPackageLists()
|
||||
return pl.installed
|
||||
|
||||
d = {}
|
||||
for pkgobj in pl.installed:
|
||||
d[pkgobj.name] = pkgobj
|
||||
|
||||
return d
|
||||
|
||||
def get_file_list(self, package):
|
||||
return package.returnFileEntries()
|
||||
|
@ -103,8 +103,14 @@ class BaseImageClass(BaseLoraxClass):
|
||||
fname = os.path.join(self.dsttree, fname)
|
||||
remove_(fname)
|
||||
|
||||
def removepkg(self, pkgname):
|
||||
self.pkgs_to_remove.add(pkgname)
|
||||
def removepkg(self, *args):
|
||||
pkgname = args[0]
|
||||
try:
|
||||
mask = args[1]
|
||||
except IndexError:
|
||||
mask = "*"
|
||||
|
||||
self.pkgs_to_remove.add((pkgname, mask))
|
||||
|
||||
def symlink(self, link_target, link_name):
|
||||
link_name = os.path.join(self.dsttree, link_name)
|
||||
|
@ -640,12 +640,20 @@ class Install(BaseImageClass):
|
||||
"libdir": self.conf.libdir}
|
||||
self.parse_template(self.template_file, variables)
|
||||
|
||||
# XXX remove whole packages
|
||||
for pkg in self.installtree.yum.installed_packages:
|
||||
if pkg.name in self.pkgs_to_remove:
|
||||
self.pinfo("removing not needed package %s" % pkg.name)
|
||||
for fname in pkg.filelist:
|
||||
self.pdebug("removing file %s%s" % (self.srctree, fname))
|
||||
# XXX remove packages
|
||||
installed_packages = self.installtree.yum.installed_packages
|
||||
for pkgname, mask in self.pkgs_to_remove:
|
||||
if pkgname not in installed_packages:
|
||||
continue
|
||||
|
||||
self.pinfo("removing files from package %s matching mask %s" \
|
||||
% (pkgname, mask))
|
||||
|
||||
pkgobj = installed_packages.get(pkgname)
|
||||
for fname in pkgobj.filelist:
|
||||
if fnmatch.fnmatch(fname, mask):
|
||||
self.pdebug("removing file %s%s" \
|
||||
% (self.srctree, fname))
|
||||
remove_("%s%s" % (self.srctree, fname))
|
||||
|
||||
self.copy_stubs()
|
||||
|
Loading…
Reference in New Issue
Block a user