update libglib2 and libsoup
This is a patchset that updates libglib2 and libsoup to the latest stable versions.
SSL/TLS support in libsoup does not any longer use libgcrypt directly but relies on GIO modules that are provided by glib-networking. Thus a new package "glib-networking" is introduced.
Packages using libsoup with SSL support don't need to be changed; the BR2_PACKAGE_LIBSOUP_SSL option takes care of selecting the new glib-networking package and compiling it with libgcrypt support.
There's also a patch included for gamin that is needed to make it compile with the latest libglib2.
PATCH 1/4 gamin: fix compilation with glib 2.30
G_CONST_RETURN is deprecated in glib 2.30 so remove occurences to avoid build failures.
Patch taken from http://patches.openembedded.org/patch/13079/
--- package/gamin/gamin-0.1.10-no-const-return.patch | 57 ++++++++++++++++++++++ 1 files changed, 57 insertions(+), 0 deletions(-) create mode 100644 package/gamin/gamin-0.1.10-no-const-return.patch
package/gamin/gamin-0.1.10-no-const-return.patch new file +57 -0
@@ -0,0 +1,57 @@ +G_CONST_RETURN is deprecated in glib 2.30 so remove to to avoid +build failures. + +Upstream-Status: Pending + +Index: gamin-0.1.10/server/gam_node.c +=================================================================== +--- gamin-0.1.10.orig/server/gam_node.c 2011-10-12 15:25:45.217178314 +0100 ++++ gamin-0.1.10/server/gam_node.c 2011-10-12 15:26:17.807178293 +0100 +@@ -122,7 +122,7 @@ + * it has finished with the string. If it must keep it longer, it + * should makes its own copy. The returned string must not be freed. + */ +-G_CONST_RETURN char * ++const char * + gam_node_get_path(GamNode * node) + { + g_assert(node); +Index: gamin-0.1.10/server/gam_node.h +=================================================================== +--- gamin-0.1.10.orig/server/gam_node.h 2011-10-12 15:25:46.857178269 +0100 ++++ gamin-0.1.10/server/gam_node.h 2011-10-12 15:26:28.637178297 +0100 +@@ -58,7 +58,7 @@ + void gam_node_set_is_dir (GamNode *node, + gboolean is_dir); + +-G_CONST_RETURN char *gam_node_get_path (GamNode *node); ++const char *gam_node_get_path (GamNode *node); + + GList *gam_node_get_subscriptions (GamNode *node); + +Index: gamin-0.1.10/server/gam_subscription.c +=================================================================== +--- gamin-0.1.10.orig/server/gam_subscription.c 2011-10-12 15:25:40.497177525 +0100 ++++ gamin-0.1.10/server/gam_subscription.c 2011-10-12 15:26:39.867178304 +0100 +@@ -141,7 +141,7 @@ + * @param sub the GamSubscription + * @returns The path being monitored. It should not be freed. + */ +-G_CONST_RETURN char * ++const char * + gam_subscription_get_path(GamSubscription * sub) + { + if (sub == NULL) +Index: gamin-0.1.10/server/gam_subscription.h +=================================================================== +--- gamin-0.1.10.orig/server/gam_subscription.h 2011-10-12 15:25:28.507178266 +0100 ++++ gamin-0.1.10/server/gam_subscription.h 2011-10-12 15:25:58.817178285 +0100 +@@ -21,7 +21,7 @@ + + int gam_subscription_get_reqno (GamSubscription *sub); + +-G_CONST_RETURN char *gam_subscription_get_path (GamSubscription *sub); ++const char *gam_subscription_get_path (GamSubscription *sub); + + GamListener *gam_subscription_get_listener (GamSubscription *sub); +
Signature · 1 line
1.7.5.4
PATCH 2/4 libglib2: update to version 2.30.2
In reply to Sven NeumannUpdate to latest stable release and add a dependency on libffi which is needed by GObject.
--- package/libglib2/Config.in | 1 + ...b2-fix-compilation-with-no-builtin-atomic.patch | 25 -------------------- package/libglib2/libglib2.mk | 14 +++++----- 3 files changed, 8 insertions(+), 32 deletions(-) delete mode 100644 package/libglib2/libglib2-fix-compilation-with-no-builtin-atomic.patch
package/libglib2/Config.in +1 -0
@@ -3,6 +3,7 @@ config BR2_PACKAGE_LIBGLIB2 select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT select BR2_PACKAGE_LIBINTL if BR2_NEEDS_GETTEXT select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_LIBFFI select BR2_PACKAGE_ZLIB depends on BR2_USE_WCHAR # gettext help
package/libglib2/libglib2-fix-compilation-with-no-builtin-atomic.patch deleted +0 -25
@@ -1,25 +0,0 @@ -From 58096320ea0888c4fbbff318839017a4d2e82703 Mon Sep 17 00:00:00 2001 -From: Lionel Landwerlin <[email protected]> -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 <[email protected]> ---- - 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 -
package/libglib2/libglib2.mk +7 -7
@@ -3,8 +3,8 @@ # libglib2 # ############################################################# -LIBGLIB2_VERSION_MAJOR = 2.28 -LIBGLIB2_VERSION_MINOR = 8 +LIBGLIB2_VERSION_MAJOR = 2.30 +LIBGLIB2_VERSION_MINOR = 2 LIBGLIB2_VERSION = $(LIBGLIB2_VERSION_MAJOR).$(LIBGLIB2_VERSION_MINOR) LIBGLIB2_SOURCE = glib-$(LIBGLIB2_VERSION).tar.bz2 LIBGLIB2_SITE = http://ftp.gnome.org/pub/gnome/sources/glib/$(LIBGLIB2_VERSION_MAJOR)
@@ -13,7 +13,7 @@ LIBGLIB2_INSTALL_STAGING = YES LIBGLIB2_INSTALL_TARGET = YES LIBGLIB2_INSTALL_STAGING_OPT = DESTDIR=$(STAGING_DIR) LDFLAGS=-L$(STAGING_DIR)/usr/lib install -LIBGLIB2_CONF_ENV = \ +LIBGLIB2_CONF_ENV = \ ac_cv_func_posix_getpwuid_r=yes glib_cv_stack_grows=no \ glib_cv_uscore=no ac_cv_func_strtod=yes \ ac_fsusage_space=yes fu_cv_sys_stat_statfs2_bsize=yes \
@@ -48,17 +48,17 @@ HOST_LIBGLIB2_CONF_OPT = \ --disable-gtk-doc \ --enable-debug=no \ -LIBGLIB2_DEPENDENCIES = host-pkg-config host-libglib2 zlib $(if $(BR2_NEEDS_GETTEXT),gettext libintl) +LIBGLIB2_DEPENDENCIES = host-pkg-config host-libglib2 libffi zlib $(if $(BR2_NEEDS_GETTEXT),gettext libintl) -HOST_LIBGLIB2_DEPENDENCIES = host-pkg-config host-zlib +HOST_LIBGLIB2_DEPENDENCIES = host-pkg-config host-libffi host-zlib ifneq ($(BR2_ENABLE_LOCALE),y) -LIBGLIB2_DEPENDENCIES+=libiconv +LIBGLIB2_DEPENDENCIES += libiconv endif ifeq ($(BR2_PACKAGE_LIBICONV),y) LIBGLIB2_CONF_OPT += --with-libiconv=gnu -LIBGLIB2_DEPENDENCIES+=libiconv +LIBGLIB2_DEPENDENCIES += libiconv endif define LIBGLIB2_REMOVE_DEV_FILES
Signature · 1 line
1.7.5.4
PATCH 2/4 libglib2: update to version 2.30.2
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Sven" == Sven Neumann <[email protected]> writes:
Sven> Update to latest stable release and add a dependency on libffi which Sven> is needed by GObject.
Looks like we'll need to fiddle with _CONF_ENV:
checking for qsort_r... yes
checking if qsort_r uses glibc compatible argument order... configure: error: in `/home/peko/source/buildroot/output/build/libglib2-2.30.2':
configure: error: cannot run test program while cross compiling
See `config.log' for more details
This is default internal toolchain config, ARM A8.
Signature · 1 line
Bye, Peter Korsgaard
PATCH 2/4 libglib2: update to version 2.30.2
Quoted 5 lines · Peter Korsgaard
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Sven" == Sven Neumann <[email protected]> writes:
Sven> Update to latest stable release and add a dependency on libffi which Sven> is needed by GObject.
Quoted 8 lines
Looks like we'll need to fiddle with
_CONF_ENV:checking for
qsort_r... yes
checking ifqsort_ruses glibc compatible argument order... configure: error: in `/home/peko/source/buildroot/output/build/libglib2-2.30.2':
configure: error: cannot run test program while cross compiling
See `config.log' for more detailsThis is default internal toolchain config, ARM A8.
I have just changed my buildroot environment to use the default uclibc configuration and now the build of libglib2 fails (with your build fix applied):
gqsort.c: In function 'g_qsort_with_data':
gqsort.c:65:3: warning: implicit declaration of function 'qsort_r' [-Wimplicit-function-declaration]
The problem is that you we pass glib_cv_have_qsort_r=yes to the configure script now. This is supposed to be only of relevance if we are building for glibc. But the glib configure script looks like this:
dnl don't use AC_CHECK_FUNCS here, otherwise HAVE_QSORT_R will dnl be automatically defined, which we don't want to do dnl until we have checked this function is actually usable AC_CHECK_FUNC([qsort_r])
# BSD has a qsort_r with wrong argument order
if test x$ac_cv_func_qsort_r = xyes ; then
AC_CACHE_CHECK([if qsort_r uses glibc compatible argument order],glib_cv_have_qsort_r, [
AC_RUN_IFELSE([AC_LANG_SOURCE([[
// [test program deleted]
}]])],[glib_cv_have_qsort_r=yes],[glib_cv_have_qsort_r=no])])
fi
if test x$glib_cv_have_qsort_r = xyes ; then
AC_DEFINE(HAVE_QSORT_R, 1, [Define to 1 if you have the 'qsort_r'
function])
fi
So in the end what is tested is the value of glib_cv_have_qsort_r. With your fix this is now set even though uclibc does not provide qsort_r.
Regards,
Sven
PATCH 2/4 libglib2: update to version 2.30.2
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Sven" == Sven Neumann <[email protected]> writes:
Hi,
Sven> So in the end what is tested is the value of glib_cv_have_qsort_r. With Sven> your fix this is now set even though uclibc does not provide qsort_r.
It does, but only from 0.9.33 and onwards. Sorry, didn't notice that it was relatively new. Will fix.
Signature · 1 line
Bye, Peter Korsgaard
PATCH 3/4 glib-networking: new package
In reply to Sven Neumannglib-networking provides network-related GIO modules for glib. It is used by newer versions of libsoup to implement SSL/TLS support.
--- package/Config.in | 1 + package/glib-networking/Config.in | 11 +++++++++++ package/glib-networking/glib-networking.mk | 22 ++++++++++++++++++++++ 3 files changed, 34 insertions(+), 0 deletions(-) create mode 100644 package/glib-networking/Config.in create mode 100644 package/glib-networking/glib-networking.mk
package/Config.in +1 -0
@@ -344,6 +344,7 @@ source "package/jsmin/Config.in" endmenu menu "Networking" +source "package/glib-networking/Config.in" source "package/libcgi/Config.in" source "package/libcgicc/Config.in" source "package/libcurl/Config.in"
package/glib-networking/Config.in new file +11 -0
@@ -0,0 +1,11 @@ +config BR2_PACKAGE_GLIB_NETWORKING + bool "glib-networking" + depends on BR2_USE_WCHAR # glib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT + select BR2_PACKAGE_LIBINTL if BR2_NEEDS_GETTEXT + help + Network-related GIO modules for glib. + +comment "glib-networking requires a toolchain with WCHAR support" + depends on !BR2_USE_WCHAR
package/glib-networking/glib-networking.mk new file +22 -0
@@ -0,0 +1,22 @@ +############################################################# +# +# glib-networking +# +############################################################# + +GLIB_NETWORKING_MAJOR_VERSION = 2.30 +GLIB_NETWORLING_MINOR_VERSION = 2 +GLIB_NETWORKING_VERSION = $(GLIB_NETWORKING_MAJOR_VERSION).$(GLIB_NETWORLING_MINOR_VERSION) +GLIB_NETWORKING_SITE = http://ftp.gnome.org/pub/gnome/sources/glib-networking/$(GLIB_NETWORKING_MAJOR_VERSION) +GLIB_NETWORKING_SOURCE = glib-networking-$(GLIB_NETWORKING_VERSION).tar.xz + +GLIB_NETWORKING_INSTALL_STAGING = YES + +GLIB_NETWORKING_DEPENDENCIES = $(if $(BR2_NEEDS_GETTEXT_IF_LOCALE),gettext libintl) host-pkg-config libglib2 + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +GLIB_NETWORKING_DEPENDENCIES += gnutls +GLIB_NETWORKING_CONF_OPT = --with-libgcrypt-prefix=$(STAGING_DIR)/usr +endif + +$(eval $(call AUTOTARGETS))
Signature · 1 line
1.7.5.4
PATCH 4/4 libsoup: update to version 2.36.1
In reply to Sven NeumannUpdate to latest stable release. SSL support now depends on glib-networking with gnutls support instead of using gnutls directly.
Remove libsoup-CVE-2011-2054.patch, this is fixed upstream.
--- package/libsoup/Config.in | 1 + package/libsoup/libsoup-CVE-2011-2054.patch | 32 --------------------------- package/libsoup/libsoup.mk | 19 ++++++--------- 3 files changed, 9 insertions(+), 43 deletions(-) delete mode 100644 package/libsoup/libsoup-CVE-2011-2054.patch
package/libsoup/Config.in +1 -0
@@ -14,6 +14,7 @@ config BR2_PACKAGE_LIBSOUP config BR2_PACKAGE_LIBSOUP_SSL bool "https support" + select BR2_PACKAGE_GLIB_NETWORKING select BR2_PACKAGE_GNUTLS depends on BR2_PACKAGE_LIBSOUP help
package/libsoup/libsoup-CVE-2011-2054.patch deleted +0 -32
@@ -1,32 +0,0 @@ -From 4617b6ef6dd21931a0153070c5b5ff7ef21b46f8 Mon Sep 17 00:00:00 2001 -From: Dan Winship <[email protected]> -Date: Wed, 29 Jun 2011 10:04:06 -0400 -Subject: [PATCH] SoupServer: fix to not allow smuggling ".." into path - -When SoupServer:raw-paths was set (the default), it was possible to -sneak ".." segments into the path passed to the SoupServerHandler, -which could then end up tricking some handlers into retrieving -arbitrary files from the filesystem. Fix that. - -https://bugzilla.gnome.org/show_bug.cgi?id=653258 - -diff --git a/libsoup/soup-server.c b/libsoup/soup-server.c -index d56efd1..7225337 100644 ---- a/libsoup/soup-server.c -+++ b/libsoup/soup-server.c -@@ -779,6 +779,15 @@ got_headers (SoupMessage *req, SoupClientContext *client) - - uri = soup_message_get_uri (req); - decoded_path = soup_uri_decode (uri->path); -+ -+ if (strstr (decoded_path, "/../") || -+ g_str_has_suffix (decoded_path, "/..")) { -+ /* Introducing new ".." segments is not allowed */ -+ g_free (decoded_path); -+ soup_message_set_status (req, SOUP_STATUS_BAD_REQUEST); -+ return; -+ } -+ - soup_uri_set_path (uri, decoded_path); - g_free (decoded_path); - }
package/libsoup/libsoup.mk +8 -11
@@ -4,10 +4,11 @@ # ############################################################# -LIBSOUP_MAJOR_VERSION:=2.32 -LIBSOUP_VERSION:=$(LIBSOUP_MAJOR_VERSION).2 -LIBSOUP_SOURCE:=libsoup-$(LIBSOUP_VERSION).tar.bz2 -LIBSOUP_SITE:=http://ftp.gnome.org/pub/gnome/sources/libsoup/$(LIBSOUP_MAJOR_VERSION) +LIBSOUP_MAJOR_VERSION = 2.36 +LIBSOUP_MINOR_VERSION = 1 +LIBSOUP_VERSION = $(LIBSOUP_MAJOR_VERSION).$(LIBSOUP_MINOR_VERSION) +LIBSOUP_SOURCE = libsoup-$(LIBSOUP_VERSION).tar.bz2 +LIBSOUP_SITE = http://ftp.gnome.org/pub/gnome/sources/libsoup/$(LIBSOUP_MAJOR_VERSION) LIBSOUP_INSTALL_STAGING = YES LIBSOUP_CONF_ENV = ac_cv_path_GLIB_GENMARSHAL=$(LIBGLIB2_HOST_BINARY)
@@ -16,18 +17,14 @@ ifneq ($(BR2_INET_IPV6),y) LIBSOUP_CONF_ENV += soup_cv_ipv6=no endif -LIBSOUP_CONF_OPT = \ - --disable-explicit-deps \ - --disable-glibtest \ - --without-gnome +LIBSOUP_CONF_OPT = --disable-glibtest --without-gnome LIBSOUP_DEPENDENCIES = $(if $(BR2_NEEDS_GETTEXT_IF_LOCALE),gettext libintl) host-pkg-config host-libglib2 libglib2 libxml2 ifeq ($(BR2_PACKAGE_LIBSOUP_SSL),y) -LIBSOUP_DEPENDENCIES += gnutls -LIBSOUP_CONF_OPT += --enable-ssl --with-libgcrypt-prefix=$(STAGING_DIR)/usr +LIBSOUP_DEPENDENCIES += glib-networking else -LIBSOUP_CONF_OPT += --disable-ssl +LIBSOUP_CONF_OPT += --disable-tls-check endif $(eval $(call AUTOTARGETS))
Signature · 1 line
1.7.5.4
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Sven" == Sven Neumann <[email protected]> writes:
Sven> This is a patchset that updates libglib2 and libsoup to the latest Sven> stable versions.
Sven> SSL/TLS support in libsoup does not any longer use libgcrypt directly Sven> but relies on GIO modules that are provided by glib-networking. Thus Sven> a new package "glib-networking" is introduced.
Sven> Packages using libsoup with SSL support don't need to be changed; Sven> the BR2_PACKAGE_LIBSOUP_SSL option takes care of selecting the new Sven> glib-networking package and compiling it with libgcrypt support.
Sven> There's also a patch included for gamin that is needed to make it Sven> compile with the latest libglib2.
Committed series to next after fixing up glib build, thanks.
Signature · 1 line
Bye, Peter Korsgaard