summaryrefslogtreecommitdiffstats
path: root/meta/classes-recipe/fontcache.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes-recipe/fontcache.bbclass')
-rw-r--r--meta/classes-recipe/fontcache.bbclass64
1 files changed, 64 insertions, 0 deletions
diff --git a/meta/classes-recipe/fontcache.bbclass b/meta/classes-recipe/fontcache.bbclass
new file mode 100644
index 0000000000..6f4978369d
--- /dev/null
+++ b/meta/classes-recipe/fontcache.bbclass
@@ -0,0 +1,64 @@
+#
+# Copyright OpenEmbedded Contributors
+#
+# SPDX-License-Identifier: MIT
+#
+
+#
+# This class will generate the proper postinst/postrm scriptlets for font
+# packages.
+#
+
+PACKAGE_WRITE_DEPS += "qemu-native"
+inherit qemu
+
+FONT_PACKAGES ??= "${PN}"
+FONT_PACKAGES:class-native = ""
+FONT_EXTRA_RDEPENDS ?= "${MLPREFIX}fontconfig-utils"
+FONTCONFIG_CACHE_DIR ?= "${localstatedir}/cache/fontconfig"
+FONTCONFIG_CACHE_PARAMS ?= "-v"
+# You can change this to e.g. FC_DEBUG=16 to debug fc-cache issues,
+# something has to be set, because qemuwrapper is using this variable after -E
+# multiple variables aren't allowed because for qemu they are separated
+# by comma and in -n "$D" case they should be separated by space
+FONTCONFIG_CACHE_ENV ?= "FC_DEBUG=1"
+fontcache_common() {
+if [ -n "$D" ] ; then
+ $INTERCEPT_DIR/postinst_intercept update_font_cache ${PKG} mlprefix=${MLPREFIX} binprefix=${MLPREFIX} \
+ 'bindir="${bindir}"' \
+ 'libdir="${libdir}"' \
+ 'libexecdir="${libexecdir}"' \
+ 'base_libdir="${base_libdir}"' \
+ 'fontconfigcachedir="${FONTCONFIG_CACHE_DIR}"' \
+ 'fontconfigcacheparams="${FONTCONFIG_CACHE_PARAMS}"' \
+ 'fontconfigcacheenv="${FONTCONFIG_CACHE_ENV}"'
+else
+ ${FONTCONFIG_CACHE_ENV} fc-cache ${FONTCONFIG_CACHE_PARAMS}
+fi
+}
+
+python () {
+ font_pkgs = d.getVar('FONT_PACKAGES').split()
+ deps = d.getVar("FONT_EXTRA_RDEPENDS")
+
+ for pkg in font_pkgs:
+ if deps: d.appendVar('RDEPENDS:' + pkg, ' '+deps)
+}
+
+python add_fontcache_postinsts() {
+ for pkg in d.getVar('FONT_PACKAGES').split():
+ bb.note("adding fonts postinst and postrm scripts to %s" % pkg)
+ postinst = d.getVar('pkg_postinst:%s' % pkg) or d.getVar('pkg_postinst')
+ if not postinst:
+ postinst = '#!/bin/sh\n'
+ postinst += d.getVar('fontcache_common')
+ d.setVar('pkg_postinst:%s' % pkg, postinst)
+
+ postrm = d.getVar('pkg_postrm:%s' % pkg) or d.getVar('pkg_postrm')
+ if not postrm:
+ postrm = '#!/bin/sh\n'
+ postrm += d.getVar('fontcache_common')
+ d.setVar('pkg_postrm:%s' % pkg, postrm)
+}
+
+PACKAGEFUNCS =+ "add_fontcache_postinsts"