From 614c12d6f13a7c6928ba784892e4deee845d6780 Mon Sep 17 00:00:00 2001 From: Daniel Narvaez Date: Wed, 13 Jun 2012 14:08:33 +0000 Subject: Initial commit --- (limited to 'scripts/check-system') diff --git a/scripts/check-system b/scripts/check-system new file mode 100755 index 0000000..7484713 --- /dev/null +++ b/scripts/check-system @@ -0,0 +1,181 @@ +#!/usr/bin/python + +import os +import subprocess + +binaries = [{ "name": "git", + "packages": { "fedora": "git", + "ubuntu": "git" } }, + { "name": "gcc", + "packages": { "fedora": "gcc", + "ubuntu": "gcc" } }, + { "name": "flex", # gobject-introspection + "packages": { "fedora": "flex", + "ubuntu": "flex" } }, + { "name": "bison", # gobject-introspection + "packages": { "fedora": "bison", + "ubuntu": "bison" } }, + { "name": "autoreconf", + "packages": { "fedora": "autoconf", + "ubuntu": "autoconf" } }, + { "name": "aclocal", + "packages": { "fedora": "automake", + "ubuntu": "automake" } }, + { "name": "libtool", + "packages": { "fedora": "libtool", + "ubuntu": "libtool" } }, + { "name": "icon-slicer", + "packages": { "fedora": "icon-slicer", + "ubuntu": "icon-slicer" } }, + { "name": "intltoolize", + "packages": { "fedora": "intltool", + "ubuntu": "intltool" } }, + { "name": "gnome-doc-common", # FIXME + "packages": { "fedora": "gnome-common", + "ubuntu": "gnome-common" } }] + +libs = [{ "name": "python2", + "packages": { "fedora": "python-devel", + "ubuntu": "python-dev" } }, + { "name": "glib-2.0", + "packages": { "fedora": "glib2-devel", + "ubuntu": "libglib2.0-dev" } }, + { "name": "gtk+-3.0", + "packages": { "fedora": "gtk3-devel", + "ubuntu": "libgtk-3-dev" } }, + { "name": "sm", + "packages": { "fedora": "libSM-devel", + "ubuntu": "libsm-dev" } }, + { "name": "ice", + "packages": { "fedora": "libICE-devel", + "ubuntu": "libice-dev" } }, + { "name": "alsa", + "packages": { "fedora": "alsa-lib-devel", + "ubuntu": "libasound2-dev" } }, + { "name": "librsvg-2.0", + "packages": { "fedora": "librsvg2-devel", + "ubuntu": "librsvg2-dev" } }, + { "name": "gobject-introspection-1.0", + "packages": { "fedora": "gobject-introspection-devel", + "ubuntu": "libgirepository1.0-dev" } }, + { "name": "pygtk-2.0", + "packages": { "fedora": "pygtk2-devel", + "ubuntu": "python-gtk2-dev" } }, + { "name": "gconf-2.0", + "packages": { "fedora": "GConf2-devel", + "ubuntu": "libgconf2-dev" } }, + { "name": "gtk-doc", # glib + "packages": { "fedora": "gtk-doc", + "ubuntu": "gtk-doc-tools" } }, + { "name": "cairo-gobject", # gobject-introspection + "packages": { "fedora": "cairo-gobject-devel", + "ubuntu": "libcairo2-dev" } }, + { "name": "pycairo", + "packages": { "fedora": "pycairo-devel", + "ubuntu": "python-cairo-dev" } }, + { "name": "icon-naming-utils", + "packages": { "fedora": "icon-naming-utils", + "ubuntu": "icon-naming-utils" } }] + +imports = [{ "import": "import wnck", + "packages": { "fedora": "gnome-python2-libwnck", + "ubuntu": "python-wnck" } }, + { "import": "import hippo", + "packages": { "fedora": "hippo-canvas-python", + "ubuntu": "python-hippocanvas" } }, + { "import": "import telepathy", + "packages": { "fedora": "python-telepathy", + "ubuntu": "python-telepathy" } }, + { "import": "import cjson", + "packages": { "fedora": "python-cjson", + "ubuntu": "python-cjson" } }, + { "import": "import xapian", + "packages": { "fedora": "xapian-bindings-python", + "ubuntu": "python-xapian" } }, + { "import": "import dateutil", + "packages": { "fedora": "python-dateutil", + "ubuntu": "python-dateutil" } }, + { "import": "import gtksourceview2", + "packages": { "fedora": "pygtksourceview", + "ubuntu": "python-gtksourceview2" } }, + { "import": "import vte", + "packages": { "fedora": "vte", + "ubuntu": "python-vte" } }, + { "import": "import decorator", + "packages": { "fedora": "python-decorator", + "ubuntu": "python-decorator" } }, + { "import": "from gi.repository import EvinceDocument", + "packages": { "fedora": "evince-libs", + "ubuntu": "gir1.2-evince-3.0" } }, + { "import": "import rsvg", + "packages": { "fedora": "gnome-python2-rsvg", + "ubuntu": "python-rsvg" } }] + +distro = "unknown" + +if os.path.exists("/etc/fedora-release"): + distro = "fedora" +elif os.path.exists("/etc/lsb-release"): + distributor_id = subprocess.check_output(["lsb_release", "-i"]) + if "Ubuntu" in distributor_id: + distro = "ubuntu" + +devnull = open("/dev/null", "w") + +missing_binaries = [] +missing_libs = [] +missing_imports = [] +packages = [] + +for info in binaries: + if subprocess.call(["which", info["name"]], + stdout=devnull, + stderr=subprocess.STDOUT): + if distro in info["packages"]: + packages.append(info["packages"][distro]) + else: + missing_binaries.append(info) + +for info in libs: + if subprocess.call(["pkg-config", "--exists", info["name"]]) == 1: + if distro in info["packages"]: + packages.append(info["packages"][distro]) + else: + missing_libs.append(info) + +for info in imports: + if subprocess.call(["python", "-c", info["import"]], + stdout=devnull, stderr=subprocess.STDOUT) == 1: + if distro in info["packages"]: + packages.append(info["packages"][distro]) + else: + missing_libs.append(info) + +if packages: + args = ["sudo"] + + if distro == "fedora": + args.extend(["yum", "install"]) + elif distro == "ubuntu": + args.extend(["apt-get", "install"]) + + args.extend(packages) + subprocess.call(args) + +if missing_binaries: + print "Missing binaries\n" + + for info in missing_binaries: + print info["name"] + +if missing_libs: + print "Missing libraries\n" + + for info in missing_libs: + print info["name"] + +if missing_imports: + print "Missing imports\n" + + for info in missing_imports: + print info["name"] -- cgit v0.9.1