summaryrefslogtreecommitdiff
path: root/meta-demoapps/recipes-gnome
diff options
context:
space:
mode:
authorSaul Wold <Saul.Wold@intel.com>2010-11-22 13:57:13 +0000
committerRichard Purdie <rpurdie@linux.intel.com>2010-11-22 13:57:13 +0000
commitcfe12efb5ec9586dab6961f141d52b103bd8b1d1 (patch)
tree7108e22aa7ddf6cfc2f1b6c6b73a811187706ecb /meta-demoapps/recipes-gnome
parent762fd6b7b3b22d7a8cb80ef9e9ba62e7ef21af3e (diff)
downloadopenembedded-core-cfe12efb5ec9586dab6961f141d52b103bd8b1d1.tar.gz
openembedded-core-cfe12efb5ec9586dab6961f141d52b103bd8b1d1.tar.bz2
openembedded-core-cfe12efb5ec9586dab6961f141d52b103bd8b1d1.zip
Meta: Recipe Reogranization
This is the next stage of recipe reorganization, in this stage many recipes where moved to a new meta-demoapps layer since this is more appropriate for demo usage then the core. Additional some recipes were moved to meta-extras to indicate they may be depercated at a future time. A number of recipes were modified since dependencies need to be corrected. Signed-off-by: Saul Wold <Saul.Wold@intel.com>
Diffstat (limited to 'meta-demoapps/recipes-gnome')
-rw-r--r--meta-demoapps/recipes-gnome/abiword/abiword-2.5.inc63
-rw-r--r--meta-demoapps/recipes-gnome/abiword/abiword-embedded_2.5.2.bb10
-rw-r--r--meta-demoapps/recipes-gnome/abiword/abiword.inc63
-rw-r--r--meta-demoapps/recipes-gnome/abiword/abiword_2.5.2.bb5
-rw-r--r--meta-demoapps/recipes-gnome/abiword/abiword_cvs.bb9
-rw-r--r--meta-demoapps/recipes-gnome/gcalctool/gcalctool/fix-includedir.patch31
-rw-r--r--meta-demoapps/recipes-gnome/gcalctool/gcalctool_5.7.32.bb13
-rw-r--r--meta-demoapps/recipes-gnome/gcalctool/gcalctool_5.8.17.bb12
-rw-r--r--meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon/configurefix.patch30
-rw-r--r--meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon/desktop-moblin.patch11
-rw-r--r--meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon/gnome-settings-daemon-2.24.0-catch-deviceadded.patch19
-rw-r--r--meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon/gnome-settings-daemon-fix-gthread.patch13
-rw-r--r--meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon/mojito-cleanup.patch74
-rw-r--r--meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon/mount-plugin.patch618
-rw-r--r--meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon_2.26.1.bb25
-rw-r--r--meta-demoapps/recipes-gnome/gnome/gnome-terminal/30f29e7d8e1b67c40cd18a7155ba30c4382692d5.patch20
-rw-r--r--meta-demoapps/recipes-gnome/gnome/gnome-terminal_2.26.3.bb16
-rw-r--r--meta-demoapps/recipes-gnome/gnome/libgnomecanvas_2.20.0.bb14
-rw-r--r--meta-demoapps/recipes-gnome/gnome/libgnomekbd_2.26.0.bb14
-rw-r--r--meta-demoapps/recipes-gnome/libgsf/libgsf_1.14.5.bb20
-rw-r--r--meta-demoapps/recipes-gnome/libgtkstylus/files/gtkstylus.sh5
-rw-r--r--meta-demoapps/recipes-gnome/libgtkstylus/libgtkstylus_0.5.bb24
-rw-r--r--meta-demoapps/recipes-gnome/wv/wv-1.2.0/pkgconfig.patch13
-rw-r--r--meta-demoapps/recipes-gnome/wv/wv_1.2.0.bb14
24 files changed, 1136 insertions, 0 deletions
diff --git a/meta-demoapps/recipes-gnome/abiword/abiword-2.5.inc b/meta-demoapps/recipes-gnome/abiword/abiword-2.5.inc
new file mode 100644
index 0000000000..dcd3b85534
--- /dev/null
+++ b/meta-demoapps/recipes-gnome/abiword/abiword-2.5.inc
@@ -0,0 +1,63 @@
+DESCRIPTION = "AbiWord is free word processing program similar to Microsoft(r) Word"
+HOMEPAGE = "http://www.abiword.org"
+SECTION = "x11/office"
+LICENSE = "GPLv2"
+DEPENDS = "perl-native wv libgsf libglade libfribidi jpeg libpng libxml2"
+RDEPENDS = "glibc-gconv-ibm850 glibc-gconv-cp1252 \
+ glibc-gconv-iso8859-15 glibc-gconv-iso8859-1"
+
+SRC_URI = "http://www.abiword.org/downloads/abiword/${PV}/source/abiword-${PV}.tar.gz"
+
+#want 2.x from 2.x.y for the installation directory
+SHRT_VER = "${@bb.data.getVar('PV',d,1).split('.')[0]}.${@bb.data.getVar('PV',d,1).split('.')[1]}"
+
+FILES_${PN} += " \
+ ${datadir}/icons/* \
+ ${datadir}/abiword-${SHRT_VER}/glade \
+ ${datadir}/abiword-${SHRT_VER}/scripts \
+ ${datadir}/abiword-${SHRT_VER}/system.profile-en \
+ ${datadir}/abiword-${SHRT_VER}/system.profile-en_GB \
+# ${datadir}/abiword-${SHRT_VER}/templates/A4.awt \
+# ${datadir}/abiword-${SHRT_VER}/templates/US-Letter.awt \
+ ${datadir}/abiword-${SHRT_VER}/templates/normal.awt \
+ ${datadir}/abiword-${SHRT_VER}/templates/normal.awt-en_GB \
+ ${datadir}/abiword-${SHRT_VER}/templates/Employee-Directory.awt \
+ ${datadir}/abiword-${SHRT_VER}/templates/Business-Report.awt \
+ ${datadir}/abiword-${SHRT_VER}/templates/Fax-Coversheet.awt \
+ ${datadir}/abiword-${SHRT_VER}/templates/Resume.awt \
+ ${datadir}/abiword-${SHRT_VER}/templates/Two-Columns.awt \
+ ${datadir}/abiword-${SHRT_VER}/templates/Memo.awt \
+ ${datadir}/abiword-${SHRT_VER}/templates/Press-Release.awt "
+
+inherit autotools pkgconfig
+
+PARALLEL_MAKE = ""
+
+EXTRA_OECONF = " --disable-pspell \
+ --disable-spellcheck \
+ --disable-printing \
+ --disable-exports \
+ --with-sys-wv"
+
+# AbiWord configure.ac does not play nicely with autoreconf
+# so use the autogen.sh script that comes with AbiWord
+#
+do_configure() {
+ cd ${S}
+ export NOCONFIGURE="no"; ./autogen.sh
+ oe_runconf
+}
+
+
+do_install_append() {
+ install -d ${D}${datadir}/pixmaps/
+ mv ${D}${datadir}/icons/* ${D}${datadir}/pixmaps/
+}
+
+PACKAGES += " abiword-clipart abiword-icons abiword-strings abiword-systemprofiles abiword-templates "
+
+FILES_abiword-clipart += "${datadir}/abiword-${SHRT_VER}/clipart"
+FILES_abiword-icons += "${datadir}/abiword-${SHRT_VER}/icons"
+FILES_abiword-strings += "${datadir}/abiword-${SHRT_VER}/AbiWord/strings"
+FILES_abiword-systemprofiles += "${datadir}/abiword-${SHRT_VER}/AbiWord/system.profile*"
+FILES_abiword-templates += "${datadir}/abiword-${SHRT_VER}/templates"
diff --git a/meta-demoapps/recipes-gnome/abiword/abiword-embedded_2.5.2.bb b/meta-demoapps/recipes-gnome/abiword/abiword-embedded_2.5.2.bb
new file mode 100644
index 0000000000..47cf9e03c0
--- /dev/null
+++ b/meta-demoapps/recipes-gnome/abiword/abiword-embedded_2.5.2.bb
@@ -0,0 +1,10 @@
+require abiword-2.5.inc
+
+EXTRA_OECONF += "--enable-embedded"
+
+S = "${WORKDIR}/abiword-${PV}"
+
+RCONFLICTS = "abiword"
+RPROVIDES += "abiword"
+
+
diff --git a/meta-demoapps/recipes-gnome/abiword/abiword.inc b/meta-demoapps/recipes-gnome/abiword/abiword.inc
new file mode 100644
index 0000000000..d2fabf931c
--- /dev/null
+++ b/meta-demoapps/recipes-gnome/abiword/abiword.inc
@@ -0,0 +1,63 @@
+DESCRIPTION = "AbiWord is free word processing program similar to Microsoft(r) Word"
+SECTION = "gnome/office"
+HOMEPAGE = "http://www.abiword.org""
+LICENSE = "GPLv2"
+
+DEPENDS = "libgsf libglade libfribidi libxml2 wv"
+RRECOMMENDS = "glibc-gconv-ibm850 glibc-gconv-cp1252 \
+ glibc-gconv-iso8859-15 glibc-gconv-iso8859-1"
+
+# Share this file between recipes that use cvs and that pull tarballs
+# (one day change this to differentiate automatically based on PV and set the
+# SRC_URI and S var directly)
+RELURI = "http://www.abiword.org/downloads/abiword/${PV}/source/abiword-${PV}.tar.gz"
+RELSRC = "${WORKDIR}/abiword-${PV}/abi"
+
+CVSURI = "cvs://anoncvs:anoncvs@anoncvs.abisource.com/cvsroot;module=abi"
+CVSSRC = "${WORKDIR}/abi"
+
+#want 2.x from 2.x.y for the installation directory
+SHRT_VER = "${@bb.data.getVar('PV',d,1).split('.')[0]}.${@bb.data.getVar('PV',d,1).split('.')[1]}"
+
+FILES_${PN} += " \
+ ${datadir}/icons/* \
+ ${datadir}/mime-info \
+ ${datadir}/abiword-${SHRT_VER}/glade \
+ ${datadir}/abiword-${SHRT_VER}/system.profile-en \
+ ${datadir}/abiword-${SHRT_VER}/system.profile-en-GB \
+# ${datadir}/abiword-${SHRT_VER}/templates/normal.awt \
+# ${datadir}/abiword-${SHRT_VER}/templates/normal.awt-en_GB \
+ "
+
+inherit autotools pkgconfig
+
+PARALLEL_MAKE = ""
+
+# This is a minimalistic AbiWord build
+#
+# if you are planning to build plugins, make sure to comment out the
+# --disable-exports options
+
+EXTRA_OECONF = " --enable-embedded=poky \
+ --disable-printing \
+ --with-sys-wv \
+ --disable-exports \
+ --disable-spellcheck"
+
+# TODO -- refactor this, so that instead of two strings and profiles
+# packages we have lots of locale packages, each with a set of strings and
+# a profile
+#
+PACKAGES += " abiword-strings abiword-systemprofiles"
+
+FILES_abiword-strings += "${datadir}/abiword-${SHRT_VER}/strings"
+FILES_abiword-systemprofiles += "${datadir}/abiword-${SHRT_VER}/system.profile*"
+
+# AbiWord configure.ac does not play nicely with autoreconf
+# so use the autogen.sh script that comes with AbiWord
+#
+do_configure() {
+ cd ${S}
+ export NOCONFIGURE="no"; ./autogen.sh
+ oe_runconf
+}
diff --git a/meta-demoapps/recipes-gnome/abiword/abiword_2.5.2.bb b/meta-demoapps/recipes-gnome/abiword/abiword_2.5.2.bb
new file mode 100644
index 0000000000..566d0fa203
--- /dev/null
+++ b/meta-demoapps/recipes-gnome/abiword/abiword_2.5.2.bb
@@ -0,0 +1,5 @@
+require abiword-2.5.inc
+
+PR = "r1"
+
+RCONFLICTS = "abiword-embedded"
diff --git a/meta-demoapps/recipes-gnome/abiword/abiword_cvs.bb b/meta-demoapps/recipes-gnome/abiword/abiword_cvs.bb
new file mode 100644
index 0000000000..e0e3bd7d60
--- /dev/null
+++ b/meta-demoapps/recipes-gnome/abiword/abiword_cvs.bb
@@ -0,0 +1,9 @@
+require abiword.inc
+
+PV="2.5.0+cvs${SRCDATE}"
+PR = "r3"
+
+SRC_URI = "${CVSURI}"
+
+S = "${CVSSRC}"
+
diff --git a/meta-demoapps/recipes-gnome/gcalctool/gcalctool/fix-includedir.patch b/meta-demoapps/recipes-gnome/gcalctool/gcalctool/fix-includedir.patch
new file mode 100644
index 0000000000..aeb02ab2c1
--- /dev/null
+++ b/meta-demoapps/recipes-gnome/gcalctool/gcalctool/fix-includedir.patch
@@ -0,0 +1,31 @@
+---
+ Makefile.am | 2 +-
+ gcalctool/Makefile.am | 2 --
+ 2 files changed, 1 insertion(+), 3 deletions(-)
+
+Index: gcalctool-5.8.17/gcalctool/Makefile.am
+===================================================================
+--- gcalctool-5.8.17.orig/gcalctool/Makefile.am 2005-12-19 15:46:57.000000000 +0000
++++ gcalctool-5.8.17/gcalctool/Makefile.am 2007-05-16 16:03:26.000000000 +0100
+@@ -1,8 +1,6 @@
+ ## Process this file with automake to produce Makefile.in
+
+ INCLUDES = \
+- -I$(includedir) \
+- -DG_DISABLE_DEPRECATED \
+ -DGDK_PIXBUF_DISABLE_DEPRECATED \
+ -DGDK_DISABLE_DEPRECATED \
+ -DGNOME_DISABLE_DEPRECATED \
+Index: gcalctool-5.8.17/Makefile.am
+===================================================================
+--- gcalctool-5.8.17.orig/Makefile.am 2007-05-16 15:35:44.000000000 +0100
++++ gcalctool-5.8.17/Makefile.am 2007-05-16 16:06:46.000000000 +0100
+@@ -29,7 +29,7 @@ DISTCLEANFILES = \
+ gnome-doc-utils.make \
+ gcalctool.desktop
+
+-SUBDIRS = po gcalctool help
++SUBDIRS = po gcalctool
+
+ SCHEMAS_FILE = gcalctool.schemas
+
diff --git a/meta-demoapps/recipes-gnome/gcalctool/gcalctool_5.7.32.bb b/meta-demoapps/recipes-gnome/gcalctool/gcalctool_5.7.32.bb
new file mode 100644
index 0000000000..f12e6c402a
--- /dev/null
+++ b/meta-demoapps/recipes-gnome/gcalctool/gcalctool_5.7.32.bb
@@ -0,0 +1,13 @@
+LICENSE = "GPL"
+SECTION = "x11"
+DEPENDS = "gtk+"
+DESCRIPTION = "gcalctool is a powerful calculator"
+PR = "r2"
+
+SRC_URI = "http://download.gnome.org/sources/${PN}/5.7/${PN}-${PV}.tar.gz \
+ file://makefile-fix.diff;patch=1\
+ file://fix-includedir.patch;patch=1"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-gnome"
diff --git a/meta-demoapps/recipes-gnome/gcalctool/gcalctool_5.8.17.bb b/meta-demoapps/recipes-gnome/gcalctool/gcalctool_5.8.17.bb
new file mode 100644
index 0000000000..c72860c8f5
--- /dev/null
+++ b/meta-demoapps/recipes-gnome/gcalctool/gcalctool_5.8.17.bb
@@ -0,0 +1,12 @@
+LICENSE = "GPL"
+SECTION = "x11"
+DEPENDS = "gtk+ gnome-doc-utils"
+DESCRIPTION = "gcalctool is a powerful calculator"
+PR = "r0"
+
+SRC_URI = "http://download.gnome.org/sources/${PN}/5.8/${PN}-${PV}.tar.gz \
+ file://fix-includedir.patch;patch=1"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-gnome"
diff --git a/meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon/configurefix.patch b/meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon/configurefix.patch
new file mode 100644
index 0000000000..01b4f64191
--- /dev/null
+++ b/meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon/configurefix.patch
@@ -0,0 +1,30 @@
+Index: gnome-settings-daemon-2.26.1/configure.ac
+===================================================================
+--- gnome-settings-daemon-2.26.1.orig/configure.ac 2009-09-16 22:57:31.000000000 +0100
++++ gnome-settings-daemon-2.26.1/configure.ac 2009-09-16 22:58:45.000000000 +0100
+@@ -133,9 +133,6 @@
+ #
+ AC_DEFUN([AC_CHECK_X_HEADERS], [
+ ac_save_CPPFLAGS="$CPPFLAGS"
+- if test \! -z "$includedir" ; then
+- CPPFLAGS="$CPPFLAGS -I$includedir"
+- fi
+ CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+ AC_CHECK_HEADERS([$1],[$2],[$3],[$4])
+ CPPFLAGS="$ac_save_CPPFLAGS"])
+@@ -148,15 +145,9 @@
+ ac_save_LDFLAGS="$LDFLAGS"
+ # ac_save_LIBS="$LIBS"
+
+- if test \! -z "$includedir" ; then
+- CPPFLAGS="$CPPFLAGS -I$includedir"
+- fi
+ # note: $X_CFLAGS includes $x_includes
+ CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+
+- if test \! -z "$libdir" ; then
+- LDFLAGS="$LDFLAGS -L$libdir"
+- fi
+ # note: $X_LIBS includes $x_libraries
+ LDFLAGS="$LDFLAGS $ALL_X_LIBS"
+
diff --git a/meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon/desktop-moblin.patch b/meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon/desktop-moblin.patch
new file mode 100644
index 0000000000..d3fd76c621
--- /dev/null
+++ b/meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon/desktop-moblin.patch
@@ -0,0 +1,11 @@
+--- gnome-settings-daemon-2.26.1/data/gnome-settings-daemon.desktop.in.in~ 2009-04-24 20:59:51.000000000 -0700
++++ gnome-settings-daemon-2.26.1/data/gnome-settings-daemon.desktop.in.in 2009-04-24 20:59:51.000000000 -0700
+@@ -2,7 +2,7 @@
+ Type=Application
+ _Name=GNOME Settings Daemon
+ Exec=@LIBEXECDIR@/gnome-settings-daemon
+-OnlyShowIn=GNOME;
++OnlyShowIn=GNOME;MOBLIN;
+ X-GNOME-Autostart-Phase=Initialization
+ X-GNOME-Autostart-Notify=true
+ X-GNOME-AutoRestart=true
diff --git a/meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon/gnome-settings-daemon-2.24.0-catch-deviceadded.patch b/meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon/gnome-settings-daemon-2.24.0-catch-deviceadded.patch
new file mode 100644
index 0000000000..8e1d0ce9ce
--- /dev/null
+++ b/meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon/gnome-settings-daemon-2.24.0-catch-deviceadded.patch
@@ -0,0 +1,19 @@
+============================================================
+ Listen for DeviceAdded in addition to DeviceEnabled
+
+ This should help address problems like left-handed
+mouse, and acceleration settings getting lost after
+resume, or when new devices gets plugged in.
+
+diff --git a/plugins/mouse/gsd-mouse-manager.c b/plugins/mouse/gsd-mouse-manager.c
+--- a/plugins/mouse/gsd-mouse-manager.c
++++ b/plugins/mouse/gsd-mouse-manager.c
+@@ -320,7 +320,7 @@ devicepresence_filter (GdkXEvent *xevent,
+ if (xev->type == xi_presence)
+ {
+ XDevicePresenceNotifyEvent *dpn = (XDevicePresenceNotifyEvent *) xev;
+- if (dpn->devchange == DeviceEnabled)
++ if (dpn->devchange == DeviceEnabled || dpn->devchange == DeviceAdded)
+ set_mouse_settings ((GsdMouseManager *) data);
+ }
+ return GDK_FILTER_CONTINUE;
diff --git a/meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon/gnome-settings-daemon-fix-gthread.patch b/meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon/gnome-settings-daemon-fix-gthread.patch
new file mode 100644
index 0000000000..d77063eba7
--- /dev/null
+++ b/meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon/gnome-settings-daemon-fix-gthread.patch
@@ -0,0 +1,13 @@
+Index: gnome-settings-daemon-2.25.90/configure.ac
+===================================================================
+--- gnome-settings-daemon-2.25.90.orig/configure.ac
++++ gnome-settings-daemon-2.25.90/configure.ac
+@@ -85,6 +85,8 @@ AC_PATH_PROG(GCONFTOOL, gconftool-2)
+
+ AM_GCONF_SOURCE_2
+
++AC_CHECK_LIB(gthread-2.0, g_thread_init)
++
+ dnl ---------------------------------------------------------------------------
+ dnl - Check for libnotify
+ dnl ---------------------------------------------------------------------------
diff --git a/meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon/mojito-cleanup.patch b/meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon/mojito-cleanup.patch
new file mode 100644
index 0000000000..1aff2d6d6f
--- /dev/null
+++ b/meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon/mojito-cleanup.patch
@@ -0,0 +1,74 @@
+diff --git a/plugins/housekeeping/gsd-housekeeping-manager.c b/plugins/housekeeping/gsd-housekeeping-manager.c
+index f84cfad..e8f474a 100644
+--- a/plugins/housekeeping/gsd-housekeeping-manager.c
++++ b/plugins/housekeeping/gsd-housekeeping-manager.c
+@@ -85,9 +85,13 @@ thumb_data_free (gpointer data)
+ }
+ }
+
++typedef enum {
++ HASH,
++ HASH_PNG
++} FileType;
+
+ static GList *
+-read_dir_for_purge (const char *path, GList *files)
++read_dir_for_purge (const char *path, GList *files, FileType type)
+ {
+ GFile *read_path;
+ GFileEnumerator *enum_dir;
+@@ -105,9 +109,20 @@ read_dir_for_purge (const char *path, GList *files)
+ GFileInfo *info;
+ while ((info = g_file_enumerator_next_file (enum_dir, NULL, NULL)) != NULL) {
+ const char *name;
++ gboolean prune = FALSE;
++
+ name = g_file_info_get_name (info);
+
+- if (strlen (name) == 36 && strcmp (name + 32, ".png") == 0) {
++ switch (type) {
++ case HASH:
++ prune = (strlen (name) == 36);
++ break;
++ case HASH_PNG:
++ prune = (strlen (name) == 36 && strcmp (name + 32, ".png") == 0);
++ break;
++ }
++
++ if (prune) {
+ ThumbData *td;
+ GFile *entry;
+ char *entry_path;
+@@ -197,14 +212,14 @@ purge_thumbnail_cache (void)
+ ".thumbnails",
+ "normal",
+ NULL);
+- files = read_dir_for_purge (path, NULL);
++ files = read_dir_for_purge (path, NULL, HASH_PNG);
+ g_free (path);
+
+ path = g_build_filename (g_get_home_dir (),
+ ".thumbnails",
+ "large",
+ NULL);
+- files = read_dir_for_purge (path, files);
++ files = read_dir_for_purge (path, files, HASH_PNG);
+ g_free (path);
+
+ path = g_build_filename (g_get_home_dir (),
+@@ -212,7 +227,14 @@ purge_thumbnail_cache (void)
+ "fail",
+ "gnome-thumbnail-factory",
+ NULL);
+- files = read_dir_for_purge (path, files);
++ files = read_dir_for_purge (path, files, HASH_PNG);
++ g_free (path);
++
++ path = g_build_filename (g_get_user_cache_dir (),
++ "mojito",
++ "thumbnails",
++ NULL);
++ files = read_dir_for_purge (path, files, HASH);
+ g_free (path);
+
+ g_get_current_time (&current_time);
diff --git a/meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon/mount-plugin.patch b/meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon/mount-plugin.patch
new file mode 100644
index 0000000000..67f056b505
--- /dev/null
+++ b/meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon/mount-plugin.patch
@@ -0,0 +1,618 @@
+diff --git a/configure.ac b/configure.ac
+index 135f2ce..ba737a5 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -356,6 +356,7 @@ plugins/keybindings/Makefile
+ plugins/keyboard/Makefile
+ plugins/media-keys/Makefile
+ plugins/media-keys/cut-n-paste/Makefile
++plugins/mount/Makefile
+ plugins/mouse/Makefile
+ plugins/screensaver/Makefile
+ plugins/sound/Makefile
+diff --git a/data/gnome-settings-daemon.schemas.in b/data/gnome-settings-daemon.schemas.in
+index 4920ae3..502e9e6 100644
+--- a/data/gnome-settings-daemon.schemas.in
++++ b/data/gnome-settings-daemon.schemas.in
+@@ -557,5 +557,29 @@
+ </locale>
+ </schema>
+
++ <schema>
++ <key>/schemas/apps/gnome_settings_daemon/plugins/mount/active</key>
++ <applyto>/apps/gnome_settings_daemon/plugins/mount/active</applyto>
++ <owner>gnome-settings-daemon</owner>
++ <type>bool</type>
++ <default>TRUE</default>
++ <locale name="C">
++ <short>Enable mount plugin</short>
++ <long>Set to True to enable the plugin to automount media.</long>
++ </locale>
++ </schema>
++ <schema>
++ <key>/schemas/apps/gnome_settings_daemon/plugins/mount/priority</key>
++ <applyto>/apps/gnome_settings_daemon/plugins/mount/priority</applyto>
++ <owner>gnome-settings-daemon</owner>
++ <type>int</type>
++ <default>99</default>
++ <locale name="C">
++ <short></short>
++ <long></long>
++ </locale>
++ </schema>
++
++
+ </schemalist>
+ </gconfschemafile>
+diff --git a/plugins/Makefile.am b/plugins/Makefile.am
+index 2d33061..46615c1 100644
+--- a/plugins/Makefile.am
++++ b/plugins/Makefile.am
+@@ -11,6 +11,7 @@ SUBDIRS = \
+ keybindings \
+ keyboard \
+ media-keys \
++ mount \
+ mouse \
+ screensaver \
+ sound \
+diff --git a/plugins/mount/Makefile.am b/plugins/mount/Makefile.am
+new file mode 100644
+index 0000000..188c83d
+--- /dev/null
++++ b/plugins/mount/Makefile.am
+@@ -0,0 +1,39 @@
++plugin_LTLIBRARIES = \
++ libmount.la
++
++libmount_la_SOURCES = \
++ gsd-mount-manager.c \
++ gsd-mount-manager.h \
++ gsd-mount-plugin.c \
++ gsd-mount-plugin.h
++
++libmount_la_CPPFLAGS = \
++ -I$(top_srcdir)/gnome-settings-daemon \
++ -DGNOME_SETTINGS_LOCALEDIR=\""$(datadir)/locale"\" \
++ $(AM_CPPFLAGS)
++
++libmount_la_CFLAGS = \
++ $(SETTINGS_PLUGIN_CFLAGS) \
++ $(AM_CFLAGS)
++
++libmount_la_LDFLAGS = \
++ $(GSD_PLUGIN_LDFLAGS)
++
++libmount_la_LIBADD = \
++ $(SETTINGS_PLUGIN_LIBS)
++
++plugin_in_files = \
++ mount.gnome-settings-plugin.in
++
++plugin_DATA = $(plugin_in_files:.gnome-settings-plugin.in=.gnome-settings-plugin)
++
++EXTRA_DIST = \
++ $(plugin_in_files)
++
++CLEANFILES = \
++ $(plugin_DATA)
++
++DISTCLEANFILES = \
++ $(plugin_DATA)
++
++@GSD_INTLTOOL_PLUGIN_RULE@
+diff --git a/plugins/mount/gsd-mount-manager.c b/plugins/mount/gsd-mount-manager.c
+new file mode 100644
+index 0000000..a768f03
+--- /dev/null
++++ b/plugins/mount/gsd-mount-manager.c
+@@ -0,0 +1,261 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
++ *
++ * Copyright (C) 2009 Intel Corporation
++ *
++ * This program is free software; you can redistribute it and/or modify it under
++ * the terms of the GNU General Public License as published by the Free Software
++ * Foundation; either version 2 of the License, or (at your option) any later
++ * version.
++ *
++ * This program is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
++ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
++ * details.
++ *
++ * You should have received a copy of the GNU General Public License along with
++ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
++ * Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ */
++
++#include <config.h>
++
++#include <glib.h>
++#include <glib/gi18n.h>
++#include <gio/gio.h>
++#include <gtk/gtk.h>
++
++#include "gsd-mount-manager.h"
++
++#define GSD_MOUNT_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSD_TYPE_MOUNT_MANAGER, GsdMountManagerPrivate))
++
++struct GsdMountManagerPrivate
++{
++ GVolumeMonitor *monitor;
++};
++
++G_DEFINE_TYPE (GsdMountManager, gsd_mount_manager, G_TYPE_OBJECT)
++
++static gpointer manager_object = NULL;
++
++#if 0
++static void
++drive_connected_cb (GVolumeMonitor *monitor,
++ GDrive *drive,
++ GsdMountManager *manager)
++{
++ /* TODO: listen for the eject button */
++}
++#endif
++
++static void
++volume_mounted_cb (GObject *source_object, GAsyncResult *result, gpointer user_data)
++{
++ GError *error = NULL;
++ char *name;
++
++ name = g_volume_get_name (G_VOLUME (source_object));
++
++ if (!g_volume_mount_finish (G_VOLUME (source_object), result, &error)) {
++ g_debug ("Failed to mount '%s': %s", name, error->message);
++
++ if (error->code != G_IO_ERROR_FAILED_HANDLED) {
++ char *primary;
++ GtkWidget *dialog;
++
++ primary = g_strdup_printf (_("Unable to mount %s"), name);
++
++ dialog = gtk_message_dialog_new (NULL, 0,
++ GTK_MESSAGE_ERROR,
++ GTK_BUTTONS_CLOSE,
++ primary);
++
++ g_free (primary);
++ gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), error->message);
++
++ gtk_dialog_run (GTK_DIALOG (dialog));
++ gtk_widget_destroy (dialog);
++ }
++ g_error_free (error);
++ } else {
++ g_debug ("Mounted '%s'", name);
++ }
++
++ g_free (name);
++}
++
++static void
++volume_added_cb (GVolumeMonitor *monitor,
++ GVolume *volume,
++ GsdMountManager *manager)
++{
++ char *name;
++
++ name = g_volume_get_name (volume);
++ g_debug ("Volme '%s' added", name);
++
++ if (g_volume_can_mount (volume)) {
++ GMountOperation *mount_op;
++
++ g_debug ("Mounting '%s'", name);
++
++ mount_op = gtk_mount_operation_new (NULL);
++ g_volume_mount (volume, G_MOUNT_MOUNT_NONE,
++ mount_op, NULL,
++ volume_mounted_cb, manager);
++ }
++
++ g_free (name);
++}
++
++static void
++mount_added_cb (GVolumeMonitor *monitor,
++ GMount *mount,
++ GsdMountManager *manager)
++{
++ GFile *file;
++ char *uri;
++
++ file = g_mount_get_root (mount);
++ uri = g_file_get_uri (file);
++
++ g_debug ("%s mounted, starting file manager", uri);
++
++ /* TODO: error */
++ gtk_show_uri (NULL, uri, GDK_CURRENT_TIME, NULL);
++
++ g_free (uri);
++ g_object_unref (file);
++}
++
++static void
++mount_existing_volumes (GsdMountManager *manager)
++{
++ /* TODO: iterate over drives to hook up eject */
++ GList *l;
++
++ g_debug ("Mounting existing volumes");
++
++ l = g_volume_monitor_get_volumes (manager->priv->monitor);
++ while (l) {
++ GVolume *volume = l->data;
++ GMount *mount;
++
++ mount = g_volume_get_mount (volume);
++ if (mount == NULL &&
++ g_volume_can_mount (volume) &&
++ g_volume_should_automount (volume)) {
++ GMountOperation *mount_op;
++ char *name;
++
++ name = g_volume_get_name (volume);
++ g_debug ("Mounting '%s'", name);
++ g_free (name);
++
++ mount_op = gtk_mount_operation_new (NULL);
++ g_volume_mount (volume, G_MOUNT_MOUNT_NONE,
++ mount_op, NULL,
++ volume_mounted_cb, manager);
++ }
++
++ if (mount)
++ g_object_unref (mount);
++ g_object_unref (volume);
++ l = g_list_delete_link (l, l);
++ }
++}
++
++gboolean
++gsd_mount_manager_start (GsdMountManager *manager,
++ GError **error)
++{
++ g_debug ("Starting mount manager");
++
++ manager->priv->monitor = g_volume_monitor_get ();
++
++#if 0
++ g_signal_connect_object (manager->priv->monitor, "drive-connected",
++ G_CALLBACK (drive_connected_cb), manager, 0);
++#endif
++ g_signal_connect_object (manager->priv->monitor, "volume-added",
++ G_CALLBACK (volume_added_cb), manager, 0);
++ g_signal_connect_object (manager->priv->monitor, "mount-added",
++ G_CALLBACK (mount_added_cb), manager, 0);
++
++ /* TODO: handle eject buttons */
++
++#if 0
++ mount_existing_volumes (manager);
++#endif
++
++ return TRUE;
++}
++
++void
++gsd_mount_manager_stop (GsdMountManager *manager)
++{
++ g_debug ("Stopping mount manager");
++}
++
++static void
++gsd_mount_manager_dispose (GObject *object)
++{
++ GsdMountManager *manager = GSD_MOUNT_MANAGER (object);
++
++ if (manager->priv->monitor) {
++ g_signal_handlers_disconnect_by_func
++ (manager->priv->monitor, volume_added_cb, manager);
++ g_signal_handlers_disconnect_by_func
++ (manager->priv->monitor, mount_added_cb, manager);
++ g_object_unref (manager->priv->monitor);
++ manager->priv->monitor = NULL;
++ }
++
++ G_OBJECT_CLASS (gsd_mount_manager_parent_class)->dispose (object);
++}
++
++static void
++gsd_mount_manager_init (GsdMountManager *manager)
++{
++ manager->priv = GSD_MOUNT_MANAGER_GET_PRIVATE (manager);
++}
++
++static void
++gsd_mount_manager_finalize (GObject *object)
++{
++ GsdMountManager *mount_manager;
++
++ g_return_if_fail (object != NULL);
++ g_return_if_fail (GSD_IS_MOUNT_MANAGER (object));
++
++ mount_manager = GSD_MOUNT_MANAGER (object);
++
++ g_return_if_fail (mount_manager->priv != NULL);
++
++ G_OBJECT_CLASS (gsd_mount_manager_parent_class)->finalize (object);
++}
++
++static void
++gsd_mount_manager_class_init (GsdMountManagerClass *klass)
++{
++ GObjectClass *object_class = G_OBJECT_CLASS (klass);
++
++ object_class->dispose = gsd_mount_manager_dispose;
++ object_class->finalize = gsd_mount_manager_finalize;
++
++ g_type_class_add_private (klass, sizeof (GsdMountManagerPrivate));
++}
++
++GsdMountManager *
++gsd_mount_manager_new (void)
++{
++ if (manager_object != NULL) {
++ g_object_ref (manager_object);
++ } else {
++ manager_object = g_object_new (GSD_TYPE_MOUNT_MANAGER, NULL);
++ g_object_add_weak_pointer (manager_object,
++ (gpointer *) &manager_object);
++ }
++
++ return GSD_MOUNT_MANAGER (manager_object);
++}
+diff --git a/plugins/mount/gsd-mount-manager.h b/plugins/mount/gsd-mount-manager.h
+new file mode 100644
+index 0000000..9093fff
+--- /dev/null
++++ b/plugins/mount/gsd-mount-manager.h
+@@ -0,0 +1,58 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
++ *
++ * Copyright (C) 2009 Intel Corporation
++ *
++ * This program is free software; you can redistribute it and/or modify it under
++ * the terms of the GNU General Public License as published by the Free Software
++ * Foundation; either version 2 of the License, or (at your option) any later
++ * version.
++ *
++ * This program is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
++ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
++ * details.
++ *
++ * You should have received a copy of the GNU General Public License along with
++ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
++ * Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ */
++
++#ifndef __GSD_MOUNT_MANAGER_H
++#define __GSD_MOUNT_MANAGER_H
++
++#include <glib-object.h>
++
++G_BEGIN_DECLS
++
++#define GSD_TYPE_MOUNT_MANAGER (gsd_mount_manager_get_type ())
++#define GSD_MOUNT_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSD_TYPE_MOUNT_MANAGER, GsdMountManager))
++#define GSD_MOUNT_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GSD_TYPE_MOUNT_MANAGER, GsdMountManagerClass))
++#define GSD_IS_MOUNT_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSD_TYPE_MOUNT_MANAGER))
++#define GSD_IS_MOUNT_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSD_TYPE_MOUNT_MANAGER))
++#define GSD_MOUNT_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSD_TYPE_MOUNT_MANAGER, GsdMountManagerClass))
++
++typedef struct GsdMountManagerPrivate GsdMountManagerPrivate;
++
++typedef struct
++{
++ GObject parent;
++ GsdMountManagerPrivate *priv;
++} GsdMountManager;
++
++typedef struct
++{
++ GObjectClass parent_class;
++} GsdMountManagerClass;
++
++GType gsd_mount_manager_get_type (void);
++
++GsdMountManager * gsd_mount_manager_new (void);
++
++gboolean gsd_mount_manager_start (GsdMountManager *manager,
++ GError **error);
++void gsd_mount_manager_stop (GsdMountManager *manager);
++
++G_END_DECLS
++
++#endif /* __GSD_MOUNT_MANAGER_H */
+diff --git a/plugins/mount/gsd-mount-plugin.c b/plugins/mount/gsd-mount-plugin.c
+new file mode 100644
+index 0000000..af295a5
+--- /dev/null
++++ b/plugins/mount/gsd-mount-plugin.c
+@@ -0,0 +1,103 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
++ *
++ * Copyright (C) 2009 Intel Corporation
++ *
++ * This program is free software; you can redistribute it and/or modify it under
++ * the terms of the GNU General Public License as published by the Free Software
++ * Foundation; either version 2, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
++ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
++ * details.
++ *
++ * You should have received a copy of the GNU General Public License along with
++ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
++ * Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ */
++
++#include <config.h>
++
++#include <glib/gi18n.h>
++#include <gmodule.h>
++#include <gnome-settings-daemon/gnome-settings-plugin.h>
++
++#include "gsd-mount-plugin.h"
++#include "gsd-mount-manager.h"
++
++struct GsdMountPluginPrivate {
++ GsdMountManager *manager;
++};
++
++#define GSD_MOUNT_PLUGIN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), GSD_TYPE_MOUNT_PLUGIN, GsdMountPluginPrivate))
++
++GNOME_SETTINGS_PLUGIN_REGISTER (GsdMountPlugin, gsd_mount_plugin)
++
++static void
++gsd_mount_plugin_init (GsdMountPlugin *plugin)
++{
++ plugin->priv = GSD_MOUNT_PLUGIN_GET_PRIVATE (plugin);
++
++ g_debug ("GsdMountPlugin initializing");
++
++ plugin->priv->manager = gsd_mount_manager_new ();
++}
++
++static void
++gsd_mount_plugin_finalize (GObject *object)
++{
++ GsdMountPlugin *plugin;
++
++ g_return_if_fail (object != NULL);
++ g_return_if_fail (GSD_IS_MOUNT_PLUGIN (object));
++
++ g_debug ("GsdMountPlugin finalizing");
++
++ plugin = GSD_MOUNT_PLUGIN (object);
++
++ g_return_if_fail (plugin->priv != NULL);
++
++ if (plugin->priv->manager != NULL) {
++ g_object_unref (plugin->priv->manager);
++ }
++
++ G_OBJECT_CLASS (gsd_mount_plugin_parent_class)->finalize (object);
++}
++
++static void
++impl_activate (GnomeSettingsPlugin *plugin)
++{
++ gboolean res;
++ GError *error;
++
++ g_debug ("Activating mount plugin");
++
++ error = NULL;
++ res = gsd_mount_manager_start (GSD_MOUNT_PLUGIN (plugin)->priv->manager, &error);
++ if (! res) {
++ g_warning ("Unable to start mount manager: %s", error->message);
++ g_error_free (error);
++ }
++}
++
++static void
++impl_deactivate (GnomeSettingsPlugin *plugin)
++{
++ g_debug ("Deactivating mount plugin");
++ gsd_mount_manager_stop (GSD_MOUNT_PLUGIN (plugin)->priv->manager);
++}
++
++static void
++gsd_mount_plugin_class_init (GsdMountPluginClass *klass)
++{
++ GObjectClass *object_class = G_OBJECT_CLASS (klass);
++ GnomeSettingsPluginClass *plugin_class = GNOME_SETTINGS_PLUGIN_CLASS (klass);
++
++ object_class->finalize = gsd_mount_plugin_finalize;
++
++ plugin_class->activate = impl_activate;
++ plugin_class->deactivate = impl_deactivate;
++
++ g_type_class_add_private (klass, sizeof (GsdMountPluginPrivate));
++}
+diff --git a/plugins/mount/gsd-mount-plugin.h b/plugins/mount/gsd-mount-plugin.h
+new file mode 100644
+index 0000000..526a41f
+--- /dev/null
++++ b/plugins/mount/gsd-mount-plugin.h
+@@ -0,0 +1,55 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
++ *
++ * Copyright (C) 2009 Intel Corporation
++ *
++ * This program is free software; you can redistribute it and/or modify it under
++ * the terms of the GNU General Public License as published by the Free Software
++ * Foundation; either version 2, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
++ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
++ * details.
++ *
++ * You should have received a copy of the GNU General Public License along with
++ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
++ * Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ */
++
++#ifndef __GSD_MOUNT_PLUGIN_H__
++#define __GSD_MOUNT_PLUGIN_H__
++
++#include <glib-object.h>
++#include <gmodule.h>
++#include <gnome-settings-daemon/gnome-settings-plugin.h>
++
++G_BEGIN_DECLS
++
++#define GSD_TYPE_MOUNT_PLUGIN (gsd_mount_plugin_get_type ())
++#define GSD_MOUNT_PLUGIN(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSD_TYPE_MOUNT_PLUGIN, GsdMountPlugin))
++#define GSD_MOUNT_PLUGIN_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GSD_TYPE_MOUNT_PLUGIN, GsdMountPluginClass))
++#define GSD_IS_MOUNT_PLUGIN(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSD_TYPE_MOUNT_PLUGIN))
++#define GSD_IS_MOUNT_PLUGIN_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSD_TYPE_MOUNT_PLUGIN))
++#define GSD_MOUNT_PLUGIN_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSD_TYPE_MOUNT_PLUGIN, GsdMountPluginClass))
++
++typedef struct GsdMountPluginPrivate GsdMountPluginPrivate;
++
++typedef struct
++{
++ GnomeSettingsPlugin parent;
++ GsdMountPluginPrivate *priv;
++} GsdMountPlugin;
++
++typedef struct
++{
++ GnomeSettingsPluginClass parent_class;
++} GsdMountPluginClass;
++
++GType gsd_mount_plugin_get_type (void) G_GNUC_CONST;
++
++G_MODULE_EXPORT GType register_gnome_settings_plugin (GTypeModule *module);
++
++G_END_DECLS
++
++#endif /* __GSD_MOUNT_PLUGIN_H__ */
+diff --git a/plugins/mount/mount.gnome-settings-plugin.in b/plugins/mount/mount.gnome-settings-plugin.in
+new file mode 100644
+index 0000000..ca29ad1
+--- /dev/null
++++ b/plugins/mount/mount.gnome-settings-plugin.in
+@@ -0,0 +1,8 @@
++[GNOME Settings Plugin]
++Module=mount
++IAge=0
++_Name=Mount
++_Description=Mount removable media
++Authors=Ross Burton
++Copyright=Copyright © 2009 Intel Corporation
++Website=
diff --git a/meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon_2.26.1.bb b/meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon_2.26.1.bb
new file mode 100644
index 0000000000..cb216b2753
--- /dev/null
+++ b/meta-demoapps/recipes-gnome/gnome/gnome-settings-daemon_2.26.1.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "GNOME settings daemon"
+LICENSE = "GPL"
+DEPENDS = "libxklavier gnome-doc-utils gtk+ libglade libgnomekbd gnome-desktop librsvg libxml2 libart-lgpl"
+
+PR = "r3"
+
+inherit gnome
+
+SRC_URI += "file://desktop-moblin.patch;patch=1 \
+ file://gnome-settings-daemon-fix-gthread.patch;patch=1 \
+ file://mount-plugin.patch;patch=1 \
+ file://gnome-settings-daemon-2.24.0-catch-deviceadded.patch;patch=1 \
+ file://configurefix.patch;patch=1 \
+ file://mojito-cleanup.patch;patch=1"
+
+EXTRA_OECONF = "--disable-esd --x-includes=${STAGING_INCDIR} --x-libraries=${STAGING_LIBDIR}"
+ASNEEDED = ""
+
+FILES_${PN} += "${libdir}/gnome-settings-daemon-2.0/*.so ${libdir}/gnome-settings-daemon-2.0/*plugin \
+ ${datadir}/dbus-1/ \
+ ${datadir}/icon* \
+ ${datadir}/xsession*"
+
+FILES_${PN}-dbg += "${libdir}/gnome-settings-daemon-2.0/.debug"
+FILES_${PN}-dev += "${libdir}/gnome-settings-daemon-2.0/*.a ${libdir}/gnome-settings-daemon-2.0/*.la"
diff --git a/meta-demoapps/recipes-gnome/gnome/gnome-terminal/30f29e7d8e1b67c40cd18a7155ba30c4382692d5.patch b/meta-demoapps/recipes-gnome/gnome/gnome-terminal/30f29e7d8e1b67c40cd18a7155ba30c4382692d5.patch
new file mode 100644
index 0000000000..0358ed8a64
--- /dev/null
+++ b/meta-demoapps/recipes-gnome/gnome/gnome-terminal/30f29e7d8e1b67c40cd18a7155ba30c4382692d5.patch
@@ -0,0 +1,20 @@
+From 30f29e7d8e1b67c40cd18a7155ba30c4382692d5 Mon Sep 17 00:00:00 2001
+From: Seán de Búrca <leftmostcat@gmail.com>
+Date: Fri, 07 Aug 2009 00:38:52 +0000
+Subject: Remove useless Plural-Forms line which breaks build with gnome-doc-utils master
+
+---
+diff --git a/help/el/el.po b/help/el/el.po
+index ab77264..635b68f 100644
+--- a/help/el/el.po
++++ b/help/el/el.po
+@@ -10,7 +10,6 @@ msgstr ""
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+-"Plural-Forms: 2\n"
+ "X-Poedit-Language: Greek\n"
+ "X-Poedit-Country: GREECE\n"
+ "X-Generator: Lokalize 0.2\n"
+--
+cgit v0.8.3.1
diff --git a/meta-demoapps/recipes-gnome/gnome/gnome-terminal_2.26.3.bb b/meta-demoapps/recipes-gnome/gnome/gnome-terminal_2.26.3.bb
new file mode 100644
index 0000000000..73f0b99eac
--- /dev/null
+++ b/meta-demoapps/recipes-gnome/gnome/gnome-terminal_2.26.3.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "GNOME Terminal"
+LICENSE = "GPL"
+DEPENDS = "gtk+ glib-2.0 startup-notification dbus-glib vte"
+PR = "r2"
+
+inherit gnome
+
+SRC_URI += "file://30f29e7d8e1b67c40cd18a7155ba30c4382692d5.patch;patch=1"
+
+EXTRA_OECONF += "--disable-scrollkeeper"
+
+# Remove an autogenerated file that needs to be rebuilt
+do_configure_prepend () {
+ rm -f ${S}/src/terminal-type-builtins.c
+}
+
diff --git a/meta-demoapps/recipes-gnome/gnome/libgnomecanvas_2.20.0.bb b/meta-demoapps/recipes-gnome/gnome/libgnomecanvas_2.20.0.bb
new file mode 100644
index 0000000000..266d44b050
--- /dev/null
+++ b/meta-demoapps/recipes-gnome/gnome/libgnomecanvas_2.20.0.bb
@@ -0,0 +1,14 @@
+LICENSE = "GPL"
+SECTION = "x11/gnome/libs"
+DESCRIPTION = "A powerful object-oriented display"
+PR = "r2"
+
+inherit gnome
+
+DEPENDS = "libglade libart-lgpl virtual/gail"
+
+EXTRA_OECONF = "--disable-gtk-doc"
+
+FILES_${PN} += "${libdir}/libglade/*/libcanvas.so"
+FILES_${PN}-dbg += "${libdir}/libglade/*/.debug/"
+FILES_${PN}-dev += "${libdir}/libglade/*/libcanvas.*a"
diff --git a/meta-demoapps/recipes-gnome/gnome/libgnomekbd_2.26.0.bb b/meta-demoapps/recipes-gnome/gnome/libgnomekbd_2.26.0.bb
new file mode 100644
index 0000000000..f2e4ec533e
--- /dev/null
+++ b/meta-demoapps/recipes-gnome/gnome/libgnomekbd_2.26.0.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "GNOME keyboard library"
+LICENSE = "LGPL"
+
+DEPENDS = "gconf-dbus dbus libxklavier gtk+"
+
+inherit gnome
+
+do_configure_append() {
+ find ${S} -name Makefile | xargs sed -i s:'-I$(includedir)':'-I.':g
+ find ${S} -name Makefile | xargs sed -i s:'-I/usr/include':'-I${STAGING_INCDIR}':g
+}
+
+
+
diff --git a/meta-demoapps/recipes-gnome/libgsf/libgsf_1.14.5.bb b/meta-demoapps/recipes-gnome/libgsf/libgsf_1.14.5.bb
new file mode 100644
index 0000000000..10b6390722
--- /dev/null
+++ b/meta-demoapps/recipes-gnome/libgsf/libgsf_1.14.5.bb
@@ -0,0 +1,20 @@
+LICENSE = "GPL"
+SECTION = "libs"
+PR = "r0"
+
+DEPENDS= "libxml2 bzip2 glib-2.0 zlib"
+RDEPENDS = "gconf gnome-vfs"
+
+
+PACKAGES =+ "${PN}-gnome ${PN}-gnome-dev "
+
+FILES_${PN}-gnome = "${libdir}/libgsf-gnome-1.so.*"
+FILES_${PN}-gnome-dev = "${libdir}/libgsf-gnome-1.* ${includedir}/libgsf-1/gsf-gnome"
+
+inherit autotools pkgconfig gnome gconf
+
+EXTRA_OECONF = "\
+ --without-python \
+ --without-gnome \
+ --disable-gtk-doc \
+ --with-bz2"
diff --git a/meta-demoapps/recipes-gnome/libgtkstylus/files/gtkstylus.sh b/meta-demoapps/recipes-gnome/libgtkstylus/files/gtkstylus.sh
new file mode 100644
index 0000000000..b1302ede0e
--- /dev/null
+++ b/meta-demoapps/recipes-gnome/libgtkstylus/files/gtkstylus.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+GTK_MODULES=libgtkstylus.so
+
+export GTK_MODULES
diff --git a/meta-demoapps/recipes-gnome/libgtkstylus/libgtkstylus_0.5.bb b/meta-demoapps/recipes-gnome/libgtkstylus/libgtkstylus_0.5.bb
new file mode 100644
index 0000000000..f614048a16
--- /dev/null
+++ b/meta-demoapps/recipes-gnome/libgtkstylus/libgtkstylus_0.5.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "GTK plugin for stylus based systems"
+SECTION = "libs"
+DEPENDS = "gtk+"
+LICENSE = "LGPL"
+PR = "r2"
+
+inherit autotools
+
+SRC_URI = "http://burtonini.com/temp/${PN}-${PV}.tar.gz \
+ file://gtkstylus.sh"
+
+do_install_append() {
+ install -d ${D}/${sysconfdir}/X11/Xsession.d
+ install -m 755 ${WORKDIR}/gtkstylus.sh ${D}/${sysconfdir}/X11/Xsession.d/45gtkstylus
+}
+
+# Horrible but rpm falls over if you use '*'
+GTKVER = "2.10.0"
+
+FILES_${PN} = "${sysconfdir} \
+ ${libdir}/gtk-2.0/${GTKVER}/modules/libgtkstylus.so.*"
+FILES_${PN}-dbg += "${libdir}/gtk-2.0/${GTKVER}/modules/.debug"
+FILES_${PN}-dev += "${libdir}/gtk-2.0/${GTKVER}/modules/libgtkstylus.so \
+ ${libdir}/gtk-2.0/${GTKVER}/modules/libgtkstylus.*a"
diff --git a/meta-demoapps/recipes-gnome/wv/wv-1.2.0/pkgconfig.patch b/meta-demoapps/recipes-gnome/wv/wv-1.2.0/pkgconfig.patch
new file mode 100644
index 0000000000..136d89341f
--- /dev/null
+++ b/meta-demoapps/recipes-gnome/wv/wv-1.2.0/pkgconfig.patch
@@ -0,0 +1,13 @@
+Index: wv-1.2.0/wv-1.0.pc.in
+===================================================================
+--- wv-1.2.0.orig/wv-1.0.pc.in 2008-03-19 22:25:18.000000000 +0000
++++ wv-1.2.0/wv-1.0.pc.in 2008-03-19 22:26:32.000000000 +0000
+@@ -6,5 +6,6 @@
+ Name: wvWare
+ Description: Word Document Filter library and utilities
+ Version: @VERSION@
+-Libs: -L${libdir} -lwv @WMF_LIBS@ @XML_LIBS@ @GLIB_LIBS@ @GSF_LIBS@ @PNG_LIBS@ @ZLIB_LIBS@ @LIBS@ -lm
+-Cflags: -I${includedir}/wv @GSF_CFLAGS@
++Requires: libgsf-1
++Libs: -L${libdir} -lwv @WMF_LIBS@ @XML_LIBS@ @PNG_LIBS@ @ZLIB_LIBS@ @LIBS@ -lm
++Cflags: -I${includedir}/wv
diff --git a/meta-demoapps/recipes-gnome/wv/wv_1.2.0.bb b/meta-demoapps/recipes-gnome/wv/wv_1.2.0.bb
new file mode 100644
index 0000000000..c4c115b90e
--- /dev/null
+++ b/meta-demoapps/recipes-gnome/wv/wv_1.2.0.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Programs for accessing Microsoft Word documents"
+HOMEPAGE = "http://wvware.sourceforge.net/"
+LICENSE = "GPLv2"
+DEPENDS = "libgsf glib-2.0"
+PR = "r3"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/wvware/wv-${PV}.tar.gz \
+ file://pkgconfig.patch;patch=1"
+
+inherit autotools pkgconfig
+
+S = "${WORKDIR}/${PN}-${PV}"
+
+EXTRA_OECONF = ""