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