From: Grazvydas Ignotas Date: Wed, 1 Oct 2014 01:34:26 +0000 (+0300) Subject: gtk+: add 2.20.1 from newer OE X-Git-Tag: sz_173~121 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dffc1066d84fa7bc2cdb5d5c9daa65f5bd3c2e50;p=openembedded.git gtk+: add 2.20.1 from newer OE --- diff --git a/conf/distro/include/angstrom-2008-preferred-versions.inc b/conf/distro/include/angstrom-2008-preferred-versions.inc index aa3e1a4f91..3cfa5ad390 100644 --- a/conf/distro/include/angstrom-2008-preferred-versions.inc +++ b/conf/distro/include/angstrom-2008-preferred-versions.inc @@ -12,9 +12,9 @@ PREFERRED_VERSION_glib-2.0 = "2.40.2" PREFERRED_VERSION_glib-2.0-native = "2.40.2" PREFERRED_VERSION_glibmm = "2.40.2" PREFERRED_VERSION_gst-pulse = "0.9.7" -PREFERRED_VERSION_gtk+ = "2.20.0" -PREFERRED_VERSION_gtk+-native = "2.20.0" -PREFERRED_VERSION_gtkmm = "2.20.0" +PREFERRED_VERSION_gtk+ = "2.20.1" +PREFERRED_VERSION_gtk+-native = "2.20.1" +PREFERRED_VERSION_gtkmm = "2.20.1" PREFERRED_VERSION_hal = "0.5.14" PREFERRED_VERSION_libgemwidget = "1.0" PREFERRED_VERSION_libgpephone = "0.4" diff --git a/recipes/gtk+/files/xkb-ifdef.patch b/recipes/gtk+/files/xkb-ifdef.patch new file mode 100644 index 0000000000..b74d9c9639 --- /dev/null +++ b/recipes/gtk+/files/xkb-ifdef.patch @@ -0,0 +1,24 @@ +commit eff1fe2500f07fa2b4683ff52fe92e39e6487b05 +Author: Matthias Clasen +Date: Fri May 21 12:13:05 2010 -0400 + + Make the !xkb build survive a little longer + + This fixes bug 619114. + +diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c +index c0cbc99..6cded79 100644 +--- a/gdk/x11/gdkdisplay-x11.c ++++ b/gdk/x11/gdkdisplay-x11.c +@@ -690,7 +690,11 @@ gdk_display_beep (GdkDisplay *display) + { + g_return_if_fail (GDK_IS_DISPLAY (display)); + ++#ifdef HAVE_XKB + XkbBell (GDK_DISPLAY_XDISPLAY (display), None, 0, None); ++#else ++ XBell (GDK_DISPLAY_XDISPLAY (display), 0); ++#endif + } + + /** diff --git a/recipes/gtk+/gtk+-2.20.1/cross-nm.patch b/recipes/gtk+/gtk+-2.20.1/cross-nm.patch new file mode 100644 index 0000000000..36e9557009 --- /dev/null +++ b/recipes/gtk+/gtk+-2.20.1/cross-nm.patch @@ -0,0 +1,13 @@ +Index: gtk+-2.20.1/configure.in +=================================================================== +--- gtk+-2.20.1.orig/configure.in 2010-07-10 16:25:40.000000000 -0700 ++++ gtk+-2.20.1/configure.in 2010-07-12 22:08:49.878377002 -0700 +@@ -202,7 +202,7 @@ m4_ifdef([LT_OUTPUT], [LT_OUTPUT]) + AC_SYS_LARGEFILE + + AM_PROG_AS +-AC_PATH_PROG(NM, nm, nm) ++AC_CHECK_PROG(NM, nm, nm) + + dnl Initialize maintainer mode + AM_MAINTAINER_MODE diff --git a/recipes/gtk+/gtk+-2.20.1/gtk-dnd-grab-deadlock-fix.patch b/recipes/gtk+/gtk+-2.20.1/gtk-dnd-grab-deadlock-fix.patch new file mode 100644 index 0000000000..10e84d3bac --- /dev/null +++ b/recipes/gtk+/gtk+-2.20.1/gtk-dnd-grab-deadlock-fix.patch @@ -0,0 +1,24 @@ +commit 96c731cc2dde8a3e4ba542eca4c87ed6154084d2 +Author: Stanislav Brabec +Date: Fri Jul 9 15:11:15 2010 +0200 + + Fix pointer grab dead lock if gtk_drag_begin uses GDK_CURRENT_TIME and + release happens before getting grab. + + For more see https://bugzilla.gnome.org/show_bug.cgi?id=623865 + +diff --git a/gtk/gtkdnd.c b/gtk/gtkdnd.c +index a0d878d..48063a5 100644 +--- a/gtk/gtkdnd.c ++++ b/gtk/gtkdnd.c +@@ -4065,6 +4065,10 @@ gtk_drag_end (GtkDragSourceInfo *info, guint32 time) + pointer = gdk_drag_context_get_device (info->context); + keyboard = gdk_device_get_associated_device (pointer); + ++ /* Prevent grab after release (see bug 623865) */ ++ if (info->grab_time == GDK_CURRENT_TIME) ++ time = GDK_CURRENT_TIME; ++ + if (info->update_idle) + { + g_source_remove (info->update_idle); diff --git a/recipes/gtk+/gtk+-2.20.1/hardcoded_libtool.patch b/recipes/gtk+/gtk+-2.20.1/hardcoded_libtool.patch new file mode 100644 index 0000000000..82fbbac8d7 --- /dev/null +++ b/recipes/gtk+/gtk+-2.20.1/hardcoded_libtool.patch @@ -0,0 +1,31 @@ +Index: gtk+-2.14.2/configure.in +=================================================================== +--- gtk+-2.14.2.orig/configure.in 2008-09-23 15:52:44.000000000 +0100 ++++ gtk+-2.14.2/configure.in 2008-09-23 15:53:51.000000000 +0100 +@@ -401,7 +401,7 @@ + case $enable_explicit_deps in + auto) + export SED +- deplibs_check_method=`(./libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh` ++ deplibs_check_method=`(./$host_alias-libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh` + if test "x$deplibs_check_method" '!=' xpass_all || test "x$enable_static" = xyes ; then + enable_explicit_deps=yes + else +@@ -759,7 +759,7 @@ + dnl Now we check to see if our libtool supports shared lib deps + dnl (in a rather ugly way even) + if $dynworks; then +- pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config" ++ pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} $host_alias-libtool --config" + pixbuf_deplibs_check=`$pixbuf_libtool_config | \ + grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \ + sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'` +@@ -1893,7 +1893,7 @@ + # We are using gmodule-no-export now, but I'm leaving the stripping + # code in place for now, since pango and atk still require gmodule. + export SED +-export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh` ++export_dynamic=`($host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh` + if test -n "$export_dynamic"; then + GDK_PIXBUF_DEP_LIBS=`echo $GDK_PIXBUF_DEP_LIBS | sed -e "s/$export_dynamic//"` + GDK_PIXBUF_XLIB_DEP_LIBS=`echo $GDK_PIXBUF_XLIB_DEP_LIBS | sed -e "s/$export_dynamic//"` diff --git a/recipes/gtk+/gtk+-2.20.1/no-demos.patch b/recipes/gtk+/gtk+-2.20.1/no-demos.patch new file mode 100644 index 0000000000..0fc4c48d1a --- /dev/null +++ b/recipes/gtk+/gtk+-2.20.1/no-demos.patch @@ -0,0 +1,10 @@ +--- gtk+-2.10.1/Makefile.am.orig 2006-08-08 12:37:30.000000000 +0100 ++++ gtk+-2.10.1/Makefile.am 2006-08-08 12:37:48.000000000 +0100 +@@ -1,6 +1,6 @@ + ## Makefile.am for GTK+ + +-SRC_SUBDIRS = gdk-pixbuf gdk gtk modules demos tests perf contrib ++SRC_SUBDIRS = gdk-pixbuf gdk gtk modules tests perf contrib + SUBDIRS = po po-properties $(SRC_SUBDIRS) docs m4macros + + # require automake 1.4 diff --git a/recipes/gtk+/gtk+-2.20.1/run-iconcache.patch b/recipes/gtk+/gtk+-2.20.1/run-iconcache.patch new file mode 100644 index 0000000000..aa1bffa8a7 --- /dev/null +++ b/recipes/gtk+/gtk+-2.20.1/run-iconcache.patch @@ -0,0 +1,19 @@ +--- /tmp/Makefile.am 2009-10-28 18:21:54.000000000 +0100 ++++ gtk+-2.18.3/gtk/Makefile.am 2009-10-28 18:23:07.000000000 +0100 +@@ -1300,11 +1300,11 @@ + ./gtk-update-icon-cache + endif + +-gtkbuiltincache.h: @REBUILD@ stamp-icons +- $(MAKE) $(AM_MAKEFLAGS) gtk-update-icon-cache$(EXEEXT) $(GTK_UPDATE_ICON_CACHE_MANIFEST) +- $(gtk_update_icon_cache_program) --force --ignore-theme-index \ +- --source builtin_icons stock-icons > gtkbuiltincache.h.tmp && \ +- mv gtkbuiltincache.h.tmp gtkbuiltincache.h ++#gtkbuiltincache.h: @REBUILD@ stamp-icons ++# $(MAKE) $(AM_MAKEFLAGS) gtk-update-icon-cache$(EXEEXT) $(GTK_UPDATE_ICON_CACHE_MANIFEST) ++# $(gtk_update_icon_cache_program) --force --ignore-theme-index \ ++# --source builtin_icons stock-icons > gtkbuiltincache.h.tmp && \ ++# mv gtkbuiltincache.h.tmp gtkbuiltincache.h + + EXTRA_DIST += \ + $(STOCK_ICONS) \ diff --git a/recipes/gtk+/gtk+-2.20.1/toggle-font.diff b/recipes/gtk+/gtk+-2.20.1/toggle-font.diff new file mode 100644 index 0000000000..59ad150b2f --- /dev/null +++ b/recipes/gtk+/gtk+-2.20.1/toggle-font.diff @@ -0,0 +1,100 @@ +Index: gtk/gtkcellrenderertoggle.c +=================================================================== +--- gtk/gtkcellrenderertoggle.c (revision 18523) ++++ gtk/gtkcellrenderertoggle.c (working copy) +@@ -71,6 +71,8 @@ + PROP_INDICATOR_SIZE + }; + ++/* This is a hard-coded default which promptly gets overridden by a size ++ calculated from the font size. */ + #define TOGGLE_WIDTH 13 + + static guint toggle_cell_signals[LAST_SIGNAL] = { 0 }; +@@ -80,8 +82,9 @@ + typedef struct _GtkCellRendererTogglePrivate GtkCellRendererTogglePrivate; + struct _GtkCellRendererTogglePrivate + { +- gint indicator_size; +- ++ gint indicator_size; /* This is the real size */ ++ gint override_size; /* This is the size set from the indicator-size property */ ++ GtkWidget *cached_widget; + guint inconsistent : 1; + }; + +@@ -104,6 +107,7 @@ + GTK_CELL_RENDERER (celltoggle)->ypad = 2; + + priv->indicator_size = TOGGLE_WIDTH; ++ priv->override_size = 0; + priv->inconsistent = FALSE; + } + +@@ -210,7 +214,7 @@ + g_value_set_boolean (value, celltoggle->radio); + break; + case PROP_INDICATOR_SIZE: +- g_value_set_int (value, priv->indicator_size); ++ g_value_set_int (value, priv->override_size ? priv->override_size : priv->indicator_size); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); +@@ -245,7 +249,7 @@ + celltoggle->radio = g_value_get_boolean (value); + break; + case PROP_INDICATOR_SIZE: +- priv->indicator_size = g_value_get_int (value); ++ priv->override_size = g_value_get_int (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); +@@ -273,6 +277,27 @@ + } + + static void ++on_widget_style_set (GtkWidget *widget, GtkStyle *previous, gpointer user_data) ++{ ++ GtkCellRendererTogglePrivate *priv = user_data; ++ PangoContext *context; ++ PangoFontMetrics *metrics; ++ int height; ++ ++ context = gtk_widget_get_pango_context (widget); ++ metrics = pango_context_get_metrics (context, ++ widget->style->font_desc, ++ pango_context_get_language (context)); ++ ++ height = pango_font_metrics_get_ascent (metrics) + ++ pango_font_metrics_get_descent (metrics); ++ ++ pango_font_metrics_unref (metrics); ++ ++ priv->indicator_size = PANGO_PIXELS (height * 0.85); ++} ++ ++static void + gtk_cell_renderer_toggle_get_size (GtkCellRenderer *cell, + GtkWidget *widget, + GdkRectangle *cell_area, +@@ -287,6 +312,20 @@ + + priv = GTK_CELL_RENDERER_TOGGLE_GET_PRIVATE (cell); + ++ if (priv->override_size) { ++ priv->indicator_size = priv->override_size; ++ } else if (priv->cached_widget != widget) { ++ if (priv->cached_widget) { ++ g_object_remove_weak_pointer (widget, &priv->cached_widget); ++ g_signal_handlers_disconnect_by_func (priv->cached_widget, on_widget_style_set, priv); ++ } ++ priv->cached_widget = widget; ++ g_object_add_weak_pointer (widget, &priv->cached_widget); ++ g_signal_connect (widget, "style-set", on_widget_style_set, priv); ++ ++ on_widget_style_set (widget, NULL, priv); ++ } ++ + calc_width = (gint) cell->xpad * 2 + priv->indicator_size; + calc_height = (gint) cell->ypad * 2 + priv->indicator_size; + diff --git a/recipes/gtk+/gtk+.inc b/recipes/gtk+/gtk+.inc index b30a4f560b..f2f2228bca 100644 --- a/recipes/gtk+/gtk+.inc +++ b/recipes/gtk+/gtk+.inc @@ -16,7 +16,7 @@ SRC_URI = "http://download.gnome.org/sources/gtk+/${MAJ_VER}/gtk+-${PV}.tar.bz2; file://xsettings.patch;patch=1 \ " -INC_PR = "r8" +INC_PR = "r10" inherit autotools pkgconfig @@ -33,7 +33,6 @@ FILES_${PN} = "${bindir}/gdk-pixbuf-query-loaders \ ${libdir}/lib*.so.* \ ${datadir}/themes ${sysconfdir} \ ${libdir}/gtk-2.0/${LIBV}/engines/libpixmap.so" -RDEPENDS_${PN} = "hicolor-icon-theme" FILES_${PN}-dev += " \ ${datadir}/gtk-2.0/include \ @@ -48,11 +47,13 @@ FILES_${PN}-dbg += " \ ${libdir}/gtk-2.0/${LIBV}/engines/.debug/* \ ${libdir}/gtk-2.0/${LIBV}/printbackends/.debug/*" -NEATSTUFF = " ttf-dejavu-sans gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg gdk-pixbuf-loader-gif gdk-pixbuf-loader-xpm " +NEATSTUFF = "ttf-dejavu-sans gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg gdk-pixbuf-loader-gif gdk-pixbuf-loader-xpm" +NEATSTUFF_append_linux = " glibc-gconv-iso8859-1" +NEATSTUFF_append_linux-gnueabi = " glibc-gconv-iso8859-1" -RRECOMMENDS_${PN} = " ${NEATSTUFF} " -RRECOMMENDS_${PN}_linux = " ${NEATSTUFF} glibc-gconv-iso8859-1 " -RRECOMMENDS_${PN}_linux-gnueabi = " ${NEATSTUFF} glibc-gconv-iso8859-1" +# Only add runtime dependencies for target recipe +RDEPENDS_${PN} += "${@['', 'hicolor-icon-theme']['${PN}' == '${BPN}']}" +RRECOMMENDS_${PN} += "${@['', '${NEATSTUFF}']['${PN}' == '${BPN}']}" do_install_append () { mkdir -p ${D}${libdir}/gtk-2.0/include @@ -66,21 +67,26 @@ do_install_append () { rm -f ${D}${libdir}/gtk-2.0/*/*.la ${D}${libdir}/gtk-2.0/${LIBV}/*/*.la } -do_install_virtclass-native () { - autotools_do_install - - mkdir -p ${D}${libdir}/gtk-2.0/include - install -m 0644 gdk/gdkconfig.h ${D}${libdir}/gtk-2.0/include/gdkconfig.h - # Copy over all headers, since the maemo stuff needs access to the private api. *sigh* - cp gtk/*.h ${D}${includedir}/gtk-2.0/gtk/ - - install -m 0644 m4macros/gtk-2.0.m4 ${STAGING_DATADIR}/aclocal/ - - install -d ${D}${sysconfdir}/gtk-2.0 - rm -f ${D}${libdir}/gtk-2.0/*/*.la ${D}${libdir}/gtk-2.0/${LIBV}/*/*.la +do_install_append_virtclass-native () { + ${D}${bindir}/gdk-pixbuf-query-loaders \ + ${D}${libdir}/gtk-2.0/${LIBV}/loaders/*.so | \ + sed -e's,${D},,' > \ + ${D}${sysconfdir}/gtk-2.0/gdk-pixbuf.loaders +} - mkdir -p "${D}${sysconfdir}/gtk-2.0" - ${B}/gdk-pixbuf/gdk-pixbuf-query-loaders ${B}/gdk-pixbuf/.libs/*.so | sed 's:${B}/gdk-pixbuf/.libs:${STAGING_LIBDIR}/gtk-2.0/${LIBV}/loaders:' > "${D}${sysconfdir}/gtk-2.0/gdk-pixbuf.loaders" +SYSROOT_PREPROCESS_FUNCS_append_virtclass-native = " gdk_pixbuf_fixup" + +_SYSROOT_DEST = "${SYSROOT_DESTDIR}${STAGING_DIR_HOST}" +gdk_pixbuf_fixup () { + create_wrapper ${_SYSROOT_DEST}${bindir}/gdk-pixbuf-query-loaders \ + LD_LIBRARY_PATH=${STAGING_LIBDIR} \ + GDK_PIXBUF_MODULEDIR=${libdir}/gtk-2.0/${LIBV}/loaders + ${_SYSROOT_DEST}${bindir}/gdk-pixbuf-query-loaders \ + ${_SYSROOT_DEST}${libdir}/gtk-2.0/${LIBV}/loaders/*.so | \ + sed -e's,${_SYSROOT_DEST},,' > \ + ${_SYSROOT_DEST}${sysconfdir}/gtk-2.0/gdk-pixbuf.loaders + create_wrapper ${_SYSROOT_DEST}${bindir}/gdk-pixbuf-csource \ + GDK_PIXBUF_MODULE_FILE=${sysconfdir}/gtk-2.0/gdk-pixbuf.loaders } postinst_prologue() { diff --git a/recipes/gtk+/gtk+_2.20.1.bb b/recipes/gtk+/gtk+_2.20.1.bb new file mode 100644 index 0000000000..1b341978fe --- /dev/null +++ b/recipes/gtk+/gtk+_2.20.1.bb @@ -0,0 +1,68 @@ +require gtk+.inc + +LICENSE = "LGPLv2 LGPLv2+ LGPLv2.1+" + +SRC_URI_append_virtclass-native = " file://no-demos.patch \ +" +SRC_URI_append = "file://gtk-dnd-grab-deadlock-fix.patch;patch=1 \ + file://cross-nm.patch;patch=1 \ + file://xkb-ifdef.patch;patch=1 \ + " + +SRC_URI[gtk.md5sum] = "53e6f3a93bd22934878fc4a4a34c68aa" +SRC_URI[gtk.sha256sum] = "0e081731d21e34ff45c82199490c2889504fa8b3c7e117c043e82ababaec0f65" + +PR = "${INC_PR}.5" + +BBCLASSEXTEND = "native" + +ARM_INSTRUCTION_SET = "arm" + +DEPENDS_virtclass-native = "libpng-native atk-native pango-native cairo-native libxrender-native libxext-native libgcrypt-native" +PROVIDES_virtclass-native = "gdk-pixbuf-csource-native" + +# Enable xkb selectively +XKBTOGGLE = " --disable-xkb" +XKBTOGGLE_angstrom = "" + +EXTRA_OECONF = " --enable-introspection=no --with-libtiff ${XKBTOGGLE} --disable-glibtest gio_can_sniff=yes" +EXTRA_OECONF_append_virtclass-native = " --without-libtiff --without-libjpeg --disable-cups" + +PACKAGES_DYNAMIC = "gtk-module-* gdk-pixbuf-loader-* gtk-immodule-* gtk-printbackend-*" + +python populate_packages_prepend () { + import os.path + + prologue = bb.data.getVar("postinst_prologue", d, 1) + + gtk_libdir = bb.data.expand('${libdir}/gtk-2.0/${LIBV}', d) + loaders_root = os.path.join(gtk_libdir, 'loaders') + immodules_root = os.path.join(gtk_libdir, 'immodules') + printmodules_root = os.path.join(gtk_libdir, 'printbackends'); + modules_root = bb.data.expand('${libdir}/gtk-2.0/modules/',d) + + do_split_packages(d, loaders_root, '^libpixbufloader-(.*)\.so$', 'gdk-pixbuf-loader-%s', 'GDK pixbuf loader for %s', prologue + 'gdk-pixbuf-query-loaders > /etc/gtk-2.0/gdk-pixbuf.loaders', extra_depends='') + do_split_packages(d, immodules_root, '^im-(.*)\.so$', 'gtk-immodule-%s', 'GTK input module for %s', prologue + 'gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules', extra_depends='') + do_split_packages(d, printmodules_root, '^libprintbackend-(.*)\.so$', 'gtk-printbackend-%s', 'GTK printbackend module for %s', extra_depends='') + do_split_packages(d, modules_root, '^lib(.*)\.so$', 'gtk-module-%s', 'GTK module for %s', extra_depends='') + + if (bb.data.getVar('DEBIAN_NAMES', d, 1)): + bb.data.setVar('PKG_${PN}', 'libgtk-2.0', d) +} + +# gail is part of gtk+ since gtk+-2.13.0 (targetting >=GNOME 2.23): +PROVIDES = "virtual/gail" +RPROVIDES_${PN} = "libgailutil18" +RCONFLICTS_${PN} = "libgailutil18" +RREPLACES_${PN} = "libgailutil18" +RPROVIDES_${PN}-dev = "libgailutil-dev" +RCONFLICTS_${PN}-dev = "libgailutil-dev" +RREPLACES_${PN}-dev = "libgailutil-dev" +RPROVIDES_${PN}-doc = "libgailutil-doc" +RCONFLICTS_${PN}-doc = "libgailutil-doc" +RREPLACES_${PN}-doc = "libgailutil-doc" +RPROVIDES_${PN}-dbg = "libgailutil-dbg" +RCONFLICTS_${PN}-dbg = "libgailutil-dbg" +RREPLACES_${PN}-dbg = "libgailutil-dbg" +# FIXME: replace locales as well +