diff options
authorMartin Jansa <>2015-09-03 20:21:53 (GMT)
committerRichard Purdie <>2016-01-30 12:03:13 (GMT)
commit2ad71d0ae86a3d0bcc8a3126b4620d4839310535 (patch)
parent73a04a266cb2bfc2bd5c7ed0155bf4204baf9072 (diff)
fontcache: allow to pass extra parameters and environment to fc-cache
* this can be useful for passing extra parameters, pass -v by default to see what's going on in do_rootfs * we need to use this for extra parameter we implemented in fontconfig: --ignore-mtime always use cache file regardless of font directory mtime because the checksum of fontcache generated in do_rootfs doesn't match with /usr/share/fonts directory as seen on target device causing fontconfig to re-create the cache when fontconfig is used for first time or worse create new cache in every user's home directory when /usr/ filesystem is read only and cache cannot be updated. Running FC_DEBUG=16 fc-cache -v on such device shows: FcCacheTimeValid dir "/usr/share/fonts" cache checksum 1441207803 dir checksum 1441206149 * my guess is that the checksum is different, because pseudo (which is unloaded when running qemuwrapper) or because some influence of running the rootfs under qemu. (From OE-Core rev: f2b86a69d88d382f16bbec070adc8199932b2c02) Signed-off-by: Martin Jansa <> Signed-off-by: Armin Kuster <> Signed-off-by: Richard Purdie <>
2 files changed, 17 insertions, 6 deletions
diff --git a/meta/classes/fontcache.bbclass b/meta/classes/fontcache.bbclass
index d122387..8ebdfc4 100644
--- a/meta/classes/fontcache.bbclass
+++ b/meta/classes/fontcache.bbclass
@@ -9,12 +9,23 @@ inherit qemu
10FONT_EXTRA_RDEPENDS ?= "fontconfig-utils" 10FONT_EXTRA_RDEPENDS ?= "fontconfig-utils"
11FONTCONFIG_CACHE_DIR ?= "${localstatedir}/cache/fontconfig" 11FONTCONFIG_CACHE_DIR ?= "${localstatedir}/cache/fontconfig"
13# You can change this to e.g. FC_DEBUG=16 to debug fc-cache issues,
14# something has to be set, because qemuwrapper is using this variable after -E
15# multiple variables aren't allowed because for qemu they are separated
16# by comma and in -n "$D" case they should be separated by space
12fontcache_common() { 18fontcache_common() {
13if [ "x$D" != "x" ] ; then 19if [ -n "$D" ] ; then
14 $INTERCEPT_DIR/postinst_intercept update_font_cache ${PKG} mlprefix=${MLPREFIX} bindir=${bindir} \ 20 $INTERCEPT_DIR/postinst_intercept update_font_cache ${PKG} mlprefix=${MLPREFIX} \
15 libdir=${libdir} base_libdir=${base_libdir} fontconfigcachedir=${FONTCONFIG_CACHE_DIR} 21 'bindir="${bindir}"' \
22 'libdir="${libdir}"' \
23 'base_libdir="${base_libdir}"' \
24 'fontconfigcachedir="${FONTCONFIG_CACHE_DIR}"' \
25 'fontconfigcacheparams="${FONTCONFIG_CACHE_PARAMS}"' \
26 'fontconfigcacheenv="${FONTCONFIG_CACHE_ENV}"'
16else 27else
18fi 29fi
19} 30}
20 31
diff --git a/scripts/postinst-intercepts/update_font_cache b/scripts/postinst-intercepts/update_font_cache
index c8c6018..0deab3c 100644
--- a/scripts/postinst-intercepts/update_font_cache
+++ b/scripts/postinst-intercepts/update_font_cache
@@ -1,5 +1,5 @@
1#!/bin/sh 1#!/bin/sh
2 2
3PSEUDO_UNLOAD=1 qemuwrapper -L $D -E LD_LIBRARY_PATH=$D/${libdir}:$D/${base_libdir}\ 3PSEUDO_UNLOAD=1 qemuwrapper -L $D -E LD_LIBRARY_PATH=$D/${libdir}:$D/${base_libdir} \
4 $D${bindir}/fc-cache --sysroot=$D 4 -E ${fontconfigcacheenv} $D${bindir}/fc-cache --sysroot=$D ${fontconfigcacheparams}
5chown -R root:root $D${fontconfigcachedir} 5chown -R root:root $D${fontconfigcachedir}