diff options
author | Daniel Narvaez <dwnarvaez@gmail.com> | 2012-11-14 17:17:49 (GMT) |
---|---|---|
committer | Daniel Narvaez <dwnarvaez@gmail.com> | 2012-11-14 17:17:49 (GMT) |
commit | 4526b912b1e35bfad217a7d4068c7d35b48c7f09 (patch) | |
tree | 6a4bcbf1c9ee746e5877d7d9c8ec71f2c61efd37 | |
parent | 35cd6c621138516926a04f0359ebf2a596d26fbd (diff) |
Factor out installing packages
-rw-r--r-- | devbot/distro.py | 24 | ||||
-rw-r--r-- | devbot/system.py | 18 |
2 files changed, 26 insertions, 16 deletions
diff --git a/devbot/distro.py b/devbot/distro.py index 34f54bc..fe2522d 100644 --- a/devbot/distro.py +++ b/devbot/distro.py @@ -1,5 +1,29 @@ import subprocess +from devbot import command + +class FedoraPackageManager: + def install_packages(self, packages): + args = ["yum", "install"] + args.extend(packages) + + command.run_with_sudo(args) + +class UbuntuPackageManager: + def install_packages(self, packages): + args = ["apt-get", "install"] + args.extend(packages) + + command.run_with_sudo(args) + +def get_package_manager(): + name, version = _get_distro_info() + + if name == "fedora": + return FedoraPackageManager() + elif name == "ubuntu": + return UbuntuPackageManager() + def get_system_version(): name, version = _get_distro_info() if (name == "ubuntu" and version == "12.10") or \ diff --git a/devbot/system.py b/devbot/system.py index fb65bbd..aa8d3f8 100644 --- a/devbot/system.py +++ b/devbot/system.py @@ -64,21 +64,6 @@ checkers = { "binary": check_binary, "metacity-theme": check_metacity_theme, "include": check_include } -def install_packages(distro_name, packages): - if "SUGAR_BUILDBOT" in os.environ: - print "Missing packages %s" % " ".join(packages) - sys.exit(1) - - print "Installing required system packages" - - if distro_name == "fedora": - args = ["yum", "install"] - elif distro_name == "ubuntu": - args = ["apt-get", "install"] - - args.extend(packages) - command.run_with_sudo(args) - def load_deps_json(name): path = os.path.join(scriptdir, "deps", "%s.json" % name) return json.load(open(path)) @@ -104,7 +89,8 @@ def run_checks(distro_name, checks, packages): failed_checks.append(check) if to_install: - install_packages(distro_name, to_install) + package_manager = distro.get_package_manager() + package_manager.install_packages(to_install) if failed_checks: print "Failed checks\n" |