Index: /gs2-extensions/gnome-lib/trunk/src/packages/android-patches/gettext-android.patch
===================================================================
--- /gs2-extensions/gnome-lib/trunk/src/packages/android-patches/gettext-android.patch	(revision 26787)
+++ /gs2-extensions/gnome-lib/trunk/src/packages/android-patches/gettext-android.patch	(revision 26787)
@@ -0,0 +1,20 @@
+--- gettext-0.18.2/gettext-tools/src/msginit.c.orig	2013-01-24 11:58:17.657753169 +1300
++++ gettext-0.18.2/gettext-tools/src/msginit.c	2013-01-24 11:59:27.455754433 +1300
+@@ -1074,6 +1074,9 @@
+ 
+   pwd = get_user_pwd ();
+ #if HAVE_PWD_H
++#ifdef __ANDROID__
++  return NULL;
++#else
+   if (pwd != NULL)
+     {
+       const char *fullname;
+@@ -1093,6 +1096,7 @@
+       return result;
+     }
+ #endif
++#endif
+ 
+   return NULL;
+ }
Index: /gs2-extensions/gnome-lib/trunk/src/packages/android-patches/glib-android.patch
===================================================================
--- /gs2-extensions/gnome-lib/trunk/src/packages/android-patches/glib-android.patch	(revision 26787)
+++ /gs2-extensions/gnome-lib/trunk/src/packages/android-patches/glib-android.patch	(revision 26787)
@@ -0,0 +1,320 @@
+--- glib-2.28.1/glib/gstrfuncs.c	2011-02-16 10:55:33.000000000 +0800
++++ aglib-2.28.1/glib/gstrfuncs.c	2011-03-21 16:33:18.000000000 +0800
+@@ -442,8 +442,12 @@ g_ascii_strtod (const gchar *nptr,
+ 
+   fail_pos = NULL;
+ 
++#ifdef __ANDROID__
++  decimal_point = ".";
++#else
+   locale_data = localeconv ();
+   decimal_point = locale_data->decimal_point;
++#endif
+   decimal_point_len = strlen (decimal_point);
+ 
+   g_assert (decimal_point_len != 0);
+@@ -656,8 +660,12 @@ g_ascii_formatd (gchar       *buffer,
+ 
+   _g_snprintf (buffer, buf_len, format, d);
+ 
++#ifdef __ANDROID__
++  decimal_point = ".";
++#else
+   locale_data = localeconv ();
+   decimal_point = locale_data->decimal_point;
++#endif
+   decimal_point_len = strlen (decimal_point);
+ 
+   g_assert (decimal_point_len != 0);
+--- glib-2.28.1/glib/gutils.c	2011-02-11 23:23:13.000000000 +0800
++++ aglib-2.28.1/glib/gutils.c	2011-03-21 17:08:09.000000000 +0800
+@@ -29,6 +29,9 @@
+  */
+ 
+ #include "config.h"
++#ifdef __ANDROID__
++#undef HAVE_PWD_H
++#endif
+ 
+ #ifdef HAVE_UNISTD_H
+ #include <unistd.h>
+--- glib-2.28.1/gio/libasyncns/asyncns.c	2010-04-13 21:33:16.000000000 +0800
++++ aglib-2.28.1/gio/libasyncns/asyncns.c	2011-03-21 17:11:43.000000000 +0800
+@@ -18,6 +18,30 @@
+   <http://www.gnu.org/licenses/>.
+ ***/
+ 
++#ifdef __ANDROID__
++typedef struct {
++	unsigned	id :16;		/*%< query identification number */
++			/* fields in third byte */
++	unsigned	rd :1;		/*%< recursion desired */
++	unsigned	tc :1;		/*%< truncated message */
++	unsigned	aa :1;		/*%< authoritive answer */
++	unsigned	opcode :4;	/*%< purpose of message */
++	unsigned	qr :1;		/*%< response flag */
++			/* fields in fourth byte */
++	unsigned	rcode :4;	/*%< response code */
++	unsigned	cd: 1;		/*%< checking disabled by resolver */
++	unsigned	ad: 1;		/*%< authentic data from named */
++	unsigned	unused :1;	/*%< unused bits (MBZ as of 4.9.3a3) */
++	unsigned	ra :1;		/*%< recursion available */
++			/* remaining bytes */
++	unsigned	qdcount :16;	/*%< number of question entries */
++	unsigned	ancount :16;	/*%< number of answer entries */
++	unsigned	nscount :16;	/*%< number of authority entries */
++	unsigned	arcount :16;	/*%< number of resource entries */
++} HEADER;
++#endif
++
++
+ #ifdef HAVE_CONFIG_H
+ #include "g-asyncns.h"
+ #endif
+@@ -57,6 +81,10 @@
+ #include <inttypes.h>
+ #endif
+ 
++#ifdef __ANDROID__
++#undef HAVE_SYS_PRCTL_H
++#endif
++
+ #ifdef HAVE_SYS_PRCTL_H
+ #include <sys/prctl.h>
+ #endif
+--- glib-2.28.1/gio/gresolver.c	2011-02-11 23:23:11.000000000 +0800
++++ aglib-2.28.1/gio/gresolver.c	2011-03-21 16:42:18.000000000 +0800
+@@ -20,6 +20,61 @@
+  * Boston, MA 02111-1307, USA.
+  */
+ 
++#ifdef __ANDROID__
++/*%
++ * Inline versions of get/put short/long.  Pointer is advanced.
++ */
++#define NS_INT32SZ	4	/*%< #/bytes of data in a u_int32_t */
++#define NS_INT16SZ	2	/*%< #/bytes of data in a u_int16_t */
++#define NS_GET16(s, cp) do { \
++	register const u_char *t_cp = (const u_char *)(cp); \
++	(s) = ((u_int16_t)t_cp[0] << 8) \
++	    | ((u_int16_t)t_cp[1]) \
++	    ; \
++	(cp) += NS_INT16SZ; \
++} while (0)
++#define NS_GET32(l, cp) do { \
++	register const u_char *t_cp = (const u_char *)(cp); \
++	(l) = ((u_int32_t)t_cp[0] << 24) \
++	    | ((u_int32_t)t_cp[1] << 16) \
++	    | ((u_int32_t)t_cp[2] << 8) \
++	    | ((u_int32_t)t_cp[3]) \
++	    ; \
++	(cp) += NS_INT32SZ; \
++} while (0)
++
++
++#define	GETSHORT		NS_GET16
++#define	GETLONG			NS_GET32
++
++#define ns_c_in 	1	/*%< Internet. */
++#define ns_t_srv 	33	/*%< Internet. */
++#define C_IN		ns_c_in
++#define	T_SRV		ns_t_srv
++
++typedef struct {
++	unsigned	id :16;		/*%< query identification number */
++			/* fields in third byte */
++	unsigned	rd :1;		/*%< recursion desired */
++	unsigned	tc :1;		/*%< truncated message */
++	unsigned	aa :1;		/*%< authoritive answer */
++	unsigned	opcode :4;	/*%< purpose of message */
++	unsigned	qr :1;		/*%< response flag */
++			/* fields in fourth byte */
++	unsigned	rcode :4;	/*%< response code */
++	unsigned	cd: 1;		/*%< checking disabled by resolver */
++	unsigned	ad: 1;		/*%< authentic data from named */
++	unsigned	unused :1;	/*%< unused bits (MBZ as of 4.9.3a3) */
++	unsigned	ra :1;		/*%< recursion available */
++			/* remaining bytes */
++	unsigned	qdcount :16;	/*%< number of question entries */
++	unsigned	ancount :16;	/*%< number of answer entries */
++	unsigned	nscount :16;	/*%< number of authority entries */
++	unsigned	arcount :16;	/*%< number of resource entries */
++} HEADER;
++#endif
++
++
+ #include "config.h"
+ #include <glib.h>
+ #include "glibintl.h"
+--- glib-2.28.1/gio/gthreadedresolver.c	2011-02-11 23:23:12.000000000 +0800
++++ aglib-2.28.1/gio/gthreadedresolver.c	2011-03-21 16:44:29.000000000 +0800
+@@ -20,6 +20,60 @@
+  * Boston, MA 02111-1307, USA.
+  */
+ 
++#ifdef __ANDROID__
++/*%
++ * Inline versions of get/put short/long.  Pointer is advanced.
++ */
++#define NS_INT32SZ	4	/*%< #/bytes of data in a u_int32_t */
++#define NS_INT16SZ	2	/*%< #/bytes of data in a u_int16_t */
++#define NS_GET16(s, cp) do { \
++	register const u_char *t_cp = (const u_char *)(cp); \
++	(s) = ((u_int16_t)t_cp[0] << 8) \
++	    | ((u_int16_t)t_cp[1]) \
++	    ; \
++	(cp) += NS_INT16SZ; \
++} while (0)
++#define NS_GET32(l, cp) do { \
++	register const u_char *t_cp = (const u_char *)(cp); \
++	(l) = ((u_int32_t)t_cp[0] << 24) \
++	    | ((u_int32_t)t_cp[1] << 16) \
++	    | ((u_int32_t)t_cp[2] << 8) \
++	    | ((u_int32_t)t_cp[3]) \
++	    ; \
++	(cp) += NS_INT32SZ; \
++} while (0)
++
++
++#define	GETSHORT		NS_GET16
++#define	GETLONG			NS_GET32
++
++#define ns_c_in 	1	/*%< Internet. */
++#define ns_t_srv 	33	/*%< Internet. */
++#define C_IN		ns_c_in
++#define	T_SRV		ns_t_srv
++
++	typedef struct {
++	    unsigned	id :16;		/*%< query identification number */
++	    /* fields in third byte */
++	    unsigned	rd :1;		/*%< recursion desired */
++	    unsigned	tc :1;		/*%< truncated message */
++	    unsigned	aa :1;		/*%< authoritive answer */
++	    unsigned	opcode :4;	/*%< purpose of message */
++	    unsigned	qr :1;		/*%< response flag */
++	    /* fields in fourth byte */
++	    unsigned	rcode :4;	/*%< response code */
++	    unsigned	cd: 1;		/*%< checking disabled by resolver */
++	    unsigned	ad: 1;		/*%< authentic data from named */
++	    unsigned	unused :1;	/*%< unused bits (MBZ as of 4.9.3a3) */
++	    unsigned	ra :1;		/*%< recursion available */
++	    /* remaining bytes */
++	    unsigned	qdcount :16;	/*%< number of question entries */
++	    unsigned	ancount :16;	/*%< number of answer entries */
++	    unsigned	nscount :16;	/*%< number of authority entries */
++	    unsigned	arcount :16;	/*%< number of resource entries */
++	} HEADER;
++#endif
++
+ #include "config.h"
+ #include <glib.h>
+ #include "glibintl.h"
+--- glib-2.28.1/gio/gunixresolver.c	2011-02-11 23:23:12.000000000 +0800
++++ aglib-2.28.1/gio/gunixresolver.c	2011-03-21 16:45:01.000000000 +0800
+@@ -20,6 +20,62 @@
+  * Boston, MA 02111-1307, USA.
+  */
+ 
++#ifdef __ANDROID__
++/*%
++ * Inline versions of get/put short/long.  Pointer is advanced.
++ */
++#define NS_INT32SZ	4	/*%< #/bytes of data in a u_int32_t */
++#define NS_INT16SZ	2	/*%< #/bytes of data in a u_int16_t */
++#define NS_GET16(s, cp) do { \
++	register const u_char *t_cp = (const u_char *)(cp); \
++	(s) = ((u_int16_t)t_cp[0] << 8) \
++	    | ((u_int16_t)t_cp[1]) \
++	    ; \
++	(cp) += NS_INT16SZ; \
++} while (0)
++#define NS_GET32(l, cp) do { \
++	register const u_char *t_cp = (const u_char *)(cp); \
++	(l) = ((u_int32_t)t_cp[0] << 24) \
++	    | ((u_int32_t)t_cp[1] << 16) \
++	    | ((u_int32_t)t_cp[2] << 8) \
++	    | ((u_int32_t)t_cp[3]) \
++	    ; \
++	(cp) += NS_INT32SZ; \
++} while (0)
++
++
++#define	GETSHORT		NS_GET16
++#define	GETLONG			NS_GET32
++
++#define ns_c_in 	1	/*%< Internet. */
++#define ns_t_srv 	33	/*%< Internet. */
++#define C_IN		ns_c_in
++#define	T_SRV		ns_t_srv
++
++	typedef struct {
++	    unsigned	id :16;		/*%< query identification number */
++	    /* fields in third byte */
++	    unsigned	rd :1;		/*%< recursion desired */
++	    unsigned	tc :1;		/*%< truncated message */
++	    unsigned	aa :1;		/*%< authoritive answer */
++	    unsigned	opcode :4;	/*%< purpose of message */
++	    unsigned	qr :1;		/*%< response flag */
++	    /* fields in fourth byte */
++	    unsigned	rcode :4;	/*%< response code */
++	    unsigned	cd: 1;		/*%< checking disabled by resolver */
++	    unsigned	ad: 1;		/*%< authentic data from named */
++	    unsigned	unused :1;	/*%< unused bits (MBZ as of 4.9.3a3) */
++	    unsigned	ra :1;		/*%< recursion available */
++	    /* remaining bytes */
++	    unsigned	qdcount :16;	/*%< number of question entries */
++	    unsigned	ancount :16;	/*%< number of answer entries */
++	    unsigned	nscount :16;	/*%< number of authority entries */
++	    unsigned	arcount :16;	/*%< number of resource entries */
++	} HEADER;
++#endif
++
++
++
+ #include "config.h"
+ #include <glib.h>
+ #include "glibintl.h"
+--- glib-2.28.1/gio/glocalfileinfo.c	2011-02-11 23:23:11.000000000 +0800
++++ aglib-2.28.1/gio/glocalfileinfo.c	2011-03-21 16:55:10.000000000 +0800
+@@ -1096,7 +1096,11 @@ lookup_uid_data (uid_t uid)
+       if (pwbufp->pw_name != NULL && pwbufp->pw_name[0] != 0)
+ 	data->user_name = convert_pwd_string_to_utf8 (pwbufp->pw_name);
+ 
++#ifdef __ANDROID__
++      gecos = NULL;
++#else
+       gecos = pwbufp->pw_gecos;
++#endif
+ 
+       if (gecos)
+ 	{
+--- glib-2.28.1/gio/ginetaddress.c	2011-02-11 23:23:11.000000000 +0800
++++ aglib-2.28.1/gio/ginetaddress.c	2011-03-21 16:55:45.000000000 +0800
+@@ -20,6 +20,27 @@
+  * Authors: Christian Kellner <address@hidden>
+  *          Samuel Cormier-Iijima <address@hidden>
+  */
++#ifdef __ANDROID__
++#define IN6_IS_ADDR_MC_NODELOCAL(a) \
++	(IN6_IS_ADDR_MULTICAST(a)					      \
++	 && ((((__const uint8_t *) (a))[1] & 0xf) == 0x1))
++
++#define IN6_IS_ADDR_MC_LINKLOCAL(a) \
++	(IN6_IS_ADDR_MULTICAST(a)					      \
++	 && ((((__const uint8_t *) (a))[1] & 0xf) == 0x2))
++
++#define IN6_IS_ADDR_MC_SITELOCAL(a) \
++	(IN6_IS_ADDR_MULTICAST(a)					      \
++	 && ((((__const uint8_t *) (a))[1] & 0xf) == 0x5))
++
++#define IN6_IS_ADDR_MC_ORGLOCAL(a) \
++	(IN6_IS_ADDR_MULTICAST(a)					      \
++	 && ((((__const uint8_t *) (a))[1] & 0xf) == 0x8))
++
++#define IN6_IS_ADDR_MC_GLOBAL(a) \
++	(IN6_IS_ADDR_MULTICAST(a)					      \
++	 && ((((__const uint8_t *) (a))[1] & 0xf) == 0xe))
++#endif
+ 
+ #include <config.h>
+ 
Index: /gs2-extensions/gnome-lib/trunk/src/packages/android-patches/libxml2-android.patch
===================================================================
--- /gs2-extensions/gnome-lib/trunk/src/packages/android-patches/libxml2-android.patch	(revision 26787)
+++ /gs2-extensions/gnome-lib/trunk/src/packages/android-patches/libxml2-android.patch	(revision 26787)
@@ -0,0 +1,14 @@
+--- libxml2-2.9.0/Makefile.in.orig	2013-01-24 13:49:21.399630327 +1300
++++ libxml2-2.9.0/Makefile.in	2013-01-24 13:49:41.920751113 +1300
+@@ -41,9 +41,9 @@
+ 	testSAX$(EXEEXT) testHTML$(EXEEXT) testXPath$(EXEEXT) \
+ 	testURI$(EXEEXT) testThreads$(EXEEXT) testC14N$(EXEEXT) \
+ 	testAutomata$(EXEEXT) testRegexp$(EXEEXT) testReader$(EXEEXT) \
+-	testapi$(EXEEXT) testModule$(EXEEXT) runtest$(EXEEXT) \
++	testapi$(EXEEXT) testModule$(EXEEXT) \
+ 	runsuite$(EXEEXT) testchar$(EXEEXT) testdict$(EXEEXT) \
+-	runxmlconf$(EXEEXT) testrecurse$(EXEEXT) testlimits$(EXEEXT)
++	runxmlconf$(EXEEXT) testlimits$(EXEEXT)
+ bin_PROGRAMS = xmllint$(EXEEXT) xmlcatalog$(EXEEXT)
+ subdir = .
+ DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
