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):