[oe] [PATCH 1/4] glib-2.0: add 2.28.0, needed by newer libsoup
Khem Raj
raj.khem at gmail.com
Tue Feb 15 21:16:16 UTC 2011
On Tue, Feb 15, 2011 at 1:02 PM, Martin Jansa <martin.jansa at gmail.com> wrote:
> Signed-off-by: Martin Jansa <Martin.Jansa at gmail.com>
You have to reset PR to 0 otherwise ok
Acked-by: Khem Raj <raj.khem at gmail.com>
> ---
> .../60_wait-longer-for-threads-to-die.patch | 26 ++++++
> .../glib-2.0/glib-2.0-2.28.0/configure-ipv6.patch | 92 ++++++++++++++++++++
> .../glib-2.0-2.28.0/configure-libtool.patch | 30 +++++++
> .../glib-2.0-2.28.0/g_once_init_enter.patch | 11 +++
> .../gatomic-proper-pointer-get-cast.patch | 12 +++
> ...b2-fix-compilation-with-no-builtin-atomic.patch | 25 ++++++
> recipes/glib-2.0/glib-2.0_2.28.0.bb | 76 ++++++++++++++++
> 7 files changed, 272 insertions(+), 0 deletions(-)
> create mode 100644 recipes/glib-2.0/glib-2.0-2.28.0/60_wait-longer-for-threads-to-die.patch
> create mode 100644 recipes/glib-2.0/glib-2.0-2.28.0/configure-ipv6.patch
> create mode 100644 recipes/glib-2.0/glib-2.0-2.28.0/configure-libtool.patch
> create mode 100644 recipes/glib-2.0/glib-2.0-2.28.0/g_once_init_enter.patch
> create mode 100644 recipes/glib-2.0/glib-2.0-2.28.0/gatomic-proper-pointer-get-cast.patch
> create mode 100644 recipes/glib-2.0/glib-2.0-2.28.0/libglib2-fix-compilation-with-no-builtin-atomic.patch
> create mode 100644 recipes/glib-2.0/glib-2.0_2.28.0.bb
>
> diff --git a/recipes/glib-2.0/glib-2.0-2.28.0/60_wait-longer-for-threads-to-die.patch b/recipes/glib-2.0/glib-2.0-2.28.0/60_wait-longer-for-threads-to-die.patch
> new file mode 100644
> index 0000000..02fe9ff
> --- /dev/null
> +++ b/recipes/glib-2.0/glib-2.0-2.28.0/60_wait-longer-for-threads-to-die.patch
> @@ -0,0 +1,26 @@
> +--- glib/tests/threadpool-test.c.old 2008-02-12 06:11:21.000000000 +0100
> ++++ glib/tests/threadpool-test.c 2008-02-12 06:11:52.000000000 +0100
> +@@ -5,8 +5,8 @@
> +
> + #include <glib.h>
> +
> +-#define DEBUG_MSG(x)
> +-/* #define DEBUG_MSG(args) g_printerr args ; g_printerr ("\n"); */
> ++/* #define DEBUG_MSG(x) */
> ++#define DEBUG_MSG(args) g_printerr args ; g_printerr ("\n");
> +
> + #define WAIT 5 /* seconds */
> + #define MAX_THREADS 10
> +@@ -124,10 +124,10 @@
> + DEBUG_MSG (("[unused] stopping unused threads"));
> + g_thread_pool_stop_unused_threads ();
> +
> +- DEBUG_MSG (("[unused] waiting ONE second for threads to die"));
> ++ DEBUG_MSG (("[unused] waiting FIVE second for threads to die"));
> +
> + /* Some time for threads to die. */
> +- g_usleep (G_USEC_PER_SEC);
> ++ g_usleep (5 * G_USEC_PER_SEC);
> +
> + DEBUG_MSG (("[unused] stopped idle threads, %d remain, %d threads still exist",
> + g_thread_pool_get_num_unused_threads (),
> diff --git a/recipes/glib-2.0/glib-2.0-2.28.0/configure-ipv6.patch b/recipes/glib-2.0/glib-2.0-2.28.0/configure-ipv6.patch
> new file mode 100644
> index 0000000..548e0dc
> --- /dev/null
> +++ b/recipes/glib-2.0/glib-2.0-2.28.0/configure-ipv6.patch
> @@ -0,0 +1,92 @@
> +From a619a217e3e5aa5345db631213aec5a3684a3001 Mon Sep 17 00:00:00 2001
> +Subject: [PATCH] autodetect in6addr_{any,loopback} availability
> +
> +Fixes linking error on systems which choose not to support ipv6:
> +./.libs/libgio-2.0.so: undefined reference to `in6addr_loopback'
> +./.libs/libgio-2.0.so: undefined reference to `in6addr_any'
> +
> +Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop at gmail.com>
> +---
> + configure.ac | 31 +++++++++++++++++++++++++++++++
> + gio/ginetaddress.c | 16 ++++++++++++++--
> + 2 files changed, 45 insertions(+), 2 deletions(-)
> +
> +diff --git a/configure.ac b/configure.ac
> +index 7114014..023db49 100644
> +--- a/configure.ac
> ++++ b/configure.ac
> +@@ -1019,6 +1019,37 @@ if test $glib_native_win32 = no; then
> + AC_SUBST(LIBASYNCNS_LIBADD)
> + fi
> +
> ++dnl handle --disable-ipv6
> ++AC_ARG_ENABLE(ipv6, AC_HELP_STRING([--disable-ipv6],[Disable IPv6 support]))
> ++if test "$ipv6" != "no"; then
> ++ AC_DEFINE(HAVE_IPV6, 1, [Define if IPv6 is available])
> ++
> ++ AC_MSG_CHECKING([for struct in6addr_any])
> ++ AC_TRY_LINK(
> ++ [#define IN_AUTOCONF
> ++ #include <sys/types.h>
> ++ #include <sys/socket.h>
> ++ #include <netinet/in.h>],
> ++ [struct in6_addr a = in6addr_any;
> ++ return a.s6_addr[0];],
> ++ [AC_MSG_RESULT(yes)
> ++ AC_DEFINE(HAVE_IN6ADDR_ANY, 1, [Define if in6addr_any is available])],
> ++ [AC_MSG_RESULT(no)]
> ++ )
> ++ AC_MSG_CHECKING([for struct in6addr_loopback])
> ++ AC_TRY_LINK(
> ++ [#define IN_AUTOCONF
> ++ #include <sys/types.h>
> ++ #include <sys/socket.h>
> ++ #include <netinet/in.h>],
> ++ [struct in6_addr a = in6addr_loopback;
> ++ return a.s6_addr[0];],
> ++ [AC_MSG_RESULT(yes)
> ++ AC_DEFINE(HAVE_IN6ADDR_LOOPBACK, 1, [Define if in6addr_loopback is available])],
> ++ [AC_MSG_RESULT(no)]
> ++ )
> ++fi
> ++
> + case $host in
> + *-*-solaris* )
> + AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, Needed to get declarations for msg_control and msg_controllen on Solaris)
> +diff --git a/gio/ginetaddress.c b/gio/ginetaddress.c
> +index 0f67e4f..ed29be2 100644
> +--- a/gio/ginetaddress.c
> ++++ b/gio/ginetaddress.c
> +@@ -484,7 +484,13 @@ g_inet_address_new_loopback (GSocketFamily family)
> + return g_inet_address_new_from_bytes (addr, family);
> + }
> + else
> +- return g_inet_address_new_from_bytes (in6addr_loopback.s6_addr, family);
> ++ {
> ++#ifdef HAVE_IN6ADDR_LOOPBACK
> ++ return g_inet_address_new_from_bytes (in6addr_loopback.s6_addr, family);
> ++#else
> ++ return NULL;
> ++#endif
> ++ }
> + }
> +
> + /**
> +@@ -511,7 +517,13 @@ g_inet_address_new_any (GSocketFamily family)
> + return g_inet_address_new_from_bytes (addr, family);
> + }
> + else
> +- return g_inet_address_new_from_bytes (in6addr_any.s6_addr, family);
> ++ {
> ++#ifdef HAVE_IN6ADDR_ANY
> ++ return g_inet_address_new_from_bytes (in6addr_any.s6_addr, family);
> ++#else
> ++ return NULL;
> ++#endif
> ++ }
> + }
> +
> +
> +--
> +1.7.2.3
> +
> diff --git a/recipes/glib-2.0/glib-2.0-2.28.0/configure-libtool.patch b/recipes/glib-2.0/glib-2.0-2.28.0/configure-libtool.patch
> new file mode 100644
> index 0000000..e4e9d21
> --- /dev/null
> +++ b/recipes/glib-2.0/glib-2.0-2.28.0/configure-libtool.patch
> @@ -0,0 +1,30 @@
> +diff -uNr glib-2.28.0.orig//configure.ac glib-2.28.0/configure.ac
> +--- glib-2.28.0.orig//configure.ac 2011-02-08 05:53:25.000000000 +0100
> ++++ glib-2.28.0/configure.ac 2011-02-15 15:07:54.683976837 +0100
> +@@ -1378,7 +1378,7 @@
> + G_MODULE_LDFLAGS=
> + else
> + export SED
> +- G_MODULE_LDFLAGS=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
> ++ G_MODULE_LDFLAGS=`($host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
> + fi
> + dnl G_MODULE_IMPL= don't reset, so cmd-line can override
> + G_MODULE_NEED_USCORE=0
> +@@ -1443,7 +1443,7 @@
> + LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
> + dnl *** check for OSF1/5.0 RTLD_GLOBAL brokenness
> + echo "void glib_plugin_test(void) { }" > plugin.c
> +- ${SHELL} ./libtool --mode=compile ${CC} -shared \
> ++ ${SHELL} $host_alias-libtool --mode=compile ${CC} -shared \
> + -export-dynamic -o plugin.o plugin.c 2>&1 >/dev/null
> + AC_CACHE_CHECK([for RTLD_GLOBAL brokenness],
> + glib_cv_rtldglobal_broken,[
> +@@ -1517,7 +1517,7 @@
> +
> + AC_MSG_CHECKING(for the suffix of module shared libraries)
> + export SED
> +-shrext_cmds=`./libtool --config | grep '^shrext_cmds='`
> ++shrext_cmds=`$host_alias-libtool --config | grep '^shrext_cmds='`
> + eval $shrext_cmds
> + module=yes eval std_shrext=$shrext_cmds
> + # chop the initial dot
> diff --git a/recipes/glib-2.0/glib-2.0-2.28.0/g_once_init_enter.patch b/recipes/glib-2.0/glib-2.0-2.28.0/g_once_init_enter.patch
> new file mode 100644
> index 0000000..58e4108
> --- /dev/null
> +++ b/recipes/glib-2.0/glib-2.0-2.28.0/g_once_init_enter.patch
> @@ -0,0 +1,11 @@
> +--- glib-2.22.1/glib/gthread.h.orig 2009-10-13 22:53:23.000000000 +0200
> ++++ glib-2.22.1/glib/gthread.h 2009-10-13 23:34:59.000000000 +0200
> +@@ -341,7 +341,7 @@
> + G_INLINE_FUNC gboolean
> + g_once_init_enter (volatile gsize *value_location)
> + {
> +- if G_LIKELY ((gpointer) g_atomic_pointer_get (value_location) != NULL)
> ++ if G_LIKELY ((gpointer) g_atomic_pointer_get ((volatile gpointer *)value_location) != NULL)
> + return FALSE;
> + else
> + return g_once_init_enter_impl (value_location);
> diff --git a/recipes/glib-2.0/glib-2.0-2.28.0/gatomic-proper-pointer-get-cast.patch b/recipes/glib-2.0/glib-2.0-2.28.0/gatomic-proper-pointer-get-cast.patch
> new file mode 100644
> index 0000000..5a8e37d
> --- /dev/null
> +++ b/recipes/glib-2.0/glib-2.0-2.28.0/gatomic-proper-pointer-get-cast.patch
> @@ -0,0 +1,12 @@
> +diff -uri glib-2.26.1.orig/glib/gatomic.h glib-2.26.1/glib/gatomic.h
> +--- glib-2.26.1.orig/glib/gatomic.h 2010-07-11 05:56:45.000000000 +0200
> ++++ glib-2.26.1/glib/gatomic.h 2010-12-01 16:20:33.140009635 +0100
> +@@ -70,7 +70,7 @@
> + (g_atomic_int_set) ((volatile gint G_GNUC_MAY_ALIAS *) (volatile void *) (atomic), (newval)))
> + # define g_atomic_pointer_get(atomic) \
> + ((void) sizeof (gchar [sizeof (*(atomic)) == sizeof (gpointer) ? 1 : -1]), \
> +- (g_atomic_pointer_get) ((volatile gpointer G_GNUC_MAY_ALIAS *) (volatile void *) (atomic)))
> ++ (g_atomic_pointer_get) ((volatile gpointer G_GNUC_MAY_ALIAS *) (volatile void G_GNUC_MAY_ALIAS *) (atomic)))
> + # define g_atomic_pointer_set(atomic, newval) \
> + ((void) sizeof (gchar [sizeof (*(atomic)) == sizeof (gpointer) ? 1 : -1]), \
> + (g_atomic_pointer_set) ((volatile gpointer G_GNUC_MAY_ALIAS *) (volatile void *) (atomic), (newval)))
> diff --git a/recipes/glib-2.0/glib-2.0-2.28.0/libglib2-fix-compilation-with-no-builtin-atomic.patch b/recipes/glib-2.0/glib-2.0-2.28.0/libglib2-fix-compilation-with-no-builtin-atomic.patch
> new file mode 100644
> index 0000000..39c0510
> --- /dev/null
> +++ b/recipes/glib-2.0/glib-2.0-2.28.0/libglib2-fix-compilation-with-no-builtin-atomic.patch
> @@ -0,0 +1,25 @@
> +From 58096320ea0888c4fbbff318839017a4d2e82703 Mon Sep 17 00:00:00 2001
> +From: Lionel Landwerlin <llandwerlin at gmail.com>
> +Date: Sat, 6 Nov 2010 14:56:15 +0100
> +Subject: [PATCH] glib: fix compilation with no builtin atomic operations compilers
> +
> +Signed-off-by: Lionel Landwerlin <llandwerlin at gmail.com>
> +---
> + glib/gatomic.c | 1 +
> + 1 files changed, 1 insertions(+), 0 deletions(-)
> +
> +diff --git a/glib/gatomic.c b/glib/gatomic.c
> +index 845c866..01468ce 100644
> +--- a/glib/gatomic.c
> ++++ b/glib/gatomic.c
> +@@ -881,6 +881,7 @@ g_atomic_pointer_compare_and_exchange (volatile gpointer G_GNUC_MAY_ALIAS *atomi
> + #endif /* DEFINE_WITH_WIN32_INTERLOCKED */
> +
> + #ifdef DEFINE_WITH_MUTEXES
> ++# include "gthread.h"
> + /* We have to use the slow, but safe locking method */
> + static GMutex *g_atomic_mutex;
> +
> +--
> +1.7.2.3
> +
> diff --git a/recipes/glib-2.0/glib-2.0_2.28.0.bb b/recipes/glib-2.0/glib-2.0_2.28.0.bb
> new file mode 100644
> index 0000000..b7f6b3e
> --- /dev/null
> +++ b/recipes/glib-2.0/glib-2.0_2.28.0.bb
> @@ -0,0 +1,76 @@
> +DESCRIPTION = "GLib is a general-purpose utility library, \
> +which provides many useful data types, macros, \
> +type conversions, string utilities, file utilities, a main \
> +loop abstraction, and so on. It works on many \
> +UNIX-like platforms, Windows, OS/2 and BeOS."
> +LICENSE = "LGPLv2+"
> +SECTION = "libs"
> +PRIORITY = "optional"
> +DEPENDS = "glib-2.0-native gtk-doc zlib"
> +DEPENDS_virtclass-native = "gettext-native gtk-doc-native \
> + pkgconfig-native"
> +
> +PR = "r3"
> +
> +SRC_URI = "\
> + http://ftp.gnome.org/pub/GNOME/sources/glib/2.28/glib-${PV}.tar.bz2;name=archive \
> + file://glibconfig-sysdefs.h \
> + file://configure-libtool.patch \
> + file://g_once_init_enter.patch \
> + file://gatomic-proper-pointer-get-cast.patch \
> + file://60_wait-longer-for-threads-to-die.patch \
> + file://libglib2-fix-compilation-with-no-builtin-atomic.patch \
> + file://configure-ipv6.patch \
> +"
> +
> +SRC_URI[archive.md5sum] = "51dbe36bc03a29a1f9bf6b74fb4a6926"
> +SRC_URI[archive.sha256sum] = "0605f538e5c022c237c97a34496979ba71d33c7b10b8d8edb84435498a651fb3"
> +
> +inherit autotools gettext
> +
> +S = "${WORKDIR}/glib-${PV}"
> +
> +EXTRA_OECONF = "--disable-debug "
> +
> +# Add and entry for your favourite arch if your (g)libc has a sane printf
> +EXTRA_OECONF_append_glibc_arm = " --enable-included-printf=no "
> +
> +do_configure_prepend () {
> + install -m 0644 ${WORKDIR}/glibconfig-sysdefs.h .
> + sed -i -e "s:TEST_PROGS += gdbus-serialization::g" ${S}/gio/tests/Makefile.am
> +}
> +
> +do_install_append() {
> + sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g ${D}${bindir}/glib-mkenums || true
> +}
> +
> +EXTRA_OECONF_virtclass-native = ""
> +
> +do_configure_prepend_virtclass-native() {
> + if [ -e ${S}/${TARGET_SYS}-libtool ] ; then
> + echo "${TARGET_SYS}-libtool already present"
> + else
> + cp ${STAGING_BINDIR}/${TARGET_SYS}-libtool ${S}
> + fi
> +
> +}
> +
> +BBCLASSEXTEND = "native"
> +
> +PACKAGES =+ "gobject-2.0 gmodule-2.0 gthread-2.0 gio-2.0 glib-2.0-utils "
> +LEAD_SONAME = "libglib-2.0.*"
> +FILES_glib-2.0-utils = "${bindir}/*"
> +FILES_${PN} = "${libdir}/lib*so.* ${libdir}/gio/modules/*.so"
> +FILES_${PN}-dev += "${libdir}/glib-2.0 ${datadir}/glib-2.0 ${libdir}/gio/modules/*.la"
> +FILES_${PN}-dbg += "${libdir}/gio/modules/.debug"
> +FILES_gmodule-2.0 = "${libdir}/libgmodule-2.0.so.*"
> +FILES_gobject-2.0 = "${libdir}/libgobject-2.0.so.*"
> +FILES_gio-2.0 = "${libdir}/libgio-2.0.so.*"
> +FILES_gthread-2.0 = "${libdir}/libgthread-2.0.so.*"
> +
> +# Let various glib components end up in glib package
> +# for compatibility (with binary packages from Maemo).
> +FILES_gthread-2.0_chinook-compat = ""
> +FILES_gmodule-2.0_chinook-compat = ""
> +FILES_gobject-2.0_chinook-compat = ""
> +FILES_gio-2.0_chinook-compat = ""
> --
> 1.7.4.1
>
>
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
>
More information about the Openembedded-devel
mailing list