diff --git a/src/mio.py b/src/mio.py index d284830d23b7346f7a3de2919596c57cd7c37081..c87332eb4f042115c40640050a2d9f4e0e48b8b1 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 a94b42d60309fad984c46aaa4fcd896e8ff5539d..491d51004871ed35b224ebeaea40ec072387b71c 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 8400771533e82ed3e446a86e842ea8c9ac7db94d..b6be6c8264eaa01867046bb89c1e6a78781ad9e0 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 6ce341ef048b8171473e8e15fc4aca056b4fafba..cc92efbd5891a1ae52799f16edfea20c900bc9e5 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