Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/devbot/distro.py
diff options
context:
space:
mode:
Diffstat (limited to 'devbot/distro.py')
-rw-r--r--devbot/distro.py65
1 files changed, 15 insertions, 50 deletions
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