diff --git a/src/mio.py b/src/mio.py index 45e0fb1a5734bab588d1a3e8723702c4158011fe..bd65dbccc12499c59a073d3972ca5e3d32dacdc6 100755 --- a/src/mio.py +++ b/src/mio.py @@ -81,6 +81,10 @@ if __name__ == '__main__': optParser.add_option("--dump", action="store_true", default=False, help="when listing, dump XML tree") + optParser.add_option("--exclude-rpm", + action="append", default=[], + metavar="RPM", + help="exclude RPM") optParser.add_option("--install", action="append", default=[], metavar="TARGET", @@ -217,7 +221,8 @@ if __name__ == '__main__': if not options.noyum: log(NORMAL, "Testing rpms") - installer.test_rpms(options.path) + installer.test_rpms(options.path, + options.exclude_rpm) log(NORMAL, "Testing files") installer.test_groups(options.prefix) @@ -229,7 +234,8 @@ if __name__ == '__main__': if not options.noyum: log(NORMAL, "Installing rpms") - rpm_result = installer.install_rpms(options.path) + rpm_result = installer.install_rpms(options.path, + options.exclude_rpm) log(NORMAL, "Installing files") installer.install_groups(options.prefix, diff --git a/src/mio/installer.py b/src/mio/installer.py index 23b7c4bd2718a39b7a84d82b1e6067aa847e3c97..3e66b533931a5fed6bf3f033a03ac3156ab7661e 100755 --- a/src/mio/installer.py +++ b/src/mio/installer.py @@ -162,16 +162,19 @@ class Installer: rpms.sort() return rpms - def install_rpms(self, path): + def install_rpms(self, path, exclude): rpm = [] version_db = mio.rpmDB.VersionDB() for r in self.rpm: r.old_version = version_db[r.name] if r.old_version == None: rpm.append(r.name) + pass + pass + rpm = filter(lambda p: not p in exclude, rpm) rpm.sort() print rpm - mio.yum.run(path + self.rpmdir, rpm) + 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] @@ -186,7 +189,8 @@ class Installer: for g in self.group: g.install(prefix, backup) - def test_rpms(self, path): + def test_rpms(self, path, exclude): + log(NORMAL, "Excluding rpms: "+ ",".join(exclude)) pass def test_groups(self, prefix): diff --git a/src/mio/yum.py b/src/mio/yum.py index dde39e1f4aa52cb8ece11a1f32d6c0bc2aee0152..4d96022f713f508cf45a6b6d2ab8e3ef8cf09c39 100755 --- a/src/mio/yum.py +++ b/src/mio/yum.py @@ -71,7 +71,7 @@ def conf(path): return "\n".join(result) -def run(path, rpm): +def run(path, rpm, exclude): c = conf(path) f = mio.filecache.createfile() f.write(c) @@ -90,7 +90,9 @@ def run(path, rpm): # to be done before the install, because outdated packages # need to be updated before the install, or we might get # a conflict. - update = "yum -c %s -e %s -d %s -y update" % (f.name, verb, verb) + exclude_arg = map(lambda s: "-x %s" % s, 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)