Ensuring the native pixbuf cache is correct after new loaders have been installed is tricky. This needs to be done without races and work regardless of whether the build is from sstate or freshly built for one or more modules. This adds a hook into base.bbclass which is then triggered by the code from pixbufcache. This patch is an improved version which means base.bbclass has no pixbuf knowledge and the mechanism can be reused in other cases. (From OE-Core rev: b411085fefc8582d24c172db5f6610705eb44c2f) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
68 lines
2.1 KiB
Text
68 lines
2.1 KiB
Text
#
|
|
# This class will generate the proper postinst/postrm scriptlets for pixbuf
|
|
# packages.
|
|
#
|
|
|
|
DEPENDS += "qemu-native"
|
|
inherit qemu
|
|
|
|
PIXBUF_PACKAGES ??= "${PN}"
|
|
|
|
pixbufcache_common() {
|
|
if [ "x$D" != "x" ]; then
|
|
$INTERCEPT_DIR/postinst_intercept update_pixbuf_cache ${PKG} mlprefix=${MLPREFIX} libdir=${libdir} \
|
|
bindir=${bindir} base_libdir=${base_libdir}
|
|
else
|
|
|
|
# Update the pixbuf loaders in case they haven't been registered yet
|
|
GDK_PIXBUF_MODULEDIR=${libdir}/gdk-pixbuf-2.0/2.10.0/loaders gdk-pixbuf-query-loaders --update-cache
|
|
|
|
if [ -x ${bindir}/gtk-update-icon-cache ] && [ -d ${datadir}/icons ]; then
|
|
for icondir in /usr/share/icons/*; do
|
|
if [ -d ${icondir} ]; then
|
|
gtk-update-icon-cache -t -q ${icondir}
|
|
fi
|
|
done
|
|
fi
|
|
fi
|
|
}
|
|
|
|
python populate_packages_append() {
|
|
pixbuf_pkgs = d.getVar('PIXBUF_PACKAGES', True).split()
|
|
|
|
for pkg in pixbuf_pkgs:
|
|
bb.note("adding pixbuf postinst and postrm scripts to %s" % pkg)
|
|
postinst = d.getVar('pkg_postinst_%s' % pkg, True) or d.getVar('pkg_postinst', True)
|
|
if not postinst:
|
|
postinst = '#!/bin/sh\n'
|
|
postinst += d.getVar('pixbufcache_common', True)
|
|
d.setVar('pkg_postinst_%s' % pkg, postinst)
|
|
|
|
postrm = d.getVar('pkg_postrm_%s' % pkg, True) or d.getVar('pkg_postrm', True)
|
|
if not postrm:
|
|
postrm = '#!/bin/sh\n'
|
|
postrm += d.getVar('pixbufcache_common', True)
|
|
d.setVar('pkg_postrm_%s' % pkg, postrm)
|
|
}
|
|
|
|
gdkpixbuf_complete() {
|
|
GDK_PIXBUF_FATAL_LOADER=1 ${STAGING_BINDIR_NATIVE}/gdk-pixbuf-query-loaders --update-cache || exit 1
|
|
}
|
|
|
|
#
|
|
# Add an sstate postinst hook to update the cache for native packages.
|
|
# An error exit during populate_sysroot_setscene allows bitbake to
|
|
# try to recover by re-building the package.
|
|
#
|
|
SSTATEPOSTINSTFUNCS_append_class-native = " pixbufcache_sstate_postinst"
|
|
|
|
# See base.bbclass for the other half of this
|
|
pixbufcache_sstate_postinst() {
|
|
if [ "${BB_CURRENTTASK}" = "populate_sysroot" ]; then
|
|
${gdkpixbuf_complete}
|
|
elif [ "${BB_CURRENTTASK}" = "populate_sysroot_setscene" ]; then
|
|
echo "${gdkpixbuf_complete}" >> ${STAGING_DIR}/sstatecompletions
|
|
fi
|
|
}
|
|
|