diff --git a/src/mio.py b/src/mio.py
index ec14271790de32eb116be6e7b176183c6e5734f2..45e0fb1a5734bab588d1a3e8723702c4158011fe 100755
--- a/src/mio.py
+++ b/src/mio.py
@@ -89,6 +89,10 @@ if __name__ == '__main__':
                          action="append", default=[],
                          metavar="XML",
                          help="list available targets in XML")
+    optParser.add_option("--list-rpms",
+                         action="append", default=[],
+                         metavar="TARGET",
+                         help="list rpms needed for TARGET")
     optParser.add_option("--noyum",
                          action="store_true",
                          help="don't run yum (rpms will not be installed)")
@@ -146,6 +150,18 @@ if __name__ == '__main__':
             for r in error[e]:
                 print "  from: '%s' in %s:%s" % (r.name[0], r._url, r._line)
 
+    if options.list_rpms:
+        installer = mio.installer.Installer(rules)
+        for g in options.list_rpms:
+            installer.add_group(g)
+            pass
+
+        log(NORMAL, "# List rpms for %s" % options.list_rpms)
+        for r in installer.list_rpms():
+            print r
+            pass
+        pass
+    
     if options.reachable_files:
         # List all files reachable from the given source files
         reachable_rules = mio.repository.Repository(find_and_parse,
diff --git a/src/mio/installer.py b/src/mio/installer.py
index 7bac0959427394595ec91d07bfb4f53e054eb816..23b7c4bd2718a39b7a84d82b1e6067aa847e3c97 100755
--- a/src/mio/installer.py
+++ b/src/mio/installer.py
@@ -154,6 +154,14 @@ class Installer:
             self.symlink[symlink] = [ symlink ]
         return self.symlink[symlink][0]
 
+    def list_rpms(self):
+        rpms = []
+        for r in self.rpm:
+            rpms.append(str(r.name))
+            pass
+        rpms.sort()
+        return rpms
+            
     def install_rpms(self, path):
         rpm = []
         version_db = mio.rpmDB.VersionDB()
@@ -162,6 +170,7 @@ class Installer:
             if r.old_version == None:
                 rpm.append(r.name)
         rpm.sort()
+        print rpm
         mio.yum.run(path + self.rpmdir, rpm)
         version_db = mio.rpmDB.VersionDB()
         for r in self.rpm:
diff --git a/src/mio/node.py b/src/mio/node.py
index d926e6bc5fc1542190af59749d51c7fc636c06ff..f41611724c41215c82da6151e381767faf6dd19d 100755
--- a/src/mio/node.py
+++ b/src/mio/node.py
@@ -293,7 +293,8 @@ class file_node(target_node):
     
                 tstat = os.stat(self.target)
                 sstat = os.stat(self.source)
-                if not self.touch and tstat.st_mtime != sstat.st_mtime:
+                if (not self.touch and
+                    int(tstat.st_mtime) != int(sstat.st_mtime)):
                     result = True
                     self.action.append(self.mtime)
             else:
@@ -361,7 +362,7 @@ class file_node(target_node):
         os.chmod(target, self.mode)
         if not self.touch:
             stat = os.stat(self.source)
-            os.utime(target, (stat.st_atime, stat.st_mtime))
+            os.utime(target, (stat.st_atime, int(stat.st_mtime)))
         # Replace target with temporary file
         try:
             os.unlink(self.target)
@@ -381,7 +382,7 @@ class file_node(target_node):
     def mtime(self, backup):
         # Propagate mtime (and atime)
         stat = os.stat(self.source)
-        os.utime(self.target, (stat.st_atime, stat.st_mtime))
+        os.utime(self.target, (stat.st_atime, int(stat.st_mtime)))
 
 class symlink_node(target_node):
     def __init__(self, name, decl=None, group=None):