From b6da95ace6dcc8b5ff5b56ae17dc5804e3328d8e Mon Sep 17 00:00:00 2001 From: Narayan Desai Date: Fri, 16 Oct 2009 02:01:09 +0000 Subject: SYSV fixes: (Resolves Ticket #762) (Patch from ITS Systems Team) - Flush noaskfile changes to disk - Handle package names better git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@5483 ce84e21b-d406-0410-9b95-82705330c041 --- src/lib/Client/Tools/SYSV.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/lib') diff --git a/src/lib/Client/Tools/SYSV.py b/src/lib/Client/Tools/SYSV.py index 146ce7967..8a9af9645 100644 --- a/src/lib/Client/Tools/SYSV.py +++ b/src/lib/Client/Tools/SYSV.py @@ -31,10 +31,13 @@ class SYSV(Bcfg2.Client.Tools.PkgTool): def __init__(self, logger, setup, config): Bcfg2.Client.Tools.PkgTool.__init__(self, logger, setup, config) + # noaskfile needs to live beyond __init__ otherwise file is removed self.noaskfile = tempfile.NamedTemporaryFile() self.noaskname = self.noaskfile.name try: self.noaskfile.write(noask) + # flush admin file contents to disk + self.noaskfile.flush() self.pkgtool = (self.pkgtool[0] % ("-a %s" % (self.noaskname)), \ self.pkgtool[1]) except: @@ -46,7 +49,12 @@ class SYSV(Bcfg2.Client.Tools.PkgTool): # Build list of packages lines = self.cmd.run("/usr/bin/pkginfo -x")[1] while lines: - version = lines.pop().split()[1] + # Splitting on whitespace means that packages with spaces in + # their version numbers don't work right. Found this with + # IBM TSM software with package versions like + # "Version 6 Release 1 Level 0.0" + # Should probably be done with a regex but this works. + version = lines.pop().split(') ')[1] pkg = lines.pop().split()[0] self.installed[pkg] = version -- cgit v1.2.3-1-g7c22