gtk-icon-utils: Rename, upgrade, add binary

* Rename from gtk-update-icon-cache to gtk-icon-utils to better
  reflect the content. Fix references in other recipes and classes
* Upgrade to GTK+ 3.16.4
* Add gtk-encode-symbolic-svg binary: it is used by icon themes
  (e.g. Adwaita) to generate png versions of svg icons.
* Depend on librsvg-native for gtk-encode-symbolic-svg
* Add a patch that removes Gdk dependency from gtk-encode-symbolic-svg:
  this way the native build stays slim.

(From OE-Core rev: 5f4fe36f735ff8b97c5112b16bd90e794053573d)

Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Jussi Kukkonen 2015-06-09 16:46:38 +03:00 committed by Richard Purdie
parent 5863080b29
commit 5e7f26d082
5 changed files with 167 additions and 49 deletions

View File

@ -1,6 +1,6 @@
FILES_${PN} += "${datadir}/icons/hicolor"
DEPENDS += "${@['hicolor-icon-theme', '']['${BPN}' == 'hicolor-icon-theme']} gtk-update-icon-cache-native"
DEPENDS += "${@['hicolor-icon-theme', '']['${BPN}' == 'hicolor-icon-theme']} gtk-icon-utils-native"
gtk_icon_cache_postinst() {
if [ "x$D" != "x" ]; then

View File

@ -815,7 +815,7 @@ def setscene_depvalid(task, taskdependees, notneeded, d):
return x.endswith("-native") or "-cross-" in x or "-crosssdk" in x
def isPostInstDep(x):
if x in ["qemu-native", "gdk-pixbuf-native", "qemuwrapper-cross", "depmodwrapper-cross", "systemd-systemctl-native", "gtk-update-icon-cache-native"]:
if x in ["qemu-native", "gdk-pixbuf-native", "qemuwrapper-cross", "depmodwrapper-cross", "systemd-systemctl-native", "gtk-icon-utils-native"]:
return True
return False

View File

@ -0,0 +1,63 @@
SUMMARY = "Native icon utils for GTK+"
DESCRIPTION = "gtk-update-icon-cache and gtk-encode-symbolic-svg built from GTK+ natively, for build time and on-host postinst script execution."
SECTION = "libs"
DEPENDS = "glib-2.0-native gdk-pixbuf-native librsvg-native"
LICENSE = "LGPLv2 & LGPLv2+ & LGPLv2.1+"
MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
SRC_URI = "http://ftp.gnome.org/pub/gnome/sources/gtk+/${MAJ_VER}/gtk+-${PV}.tar.xz \
file://Remove-Gdk-dependency-from-gtk-encode-symbolic-svg.patch"
SRC_URI[md5sum] = "c7497aaf6730524a127597b768a73bd7"
SRC_URI[sha256sum] = "1ee5dbd7a4cb81a91eaa1b7ae64ba5a3eab6a3c0a764155583ab96524590fc8e"
LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2 \
file://gtk/gtk.h;endline=25;md5=1d8dc0fccdbfa26287a271dce88af737 \
file://gdk/gdk.h;endline=25;md5=c920ce39dc88c6f06d3e7c50e08086f2 \
file://tests/testgtk.c;endline=25;md5=cb732daee1d82af7a2bf953cf3cf26f1"
S = "${WORKDIR}/gtk+-${PV}"
inherit pkgconfig native
PKG_CONFIG_FOR_BUILD = "${STAGING_BINDIR_NATIVE}/pkg-config-native"
do_configure() {
# Quite ugly but defines enough to compile the tools.
if ! test -f gtk/config.h; then
echo "#define GETTEXT_PACKAGE \"gtk30\"" >> gtk/config.h
echo "#define HAVE_UNISTD_H 1" >> gtk/config.h
echo "#define HAVE_FTW_H 1" >> gtk/config.h
fi
if ! test -f gdk/config.h; then
touch gdk/config.h
fi
}
do_compile() {
${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS} \
${S}/gtk/updateiconcache.c \
$(${PKG_CONFIG_FOR_BUILD} --cflags --libs gdk-pixbuf-2.0) \
-o gtk-update-icon-cache
${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS} \
${S}/gtk/encodesymbolic.c \
$(${PKG_CONFIG_FOR_BUILD} --cflags --libs gio-2.0 gdk-pixbuf-2.0) \
-o gtk-encode-symbolic-svg
}
do_install() {
install -d ${D}${bindir}
install -m 0755 ${B}/gtk-update-icon-cache ${D}${bindir}
install -m 0755 ${B}/gtk-encode-symbolic-svg ${D}${bindir}
create_wrapper ${D}/${bindir}/gtk-update-icon-cache \
GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/2.10.0/loaders.cache
create_wrapper ${D}/${bindir}/gtk-encode-symbolic-svg \
GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/2.10.0/loaders.cache
}
# Prevent bitbake from optimizing away the native librsvg sysroot population
do_populate_sysroot_setscene[depends] += "librsvg-native:do_populate_sysroot_setscene"

View File

@ -0,0 +1,102 @@
From 4d09ff324419fe4e671233044e424378da53969b Mon Sep 17 00:00:00 2001
From: Jussi Kukkonen <jussi.kukkonen@intel.com>
Date: Tue, 9 Jun 2015 14:20:30 +0300
Subject: [PATCH] Remove Gdk-dependency from gtk-encode-symbolic-svg
Building gtk-encode-symbolic-svg without building Gdk is useful
as only the icon tools are needed on the native build: this makes
native build much faster and requires much less dependencies.
Upstream-Status: Pending
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
---
gtk/encodesymbolic.c | 36 ++++++++++--------------------------
1 file changed, 10 insertions(+), 26 deletions(-)
diff --git a/gtk/encodesymbolic.c b/gtk/encodesymbolic.c
index 9f7d015..1f07563 100644
--- a/gtk/encodesymbolic.c
+++ b/gtk/encodesymbolic.c
@@ -19,7 +19,6 @@
#include <glib.h>
#include <gdk-pixbuf/gdk-pixdata.h>
-#include <gdk/gdk.h>
#include <glib/gi18n.h>
#ifdef HAVE_UNISTD_H
@@ -43,30 +42,18 @@ static GdkPixbuf *
load_symbolic_svg (char *file_data, gsize file_len,
int width,
int height,
- const GdkRGBA *fg,
- const GdkRGBA *success_color,
- const GdkRGBA *warning_color,
- const GdkRGBA *error_color,
+ const char *css_fg,
+ const char *css_success,
+ const char *css_warning,
+ const char *css_error,
GError **error)
{
GInputStream *stream;
GdkPixbuf *pixbuf;
- gchar *css_fg;
- gchar *css_success;
- gchar *css_warning;
- gchar *css_error;
gchar *data;
gchar *svg_width, *svg_height;
gchar *escaped_file_data;
- css_fg = gdk_rgba_to_string (fg);
-
- css_success = css_warning = css_error = NULL;
-
- css_warning = gdk_rgba_to_string (warning_color);
- css_error = gdk_rgba_to_string (error_color);
- css_success = gdk_rgba_to_string (success_color);
-
/* Fetch size from the original icon */
stream = g_memory_input_stream_new_from_data (file_data, file_len, NULL);
pixbuf = gdk_pixbuf_new_from_stream (stream, NULL, error);
@@ -105,10 +92,6 @@ load_symbolic_svg (char *file_data, gsize file_len,
"</svg>",
NULL);
g_free (escaped_file_data);
- g_free (css_fg);
- g_free (css_warning);
- g_free (css_error);
- g_free (css_success);
g_free (svg_width);
g_free (svg_height);
@@ -167,7 +150,8 @@ make_symbolic_pixbuf (char *file,
GError **error)
{
- GdkRGBA r = { 1,0,0,1}, g = {0,1,0,1};
+ const char r[] = "rgba(255,0,0,1)";
+ const char g[] = "rgba(0,255,0,1)";
GdkPixbuf *loaded;
GdkPixbuf *pixbuf;
int plane;
@@ -196,10 +180,10 @@ make_symbolic_pixbuf (char *file,
* the "rest", as all color fractions should add up to 1.
*/
loaded = load_symbolic_svg (file_data, file_len, width, height,
- &g,
- plane == 0 ? &r : &g,
- plane == 1 ? &r : &g,
- plane == 2 ? &r : &g,
+ g,
+ plane == 0 ? r : g,
+ plane == 1 ? r : g,
+ plane == 2 ? r : g,
error);
if (loaded == NULL)
return NULL;
--
2.1.4

View File

@ -1,47 +0,0 @@
SUMMARY = "gtk-update-icon-cache built natively"
DESCRIPTION = "Just gtk-update-icon-cache built from GTK+ natively, for on-host postinst script execution."
SECTION = "libs"
DEPENDS = "gdk-pixbuf-native"
LICENSE = "LGPLv2 & LGPLv2+ & LGPLv2.1+"
LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2 \
file://gtk/gtk.h;endline=25;md5=1d8dc0fccdbfa26287a271dce88af737 \
file://gdk/gdk.h;endline=25;md5=c920ce39dc88c6f06d3e7c50e08086f2 \
file://tests/testgtk.c;endline=25;md5=cb732daee1d82af7a2bf953cf3cf26f1"
SRC_URI = "http://download.gnome.org/sources/gtk+/3.4/gtk+-${PV}.tar.xz"
SRC_URI[md5sum] = "1b2cf29502a6394e8d4b30f7f5bb9131"
SRC_URI[sha256sum] = "f154e460075034da4c0ce89c320025dcd459da2a1fdf32d92a09522eaca242c7"
S = "${WORKDIR}/gtk+-${PV}"
inherit pkgconfig native
PKG_CONFIG_FOR_BUILD = "${STAGING_BINDIR_NATIVE}/pkg-config-native"
do_configure() {
# Quite ugly but defines enough to compile the tool.
if ! test -f gtk/config.h; then
echo "#define GETTEXT_PACKAGE \"gtk30\"" >> gtk/config.h
echo "#define HAVE_UNISTD_H 1" >> gtk/config.h
echo "#define HAVE_FTW_H 1" >> gtk/config.h
fi
}
do_compile() {
${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS} ${S}/gtk/updateiconcache.c \
$(${PKG_CONFIG_FOR_BUILD} --cflags --libs gdk-pixbuf-2.0) \
-o gtk-update-icon-cache
}
do_install() {
install -d ${D}${bindir}
install -m 0755 ${B}/gtk-update-icon-cache ${D}${bindir}
create_wrapper ${D}/${bindir}/gtk-update-icon-cache \
GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/2.10.0/loaders.cache
}