From 5dcf454dacb1a104fea90735f9a0fa2d76854faf Mon Sep 17 00:00:00 2001 From: Daniel Narvaez Date: Mon, 26 Nov 2012 11:59:04 +0000 Subject: Add a DistroInfo class --- (limited to 'devbot/distro.py') diff --git a/devbot/distro.py b/devbot/distro.py index 0523936..441fbc1 100644 --- a/devbot/distro.py +++ b/devbot/distro.py @@ -2,59 +2,24 @@ import os import subprocess _package_managers = {} +_distros_info = [] -def get_use_lib64(): - return os.uname()[4] == "x86_64" and get_distro_name() != "ubuntu" +def register_distro_info(distro_info): + global _distros_info + _distros_info.append(distro_info) def register_package_manager(name, package_manager): + global _package_managers _package_managers[name] = package_manager def get_package_manager(test=False, interactive=True): - name, version = _get_distro_info() - return _package_managers[name](test=test, interactive=interactive) - -def get_system_version(): - name, version = _get_distro_info() - if (name == "ubuntu" and version == "12.10") or \ - (name == "fedora" and version == "18"): - return "3.6" - else: - return "3.4" - -def get_distro_name(): - name, version = _get_distro_info() - return name - -def _get_distro_info(): - distro = "unsupported" - version = "unknown" - - # Fedora - try: - fedora_release = open("/etc/fedora-release").read().strip() - if fedora_release == "Fedora release 17 (Beefy Miracle)": - distro = "fedora" - version = "17" - elif fedora_release == "Fedora release 18 (Spherical Cow)": - distro = "fedora" - version = "18" - except IOError: - pass - - # Ubuntu - try: - distributor = subprocess.check_output(["lsb_release", "-si"]).strip() - release = subprocess.check_output(["lsb_release", "-sr"]).strip() - - if distributor == "Ubuntu" and release == "12.10": - distro = "ubuntu" - version = "12.10" - except OSError: - pass - - arch = subprocess.check_output(["uname", "-i"]).strip() - if arch not in ["i386", "i686", "x86_64"]: - distro = "unsupported" - version = "unknown" - - return distro, version + global _package_managers + package_manager_class = _package_managers[get_distro_info().name] + return package_manager_class(test=test, interactive=interactive) + +def get_distro_info(): + global _distros_info + for info_class in _distros_info: + info = info_class() + if info.valid: + return info -- cgit v0.9.1