diff options
author | Daniel Narvaez <dwnarvaez@gmail.com> | 2012-06-13 14:08:33 (GMT) |
---|---|---|
committer | Daniel Narvaez <dwnarvaez@gmail.com> | 2012-06-13 20:18:24 (GMT) |
commit | 614c12d6f13a7c6928ba784892e4deee845d6780 (patch) | |
tree | 2ffcdd02cc8bd77dc894bfca4990e8af4421f8cc |
Initial commit
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | .gitmodules | 6 | ||||
-rw-r--r-- | Makefile | 32 | ||||
-rw-r--r-- | README | 26 | ||||
m--------- | activities/terminal | 0 | ||||
-rwxr-xr-x | scripts/build-activity | 8 | ||||
-rw-r--r-- | scripts/buildbot/master.cfg | 91 | ||||
-rwxr-xr-x | scripts/check-system | 181 | ||||
m--------- | scripts/jhbuild | 0 | ||||
-rw-r--r-- | scripts/jhbuildrc | 16 | ||||
-rw-r--r-- | scripts/sugar.modules | 46 | ||||
-rw-r--r-- | scripts/system.modules | 27 | ||||
-rw-r--r-- | scripts/xinitrc | 10 |
13 files changed, 446 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b23eed5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*~ +build/ +source/ diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..c9e9caa --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "scripts/jhbuild"] + path = scripts/jhbuild + url = git://git.gnome.org/jhbuild +[submodule "activities/terminal"] + path = activities/terminal + url = git://git.sugarlabs.org/terminal/mainline.git diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..d3f1a7b --- /dev/null +++ b/Makefile @@ -0,0 +1,32 @@ +SCRIPTS = $(CURDIR)/scripts +JHBUILD = $(CURDIR)/build/bin/jhbuild -f $(SCRIPTS)/jhbuildrc + +submodules: + git submodule init + git submodule update + +check-system: + $(SCRIPTS)/check-system + +install-jhbuild: submodules check-system + cd $(SCRIPTS)/jhbuild ; \ + ./autogen.sh --prefix=$(CURDIR)/build ; \ + make ; make install + +build-activities: submodules + $(JHBUILD) run $(SCRIPTS)/build-activity terminal + +build-glucose: install-jhbuild check-system + $(JHBUILD) build + +build: build-glucose build-activities + +build-%: + $(JHBUILD) buildone $* + +run: + xinit $(SCRIPTS)/xinitrc -- :2 + +clean: + rm -rf source + rm -rf build @@ -0,0 +1,26 @@ +Setup X to run as a normal user +=============================== + +In Ubuntu by default only root can start the X server. +You need to change that with + + dpkg-reconfigure x11-common + +Build and run +============= + +Just + + make build + make run + +Buildbot +======== + +You can easily setup a buildbot based on scripts/buildbot/master.cfg. + +Supported distributions +======================= + +Fedora 17 +Ubuntu 12.04 diff --git a/activities/terminal b/activities/terminal new file mode 160000 +Subproject 164c37db3d9a997d77bfb89b66fcb62721f46de diff --git a/scripts/build-activity b/scripts/build-activity new file mode 100755 index 0000000..912f1fa --- /dev/null +++ b/scripts/build-activity @@ -0,0 +1,8 @@ +#!/bin/sh + +scriptsdir=`dirname "$0"` +rootdir=`dirname "$scriptsdir"` + +cd $rootdir/activities/$1 +./setup.py install --prefix=$rootdir/build + diff --git a/scripts/buildbot/master.cfg b/scripts/buildbot/master.cfg new file mode 100644 index 0000000..d6627c0 --- /dev/null +++ b/scripts/buildbot/master.cfg @@ -0,0 +1,91 @@ +# MUST EDIT +# +# * The list of slaves +# * The slavenames of the builder +# * The auth password + +c = BuildmasterConfig = {} + +# Slaves + +from buildbot.buildslave import BuildSlave + +c["slaves"] = [BuildSlave("myslave", "password")] +c["slavePortnum"] = 9989 + +# Change sources + +from buildbot.changes.gitpoller import GitPoller + +repos = { "sugar": "sugar/mainline.git", + "sugar-base": "sugar-base/mainline.git", + "sugar-toolkit": "sugar-toolkit/mainline.git", + "sugar-datastore": "sugar-datastore/mainline.git", + "sugar-artwork": "sugar-artwork/mainline.git", + "sugar-toolkit-gtk3": "sugar-toolkit-gtk3/sugar-toolkit-gtk3.git", + "web": "web/mainline.git", + "terminal": "terminal/mainline.git" } + +c["change_source"] = [] + +for name, path in repos.items(): + c["change_source"].append(GitPoller("git://git.sugarlabs.org/%s" % path, + project="sugar", + workdir="gitpoller_work/%s" % name)) + +# Schedulers + +from buildbot.schedulers.basic import SingleBranchScheduler +from buildbot.schedulers.forcesched import ForceScheduler +from buildbot.changes import filter + +c["schedulers"] = [] + +change_filter = filter.ChangeFilter(project="sugar") +c["schedulers"].append(SingleBranchScheduler(name="all", + change_filter=change_filter, + builderNames=["build"])) + +c["schedulers"].append(ForceScheduler(name="force", + builderNames=["build"])) + + +# Builders + +from buildbot.process.factory import BuildFactory +from buildbot.steps.source import Git +from buildbot.steps.shell import Compile + +factory = BuildFactory() +factory.addStep(Git(repourl="git://github.com/dnarvaez/sugar-build", + mode="copy")) +factory.addStep(Compile(command=["make", "build"])) + +from buildbot.config import BuilderConfig + +c["builders"] = [] +c["builders"].append(BuilderConfig(name="build", + slavenames=["myslave"], + factory=factory)) + +# Status targets + +c["status"] = [] + +from buildbot.status import html +from buildbot.status.web import authz, auth + +authz_cfg = authz.Authz(auth=auth.BasicAuth([("admin","password")]), + forceBuild="auth") + +c["status"].append(html.WebStatus(http_port=8010, authz=authz_cfg)) + +# Project identity + +c["title"] = "Sugar" +c["titleURL"] = "http://sugarlabs.org" +c["buildbotURL"] = "http://localhost:8010/" + +# Sqlite + +c["db"] = {"db_url" : "sqlite:///state.sqlite"} 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"] diff --git a/scripts/jhbuild b/scripts/jhbuild new file mode 160000 +Subproject d2e266da3d9b0437964ac59d4253480f7990fca diff --git a/scripts/jhbuildrc b/scripts/jhbuildrc new file mode 100644 index 0000000..f2491d0 --- /dev/null +++ b/scripts/jhbuildrc @@ -0,0 +1,16 @@ +import os + +def root(): + return os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + +use_local_modulesets = True +moduleset = [os.path.join(root(), "scripts", "system.modules"), + os.path.join(root(), "scripts", "sugar.modules")] +modules = ["meta-system", "meta-sugar"] + +checkoutroot = os.path.join(root(), "source") +prefix = os.path.join(root(), "build") + +os.environ["GTK_DATA_PREFIX"] = prefix +os.environ["GTK_PREFIX"] = os.path.join(root(), "build", "lib", "gtk-2.0") + diff --git a/scripts/sugar.modules b/scripts/sugar.modules new file mode 100644 index 0000000..364aea9 --- /dev/null +++ b/scripts/sugar.modules @@ -0,0 +1,46 @@ +<?xml version="1.0"?><!--*- mode: nxml; indent-tabs-mode: nil -*--> +<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?> +<moduleset> + <repository type="git" name="git.sugarlabs.org" default="yes" + href="git://git.sugarlabs.org"/> + <autotools id="sugar-base"> + <branch module="sugar-base/mainline.git" checkoutdir="sugar-base"/> + </autotools> + <autotools id="sugar-toolkit"> + <branch module="sugar-toolkit/mainline.git" checkoutdir="sugar-toolkit"/> + <dependencies> + <dep package="sugar-datastore"/> + <dep package="sugar-presence-service"/> + </dependencies> + </autotools> + <autotools id="sugar-toolkit-gtk3"> + <branch module="sugar-toolkit-gtk3/sugar-toolkit-gtk3.git" checkoutdir="sugar-toolkit-gtk3"/> + <dependencies> + <dep package="sugar-datastore"/> + </dependencies> + </autotools> + <autotools id="sugar"> + <branch module="sugar/dnarvaezs-mainline.git" checkoutdir="sugar"/> + <dependencies> + <dep package="sugar-base"/> + <dep package="sugar-toolkit"/> + <dep package="sugar-artwork"/> + </dependencies> + </autotools> + <autotools id="sugar-presence-service"> + <branch module="sugar-presence-service/mainline.git" checkoutdir="sugar-presence-service"/> + </autotools> + <autotools id="sugar-artwork"> + <branch module="sugar-artwork/mainline.git" checkoutdir="sugar-artwork"/> + </autotools> + <autotools id="sugar-datastore"> + <branch module="sugar-datastore/mainline.git" checkoutdir="sugar-datastore"/> + </autotools> + + <metamodule id="meta-sugar"> + <dependencies> + <dep package="sugar-toolkit-gtk3"/> + <dep package="sugar"/> + </dependencies> + </metamodule> +</moduleset> diff --git a/scripts/system.modules b/scripts/system.modules new file mode 100644 index 0000000..63a9967 --- /dev/null +++ b/scripts/system.modules @@ -0,0 +1,27 @@ +<?xml version="1.0"?> +<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?> +<moduleset> + <repository type="git" name="git.gnome.org" href="git://git.gnome.org"/> + <autotools id="pygobject"> + <branch repo="git.gnome.org" revision="fb39ba934180e1e48fd15774e69d1cecf47a4c84"/> + <dependencies> + <dep package="glib"/> + <dep package="gobject-introspection"/> + </dependencies> + </autotools> + <autotools id="gobject-introspection"> + <branch repo="git.gnome.org" revision="5ae4c8763e4fcf94f43201f0d7aa8a13586a2fea"/> + <dependencies> + <dep package="glib"/> + </dependencies> + </autotools> + <autotools id="glib"> + <branch repo="git.gnome.org" revision="3e706ef88b3b433f777e552c85339b901314deaa"/> + </autotools> + + <metamodule id="meta-system"> + <dependencies> + <dep package="pygobject"/> + </dependencies> + </metamodule> +</moduleset> diff --git a/scripts/xinitrc b/scripts/xinitrc new file mode 100644 index 0000000..23dce95 --- /dev/null +++ b/scripts/xinitrc @@ -0,0 +1,10 @@ +unset GPG_AGENT_INFO +unset SSH_AUTH_SOCK +unset GNOME_KEYRING_CONTROL +unset GNOME_KEYRING_PID + +SCRIPTS_DIR=`dirname "$0"` +ROOT_DIR=`dirname "$SCRIPTS_DIR"` +RUN_COMMAND="dbus-launch --exit-with-session sugar" + +$ROOT_DIR/build/bin/jhbuild -f $ROOT_DIR/scripts/jhbuildrc run $RUN_COMMAND |