Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/scripts/check-system
diff options
context:
space:
mode:
authorDaniel Narvaez <dwnarvaez@gmail.com>2012-06-13 14:08:33 (GMT)
committer Daniel Narvaez <dwnarvaez@gmail.com>2012-06-13 20:18:24 (GMT)
commit614c12d6f13a7c6928ba784892e4deee845d6780 (patch)
tree2ffcdd02cc8bd77dc894bfca4990e8af4421f8cc /scripts/check-system
Initial commit
Diffstat (limited to 'scripts/check-system')
-rwxr-xr-xscripts/check-system181
1 files changed, 181 insertions, 0 deletions
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"]