summaryrefslogtreecommitdiff
path: root/community/google-gadgets
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2013-07-19 01:10:32 -0700
committerroot <root@rshg054.dnsready.net>2013-07-19 01:10:32 -0700
commit8fbc0076a4827ddc6af92e0b9daa4c4c31450808 (patch)
tree03fd0e2921ebd53228d9a93e32ed3976b636cbea /community/google-gadgets
parente445a313723389ba9ee1fded025c567dae5b21ea (diff)
Fri Jul 19 01:09:18 PDT 2013
Diffstat (limited to 'community/google-gadgets')
-rw-r--r--community/google-gadgets/PKGBUILD164
-rw-r--r--community/google-gadgets/gcc47.patch325
-rw-r--r--community/google-gadgets/glibc231.patch25
-rw-r--r--community/google-gadgets/google-gadgets-common.install15
-rw-r--r--community/google-gadgets/google-gadgets.changelog8
-rw-r--r--community/google-gadgets/google-gadgets.install15
-rw-r--r--community/google-gadgets/wifi-types.patch36
7 files changed, 588 insertions, 0 deletions
diff --git a/community/google-gadgets/PKGBUILD b/community/google-gadgets/PKGBUILD
new file mode 100644
index 000000000..f410e4a44
--- /dev/null
+++ b/community/google-gadgets/PKGBUILD
@@ -0,0 +1,164 @@
+# $Id: PKGBUILD 85354 2013-03-01 10:32:21Z andrea $
+# Maintainer: Ray Rashif <schiv@archlinux.org>
+
+pkgbase=google-gadgets
+pkgname=('google-gadgets-common' 'google-gadgets-gtk' 'google-gadgets-qt')
+_realname=$pkgbase-for-linux
+_basedir="$startdir/pkg/base"
+pkgver=0.11.2
+_sover=1.0
+_sobump=0.0.0
+pkgrel=6
+arch=('i686' 'x86_64')
+url="http://code.google.com/p/google-gadgets-for-linux/"
+license=('APACHE')
+makedepends=('gstreamer0.10-base-plugins' 'libwebkit'
+ 'desktop-file-utils' 'xdg-utils'
+ 'librsvg' 'curl' 'libsoup-gnome'
+ 'qtwebkit'
+ 'networkmanager'
+ 'zip' 'flex')
+options=('!libtool')
+source=("http://google-gadgets-for-linux.googlecode.com/files/$_realname-$pkgver.tar.bz2"
+ "wifi-types.patch"
+ 'gcc47.patch'
+ 'glibc231.patch')
+md5sums=('279305553bcbf74f3e3615f6abc36a5e'
+ 'f0df71c60a174e9d629db87b8bd9e102'
+ 'b62bc8592b5a44cb34cb7a7e4a6cf62e'
+ '4b96d1da79a375ef2fb58ff01a76f684')
+
+build() {
+ cd "$srcdir/$_realname-$pkgver"
+
+ # Building thrice is expensive;
+ # we move files around instead
+ #
+ # xulrunner 2.0 is incompatible;
+ # we build without smjs-script/browser-element
+
+ patch -p1 <$srcdir/wifi-types.patch
+ patch -p1 -i "${srcdir}"/gcc47.patch
+ patch -p0 -i "${srcdir}"/glibc231.patch
+ ./configure --prefix=/usr \
+ --disable-werror \
+ --disable-update-desktop-database \
+ --disable-update-mime-database \
+ --with-oem-brand=Arch \
+ --with-ssl-ca-file=/etc/ssl/certs/ca-certificates.crt \
+ --with-browser-plugins-dir=/usr/lib/mozilla/plugins \
+ --disable-gtkmoz-browser-element \
+ --disable-smjs-script-runtime
+ make
+}
+
+package_google-gadgets-common() {
+ pkgdesc="Desktop widgets from Google (common files)"
+ install=$pkgbase-common.install
+ depends=('hicolor-icon-theme' 'shared-mime-info')
+ optdepends=('google-gadgets-gtk: GTK+ (full) UI'
+ 'google-gadgets-qt: Qt (partial) UI')
+
+ cd "$srcdir/$_realname-$pkgver"
+
+ make -j1 DESTDIR="$pkgdir/" install
+
+ # we need to remove stuff in this package
+ cp -a "$pkgdir" "$_basedir"
+
+ # do not force any removal; we want to know in case files change
+ cd "$pkgdir/usr"
+ rm -r bin
+ rm -r share/applications
+
+ cd "$pkgdir/usr/lib/$pkgbase"
+
+ # gtk-related
+ #rm gtkmoz-browser-child
+ rm ../lib*gtk*
+ rm modules/gtk*.so
+
+ # qt-related
+ rm ../lib*qt*
+ rm modules/qt*.so
+}
+
+package_google-gadgets-gtk() {
+ pkgdesc="Desktop widgets from Google (full GTK+ front-end)"
+ groups=('google-gadgets')
+ install=$pkgbase.install
+ depends=('google-gadgets-common'
+ 'desktop-file-utils' 'xdg-utils'
+ 'gstreamer0.10-base-plugins' 'libwebkit' 'libsoup-gnome'
+ 'librsvg' 'curl')
+ optdepends=('networkmanager: desktop integration')
+
+ # install the gtk binary
+ cd "$_basedir"
+ install -Dm755 "usr/bin/ggl-gtk" "$pkgdir/usr/bin/ggl-gtk"
+
+ # gtk-only browser stuff
+ #install -Dm755 usr/lib/$pkgbase/gtkmoz-browser-child \
+ # "$pkgdir/usr/lib/$pkgbase/gtkmoz-browser-child"
+
+ # now the gtk libraries
+ mkdir -p "$pkgdir/usr/lib/$pkgbase/modules"
+
+ install -m755 usr/lib/$pkgbase/modules/gtk*.so \
+ "$pkgdir/usr/lib/$pkgbase/modules/"
+
+ install -m755 usr/lib/lib*gtk* "$pkgdir/usr/lib"
+
+ # fix permissions and symlinks
+ find "$pkgdir/usr/lib" -name *.a -exec chmod 644 {} \;
+
+ ln -sf /usr/lib/libggadget-gtk-$_sover.so.$_sobump \
+ "$pkgdir/usr/lib/libggadget-gtk-$_sover.so"
+
+ ln -sf /usr/lib/libggadget-gtk-$_sover.so.$_sobump \
+ "$pkgdir/usr/lib/libggadget-gtk-$_sover.so.0"
+
+ # freedesktop.org for gtk
+ install -Dm644 usr/share/applications/ggl-gtk.desktop \
+ "$pkgdir/usr/share/applications/ggl-gtk.desktop"
+
+ install -m644 usr/share/applications/ggl-designer.desktop \
+ "$pkgdir/usr/share/applications/"
+}
+
+package_google-gadgets-qt() {
+ pkgdesc="Desktop widgets from Google (partial Qt front-end)"
+ groups=('google-gadgets')
+ install=$pkgbase.install
+ depends=('google-gadgets-common' 'qtwebkit'
+ 'desktop-file-utils' 'xdg-utils'
+ 'gstreamer0.10-base-plugins' 'libwebkit')
+ optdepends=('networkmanager: desktop integration')
+
+ # install the qt binary
+ cd "$_basedir"
+ install -Dm755 usr/bin/ggl-qt "$pkgdir/usr/bin/ggl-qt"
+
+ # the qt libraries
+ mkdir -p "$pkgdir/usr/lib/$pkgbase/modules"
+
+ install -m755 usr/lib/$pkgbase/modules/qt*.so \
+ "$pkgdir/usr/lib/$pkgbase/modules/"
+
+ install -m755 usr/lib/lib*qt* "$pkgdir/usr/lib/"
+
+ # fix permissions and symlinks
+ find "$pkgdir/usr/lib" -name *.a -exec chmod 644 {} \;
+
+ ln -sf /usr/lib/libggadget-qt-$_sover.so.$_sobump \
+ "$pkgdir/usr/lib/libggadget-qt-$_sover.so"
+
+ ln -sf /usr/lib/libggadget-qt-$_sover.so.$_sobump \
+ "$pkgdir/usr/lib/libggadget-qt-$_sover.so.0"
+
+ # freedesktop.org for qt
+ install -Dm644 usr/share/applications/ggl-qt.desktop \
+ "$pkgdir/usr/share/applications/ggl-qt.desktop"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/community/google-gadgets/gcc47.patch b/community/google-gadgets/gcc47.patch
new file mode 100644
index 000000000..2e77e10fd
--- /dev/null
+++ b/community/google-gadgets/gcc47.patch
@@ -0,0 +1,325 @@
+Author: Pino Toscano <pino@debian.org>
+Description: Fix building with GCC 4.7
+ This patch fixes the two kinds of issues that arise with GCC 4.7:
+ - include <unistd.h> for functions like access(), fork(), readlink(), etc
+ - fix argument-dependent lookup issues by qualifying the lookup of functions
+Forwarded: no
+Last-Update: 2012-04-04
+
+--- a/ggadget/scriptable_enumerator.h
++++ b/ggadget/scriptable_enumerator.h
+@@ -68,22 +68,22 @@
+
+ protected:
+ virtual void DoClassRegister() {
+- RegisterMethod("atEnd",
++ this->RegisterMethod("atEnd",
+ NewSlot(&E::AtEnd,
+ &ScriptableEnumerator<E, Wrapper, Param, ClassId>
+ ::enumerator_));
+- RegisterMethod("moveFirst",
++ this->RegisterMethod("moveFirst",
+ NewSlot(&E::MoveFirst,
+ &ScriptableEnumerator<E, Wrapper, Param, ClassId>
+ ::enumerator_));
+- RegisterMethod("moveNext",
++ this->RegisterMethod("moveNext",
+ NewSlot(&E::MoveNext,
+ &ScriptableEnumerator<E, Wrapper, Param, ClassId>
+ ::enumerator_));
+- RegisterMethod("item",
++ this->RegisterMethod("item",
+ NewSlot(&ScriptableEnumerator<E, Wrapper, Param, ClassId>
+ ::GetItem));
+- RegisterProperty("count",
++ this->RegisterProperty("count",
+ NewSlot(&E::GetCount,
+ &ScriptableEnumerator<E, Wrapper, Param, ClassId>
+ ::enumerator_),
+--- a/ggadget/uuid.cc
++++ b/ggadget/uuid.cc
+@@ -24,6 +24,7 @@
+ #include <cstdlib>
+ #include <cstring>
+ #include <ctime>
++#include <unistd.h>
+
+ #include "string_utils.h"
+
+--- a/ggadget/xml_dom.cc
++++ b/ggadget/xml_dom.cc
+@@ -1327,15 +1327,15 @@
+
+ virtual void DoClassRegister() {
+ Super::DoClassRegister();
+- RegisterProperty("data", NewSlot(&DOMCharacterData::GetData),
++ this->RegisterProperty("data", NewSlot(&DOMCharacterData::GetData),
+ NewSlot(&DOMCharacterData::SetData));
+- RegisterProperty("length", NewSlot(&DOMCharacterData::GetLength), NULL);
+- RegisterMethod("substringData",
++ this->RegisterProperty("length", NewSlot(&DOMCharacterData::GetLength), NULL);
++ this->RegisterMethod("substringData",
+ NewSlot(&DOMCharacterData::ScriptSubstringData));
+- RegisterMethod("appendData", NewSlot(&DOMCharacterData::AppendData));
+- RegisterMethod("insertData", NewSlot(&DOMCharacterData::ScriptInsertData));
+- RegisterMethod("deleteData", NewSlot(&DOMCharacterData::ScriptDeleteData));
+- RegisterMethod("replaceData",
++ this->RegisterMethod("appendData", NewSlot(&DOMCharacterData::AppendData));
++ this->RegisterMethod("insertData", NewSlot(&DOMCharacterData::ScriptInsertData));
++ this->RegisterMethod("deleteData", NewSlot(&DOMCharacterData::ScriptDeleteData));
++ this->RegisterMethod("replaceData",
+ NewSlot(&DOMCharacterData::ScriptReplaceData));
+ }
+
+@@ -1377,20 +1377,20 @@
+ private:
+ UTF16String ScriptSubstringData(size_t offset, size_t count) {
+ UTF16String result;
+- CheckException(SubstringData(offset, count, &result));
++ this->CheckException(SubstringData(offset, count, &result));
+ return result;
+ }
+
+ void ScriptInsertData(size_t offset, const UTF16String &arg) {
+- CheckException(InsertData(offset, arg));
++ this->CheckException(InsertData(offset, arg));
+ }
+
+ void ScriptDeleteData(size_t offset, size_t count) {
+- CheckException(DeleteData(offset, count));
++ this->CheckException(DeleteData(offset, count));
+ }
+
+ void ScriptReplaceData(size_t offset, size_t count, const UTF16String &arg) {
+- CheckException(ReplaceData(offset, count, arg));
++ this->CheckException(ReplaceData(offset, count, arg));
+ }
+
+ DOMCharacterDataImpl impl_;
+@@ -1417,10 +1417,10 @@
+
+ virtual void DoClassRegister() {
+ Super::DoClassRegister();
+- RegisterProperty("name", NewSlot(&DOMAttr::GetName), NULL);
++ this->RegisterProperty("name", NewSlot(&DOMAttr::GetName), NULL);
+ // Our DOMAttrs are always specified, because we don't support DTD for now.
+- RegisterConstant("specified", true);
+- RegisterProperty("value", NewSlot(&DOMAttr::GetValue),
++ this->RegisterConstant("specified", true);
++ this->RegisterProperty("value", NewSlot(&DOMAttr::GetValue),
+ NewSlot(&DOMAttr::SetValue));
+ // ownerElement is a DOM2 property, so not registered for now.
+ }
+@@ -1516,19 +1516,19 @@
+
+ virtual void DoClassRegister() {
+ Super::DoClassRegister();
+- RegisterProperty("tagName", NewSlot(&DOMElement::GetTagName), NULL);
+- RegisterMethod("getAttribute", NewSlot(&DOMElement::GetAttribute));
+- RegisterMethod("setAttribute",
++ this->RegisterProperty("tagName", NewSlot(&DOMElement::GetTagName), NULL);
++ this->RegisterMethod("getAttribute", NewSlot(&DOMElement::GetAttribute));
++ this->RegisterMethod("setAttribute",
+ NewSlot(&DOMElement::ScriptSetAttribute));
+- RegisterMethod("removeAttribute",
++ this->RegisterMethod("removeAttribute",
+ NewSlot(&DOMElement::RemoveAttribute));
+- RegisterMethod("getAttributeNode",
++ this->RegisterMethod("getAttributeNode",
+ NewSlot(&DOMElement::GetAttributeNodeNotConst));
+- RegisterMethod("setAttributeNode",
++ this->RegisterMethod("setAttributeNode",
+ NewSlot(&DOMElement::ScriptSetAttributeNode));
+- RegisterMethod("removeAttributeNode",
++ this->RegisterMethod("removeAttributeNode",
+ NewSlot(&DOMElement::ScriptRemoveAttributeNode));
+- RegisterMethod("getElementsByTagName",
++ this->RegisterMethod("getElementsByTagName",
+ NewSlot(&Super::GetElementsByTagNameNotConst));
+ }
+
+@@ -1696,16 +1696,16 @@
+ }
+
+ virtual void DoClassRegister() {
+- RegisterProperty("length", NewSlot(&AttrsNamedMap::GetLength), NULL);
+- RegisterMethod("getNamedItem",
++ this->RegisterProperty("length", NewSlot(&AttrsNamedMap::GetLength), NULL);
++ this->RegisterMethod("getNamedItem",
+ NewSlot(&AttrsNamedMap::GetNamedItemNotConst));
+- RegisterMethod("setNamedItem",
++ this->RegisterMethod("setNamedItem",
+ NewSlot(&AttrsNamedMap::ScriptSetNamedItem));
+- RegisterMethod("removeNamedItem",
++ this->RegisterMethod("removeNamedItem",
+ NewSlot(&AttrsNamedMap::ScriptRemoveNamedItem));
+- RegisterMethod("item", NewSlot(&AttrsNamedMap::GetItemNotConst));
++ this->RegisterMethod("item", NewSlot(&AttrsNamedMap::GetItemNotConst));
+ // Microsoft compatibility.
+- RegisterMethod("", NewSlot(&AttrsNamedMap::GetItemNotConst));
++ this->RegisterMethod("", NewSlot(&AttrsNamedMap::GetItemNotConst));
+ }
+
+ virtual DOMNodeInterface *GetNamedItem(const std::string &name) {
+@@ -1875,7 +1875,7 @@
+
+ virtual void DoClassRegister() {
+ Super::DoClassRegister();
+- RegisterMethod("splitText", NewSlot(&DOMText::ScriptSplitText));
++ this->RegisterMethod("splitText", NewSlot(&DOMText::ScriptSplitText));
+ }
+
+ virtual NodeType GetNodeType() const { return TEXT_NODE; }
+@@ -2060,9 +2060,9 @@
+
+ virtual void DoClassRegister() {
+ Super::DoClassRegister();
+- RegisterProperty("target",
++ this->RegisterProperty("target",
+ NewSlot(&DOMProcessingInstruction::GetTarget), NULL);
+- RegisterProperty("data", NewSlot(&DOMProcessingInstruction::GetData),
++ this->RegisterProperty("data", NewSlot(&DOMProcessingInstruction::GetData),
+ NewSlot(&DOMProcessingInstruction::SetData));
+ }
+
+@@ -2109,7 +2109,7 @@
+ DEFINE_CLASS_ID(0xd23149a89cf24e12, DOMImplementationInterface);
+
+ virtual void DoClassRegister() {
+- RegisterMethod("hasFeature", NewSlot(&DOMImplementation::HasFeature));
++ this->RegisterMethod("hasFeature", NewSlot(&DOMImplementation::HasFeature));
+ }
+
+ virtual bool HasFeature(const char *feature, const char *version) const {
+@@ -2129,13 +2129,13 @@
+ void SetCode(int code) { code_ = code; }
+
+ virtual void DoClassRegister() {
+- RegisterProperty("errorCode", NewSlot(&ParseError::GetCode), NULL);
+- RegisterConstant("filepos", 0);
+- RegisterConstant("line", 0);
+- RegisterConstant("linepos", 0);
+- RegisterConstant("reason", "");
+- RegisterConstant("srcText", "");
+- RegisterConstant("url", "");
++ this->RegisterProperty("errorCode", NewSlot(&ParseError::GetCode), NULL);
++ this->RegisterConstant("filepos", 0);
++ this->RegisterConstant("line", 0);
++ this->RegisterConstant("linepos", 0);
++ this->RegisterConstant("reason", "");
++ this->RegisterConstant("srcText", "");
++ this->RegisterConstant("url", "");
+ }
+
+ private:
+@@ -2180,45 +2180,45 @@
+
+ virtual void DoClassRegister() {
+ Super::DoClassRegister();
+- RegisterConstant("doctype", static_cast<ScriptableInterface *>(NULL));
+- RegisterConstant("implementation", &dom_implementation_);
+- RegisterProperty("documentElement",
++ this->RegisterConstant("doctype", static_cast<ScriptableInterface *>(NULL));
++ this->RegisterConstant("implementation", &dom_implementation_);
++ this->RegisterProperty("documentElement",
+ NewSlot(&DOMDocument::GetDocumentElementNotConst), NULL);
+- RegisterMethod("loadXML", NewSlot(&DOMDocument::LoadXML));
+- RegisterMethod("createElement",
++ this->RegisterMethod("loadXML", NewSlot(&DOMDocument::LoadXML));
++ this->RegisterMethod("createElement",
+ NewSlot(&DOMDocument::ScriptCreateElement));
+- RegisterMethod("createDocumentFragment",
++ this->RegisterMethod("createDocumentFragment",
+ NewSlot(&DOMDocument::CreateDocumentFragment));
+- RegisterMethod("createTextNode",
++ this->RegisterMethod("createTextNode",
+ NewSlot(&DOMDocument::CreateTextNode));
+- RegisterMethod("createComment", NewSlot(&DOMDocument::CreateComment));
+- RegisterMethod("createCDATASection",
++ this->RegisterMethod("createComment", NewSlot(&DOMDocument::CreateComment));
++ this->RegisterMethod("createCDATASection",
+ NewSlot(&DOMDocument::CreateCDATASection));
+- RegisterMethod("createProcessingInstruction",
++ this->RegisterMethod("createProcessingInstruction",
+ NewSlot(&DOMDocument::ScriptCreateProcessingInstruction));
+- RegisterMethod("createAttribute",
++ this->RegisterMethod("createAttribute",
+ NewSlot(&DOMDocument::ScriptCreateAttribute));
+- RegisterMethod("createEntityReference",
++ this->RegisterMethod("createEntityReference",
+ NewSlot(&DOMDocument::ScriptCreateEntityReference));
+- RegisterMethod("getElementsByTagName",
++ this->RegisterMethod("getElementsByTagName",
+ NewSlot(&Super::GetElementsByTagNameNotConst));
+- RegisterMethod("importNode", NewSlot(&DOMDocument::ScriptImportNode));
++ this->RegisterMethod("importNode", NewSlot(&DOMDocument::ScriptImportNode));
+ // Compatibility with Microsoft DOM.
+- RegisterProperty("parsed", NewFixedGetterSlot(true), NULL);
+- RegisterProperty("parseError", NewSlot(&DOMDocument::GetParseError), NULL);
+- RegisterProperty("resolveExternals", NULL, NewSlot(&DummySetter));
+- RegisterProperty("validateOnParse", NULL, NewSlot(&DummySetter));
+- RegisterProperty("preserveWhiteSpace",
++ this->RegisterProperty("parsed", NewFixedGetterSlot(true), NULL);
++ this->RegisterProperty("parseError", NewSlot(&DOMDocument::GetParseError), NULL);
++ this->RegisterProperty("resolveExternals", NULL, NewSlot(&DummySetter));
++ this->RegisterProperty("validateOnParse", NULL, NewSlot(&DummySetter));
++ this->RegisterProperty("preserveWhiteSpace",
+ NewSlot(&DOMDocument::PreservesWhiteSpace),
+ NewSlot(&DOMDocument::SetPreserveWhiteSpace));
+- RegisterMethod("getProperty", NewSlot(DummyGetProperty));
+- RegisterMethod("setProperty", NewSlot(DummySetProperty));
++ this->RegisterMethod("getProperty", NewSlot(DummyGetProperty));
++ this->RegisterMethod("setProperty", NewSlot(DummySetProperty));
+ // Compatibility with Microsoft DOM: XMLHttpRequest functions.
+- RegisterProperty("async", NewSlot(&DOMDocument::IsAsync),
++ this->RegisterProperty("async", NewSlot(&DOMDocument::IsAsync),
+ NewSlot(&DOMDocument::SetAsync));
+- RegisterProperty("readyState", NewSlot(&DOMDocument::GetReadyState), NULL);
+- RegisterMethod("load", NewSlot(&DOMDocument::Load));
+- RegisterClassSignal("onreadystatechange",
++ this->RegisterProperty("readyState", NewSlot(&DOMDocument::GetReadyState), NULL);
++ this->RegisterMethod("load", NewSlot(&DOMDocument::Load));
++ this->RegisterClassSignal("onreadystatechange",
+ &DOMDocument::onreadystatechange_signal_);
+ }
+
+--- a/ggadget/xdg/icon_theme.cc
++++ b/ggadget/xdg/icon_theme.cc
+@@ -16,6 +16,7 @@
+ #include <sys/time.h>
+ #include <time.h>
+ #include <cstdlib>
++#include <unistd.h>
+
+ #include <map>
+ #include <vector>
+--- a/extensions/qt_system_framework/qt_system_framework.cc
++++ b/extensions/qt_system_framework/qt_system_framework.cc
+@@ -32,6 +32,7 @@
+ #include <ggadget/xdg/desktop_entry.h>
+ #include <ggadget/xdg/icon_theme.h>
+ #include <ggadget/xdg/utilities.h>
++#include <unistd.h>
+
+ #define Initialize qt_system_framework_LTX_Initialize
+ #define Finalize qt_system_framework_LTX_Finalize
+--- a/extensions/linux_system_framework/process.cc
++++ b/extensions/linux_system_framework/process.cc
+@@ -17,6 +17,7 @@
+ #include <sys/types.h>
+ #include <dirent.h>
+ #include <cstdlib>
++#include <unistd.h>
+
+ #ifdef HAVE_X11
+ #include <X11/Xlib.h>
+--- a/gadgets/designer/designer_script_utils.cc
++++ b/gadgets/designer/designer_script_utils.cc
+@@ -39,6 +39,7 @@
+ #include <ggadget/system_utils.h>
+ #include <ggadget/uuid.h>
+ #include <ggadget/view_interface.h>
++#include <unistd.h>
+
+ namespace ggadget {
+ namespace designer {
diff --git a/community/google-gadgets/glibc231.patch b/community/google-gadgets/glibc231.patch
new file mode 100644
index 000000000..61de05162
--- /dev/null
+++ b/community/google-gadgets/glibc231.patch
@@ -0,0 +1,25 @@
+--- ggadget/gtk/main_loop.cc
++++ ggadget/gtk/main_loop.cc
+@@ -16,9 +16,8 @@
+
+ #include <fcntl.h>
+ #include <stdint.h>
+-#include <glib/ghash.h>
++#include <glib.h>
+ #include <gtk/gtk.h>
+-#include <glib/gthread.h>
+ #include <ggadget/common.h>
+ #include "main_loop.h"
+ #include "utilities.h"
+--- hosts/gtk/main.cc
++++ hosts/gtk/main.cc
+@@ -14,8 +14,8 @@
+ limitations under the License.
+ */
+
++#include <glib.h>
+ #include <gtk/gtk.h>
+-#include <glib/gthread.h>
+ #include <locale.h>
+ #include <signal.h>
+ #include <unistd.h>
diff --git a/community/google-gadgets/google-gadgets-common.install b/community/google-gadgets/google-gadgets-common.install
new file mode 100644
index 000000000..210cbc869
--- /dev/null
+++ b/community/google-gadgets/google-gadgets-common.install
@@ -0,0 +1,15 @@
+post_install() {
+ echo "==> Updating desktop database..."
+ gtk-update-icon-cache --quiet usr/share/icons/hicolor
+ update-mime-database usr/share/mime &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/community/google-gadgets/google-gadgets.changelog b/community/google-gadgets/google-gadgets.changelog
new file mode 100644
index 000000000..5b8f85a71
--- /dev/null
+++ b/community/google-gadgets/google-gadgets.changelog
@@ -0,0 +1,8 @@
+25 Mar 2011 (GMT+8) Ray Rashif <schiv@archlinux.org>
+
+ * 0.11.2-3:
+ xulrunner rebuild
+ - undepend on xulrunner (2.0 incompatible)
+ - disable smjs-script/browser-element
+ Cleaned up scriptlets (too many blank lines)
+ Added this changelog
diff --git a/community/google-gadgets/google-gadgets.install b/community/google-gadgets/google-gadgets.install
new file mode 100644
index 000000000..fd88688fc
--- /dev/null
+++ b/community/google-gadgets/google-gadgets.install
@@ -0,0 +1,15 @@
+post_install() {
+ echo "==> Updating desktop database..."
+ update-mime-database usr/share/mime &> /dev/null
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/community/google-gadgets/wifi-types.patch b/community/google-gadgets/wifi-types.patch
new file mode 100644
index 000000000..be9383a61
--- /dev/null
+++ b/community/google-gadgets/wifi-types.patch
@@ -0,0 +1,36 @@
+diff -wbBur google-gadgets-for-linux-0.11.2/extensions/linux_system_framework/network.cc google-gadgets-for-linux-0.11.2.my/extensions/linux_system_framework/network.cc
+--- google-gadgets-for-linux-0.11.2/extensions/linux_system_framework/network.cc 2009-03-15 04:12:42.000000000 +0000
++++ google-gadgets-for-linux-0.11.2.my/extensions/linux_system_framework/network.cc 2011-04-08 20:57:16.000000000 +0000
+@@ -23,17 +23,9 @@
+ namespace framework {
+ namespace linux_system {
+
+-#ifdef NM_DEVICE_TYPE_WIFI
+ static const int kDeviceTypeWifi = NM_DEVICE_TYPE_WIFI;
+-#else
+-static const int kDeviceTypeWifi = DEVICE_TYPE_802_11_WIRELESS;
+-#endif
+
+-#ifdef NM_DEVICE_TYPE_ETHERNET
+ static const int kDeviceTypeEthernet = NM_DEVICE_TYPE_ETHERNET;
+-#else
+-static const int kDeviceTypeEthernet = DEVICE_TYPE_802_3_ETHERNET;
+-#endif
+
+ static const int kDeviceTypeUnknown = 0;
+
+diff -wbBur google-gadgets-for-linux-0.11.2/extensions/linux_system_framework/wireless.cc google-gadgets-for-linux-0.11.2.my/extensions/linux_system_framework/wireless.cc
+--- google-gadgets-for-linux-0.11.2/extensions/linux_system_framework/wireless.cc 2009-12-28 10:39:53.000000000 +0000
++++ google-gadgets-for-linux-0.11.2.my/extensions/linux_system_framework/wireless.cc 2011-04-08 20:57:39.000000000 +0000
+@@ -77,11 +77,7 @@
+
+ using namespace ggadget::dbus;
+
+-#ifdef NM_DEVICE_TYPE_WIFI
+ static const int kDeviceTypeWifi = NM_DEVICE_TYPE_WIFI;
+-#else
+-static const int kDeviceTypeWifi = DEVICE_TYPE_802_11_WIRELESS;
+-#endif
+
+ // Defined in nm 0.7
+ static const int kDeviceStateActivated = 8;