]> code.ossystems Code Review - openembedded-core.git/commitdiff
pixbufcache: handle gdk-pixbuf not being present
authorRoss Burton <ross.burton@intel.com>
Thu, 13 Oct 2016 19:36:35 +0000 (20:36 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Sat, 15 Oct 2016 08:49:10 +0000 (09:49 +0100)
It's possible - albeit unlikely - that gdk-pixbuf isn't present in the sysroot
when a recipe inheriting this class is and the sysroot is finalised.

One example would be if the sstate archive has librsvg but not gdk-pixbuf:
librsvg will be extracted from the sstate but gdk-pixbuf will be built to "fill
in the gap".  In this situation the setscene completion hook installed by
pixbufcache.bbclass will attempt to execute gdk-pixbuf-query-loaders, but that
binary hasn't been installed by gdk-pixbuf yet.

Also add gdk-pixbuf-native to DEPENDS in native builds to ensure that the
binaries we expect will be present, as it's possible to build loaders without
linking to GdkPixbuf.

[ YOCTO #10420 ]

Signed-off-by: Ross Burton <ross.burton@intel.com>
meta/classes/pixbufcache.bbclass

index dbe11e12da9f565a0a172ea53989742e78ffd17a..3f48a0f34466703e7189e7300a6c432b918e8da5 100644 (file)
@@ -54,6 +54,7 @@ gdkpixbuf_complete() {
 # An error exit during populate_sysroot_setscene allows bitbake to
 # try to recover by re-building the package.
 #
+DEPENDS_append_class-native = " gdk-pixbuf-native"
 SSTATEPOSTINSTFUNCS_append_class-native = " pixbufcache_sstate_postinst"
 
 # See base.bbclass for the other half of this
@@ -61,7 +62,8 @@ pixbufcache_sstate_postinst() {
        if [ "${BB_CURRENTTASK}" = "populate_sysroot" ]; then
                ${gdkpixbuf_complete}
        elif [ "${BB_CURRENTTASK}" = "populate_sysroot_setscene" ]; then
-               echo "${gdkpixbuf_complete}" >> ${STAGING_DIR}/sstatecompletions
+               if [ -x ${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders ]; then
+                       echo "${gdkpixbuf_complete}" >> ${STAGING_DIR}/sstatecompletions
+               fi
        fi
 }
-