From 7b3e8cf31a7d1739a1fccb3726c911539c41cd42 Mon Sep 17 00:00:00 2001 From: Anders Blomdell <anders.blomdell@control.lth.se> Date: Wed, 24 Sep 2014 09:35:57 +0100 Subject: [PATCH] Version 2014-09-24 10:35 --- src/mio.py | 7 ++++--- src/mio/daemon_cage.py | 6 ++++-- src/mio/installer.py | 8 ++++---- src/mio/yum.py | 16 ++++------------ 4 files changed, 16 insertions(+), 21 deletions(-) diff --git a/src/mio.py b/src/mio.py index d284830..c87332e 100755 --- a/src/mio.py +++ b/src/mio.py @@ -298,14 +298,15 @@ if __name__ == '__main__': if not options.noyum: log(NORMAL, "Installing rpms") - rpm_result = installer.install_rpms(options.path, - options.exclude_rpm) + (rpm_result, failed) = installer.install_rpms(options.path, + options.exclude_rpm) log(NORMAL, "Installing files") installer.install_groups(options.prefix, (options.backup, options.backup_suffix)) if rpm_result: - for r in rpm_result: + print "Yum failed with %d" % rpm_result + for r in failed: print "Failed to install %s" % r exit(1) diff --git a/src/mio/daemon_cage.py b/src/mio/daemon_cage.py index a94b42d..491d510 100755 --- a/src/mio/daemon_cage.py +++ b/src/mio/daemon_cage.py @@ -32,14 +32,16 @@ def system(command): needCage = True break - if needCage: + if not needCage: + return p.wait() + else: # Create another deamon that puts the deamon still lingering # from above in a cage that puts all output in syslog print "Caging '%s'" % command pid = os.fork() if (pid != 0): # At this point, let the parent process continue - return + return p.wait() # When we get here we are first child os.setsid() pid = os.fork() # Fork a second child. diff --git a/src/mio/installer.py b/src/mio/installer.py index 8400771..b6be6c8 100755 --- a/src/mio/installer.py +++ b/src/mio/installer.py @@ -192,18 +192,18 @@ class Installer: rpm = filter(not_excluded, rpm) #rpm.sort() print rpm - mio.yum.run(path + self.rpmdir, rpm, exclude) + result = mio.yum.run(path + self.rpmdir, rpm, exclude) version_db = mio.rpmDB.VersionDB() for r in self.rpm: r.new_version = version_db[r.name] pass - result = [] + failed = [] for r in rpm: if version_db[r] == None: - result.append(r) + failed.append(r) pass pass - return result + return (result, failed) def install_groups(self, prefix, backup): for g in self.group: diff --git a/src/mio/yum.py b/src/mio/yum.py index 6ce341e..cc92efb 100755 --- a/src/mio/yum.py +++ b/src/mio/yum.py @@ -92,7 +92,7 @@ def run(path, rpm, exclude): update = "yum -c %s -e %s -d %s -y update %s" % (f.name, verb, verb, " ".join(exclude_arg)) mio.log.log(NORMAL, update) - mio.daemon_cage.system(update) + result = mio.daemon_cage.system(update) # Install new packages install = "yum -c %s -e %s -d %s -y install" % (f.name, verb, verb) @@ -100,14 +100,6 @@ def run(path, rpm, exclude): for p in rpm: i += 1 mio.log.log(NORMAL, "[%d/%d] %s %s" % (i, len(rpm), install, p)) - mio.daemon_cage.system("%s %s" % (install, p)) - -# if len(rpm) > 0: -# install = "yum -c %s -e %s -d %s -y install" % (f.name, verb, verb) -# if len(rpm) > 8 and mio.log.verbosity <= VERBOSE: -# mio.log.log(NORMAL, "%s %s ... [ %d more ] ... %s" % -# (install, rpm[0], len(rpm) - 2, rpm[-1])) -# else: -# mio.log.log(NORMAL, "%s %s" % (install, ' '.join(rpm))) -# -# os.system("%s %s" % (install, ' '.join(rpm))) + tmp = mio.daemon_cage.system("%s %s" % (install, p)) + result = max(filter(None, [result, tmp]) or [0]) + return result -- GitLab