Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--.gitmodules6
-rw-r--r--Makefile32
-rw-r--r--README26
m---------activities/terminal0
-rwxr-xr-xscripts/build-activity8
-rw-r--r--scripts/buildbot/master.cfg91
-rwxr-xr-xscripts/check-system181
m---------scripts/jhbuild0
-rw-r--r--scripts/jhbuildrc16
-rw-r--r--scripts/sugar.modules46
-rw-r--r--scripts/system.modules27
-rw-r--r--scripts/xinitrc10
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
diff --git a/README b/README
new file mode 100644
index 0000000..83cc0b7
--- /dev/null
+++ b/README
@@ -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