diff options
Diffstat (limited to 'meta/classes-recipe/mime.bbclass')
-rw-r--r-- | meta/classes-recipe/mime.bbclass | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/meta/classes-recipe/mime.bbclass b/meta/classes-recipe/mime.bbclass new file mode 100644 index 0000000000..9b13f62bda --- /dev/null +++ b/meta/classes-recipe/mime.bbclass @@ -0,0 +1,76 @@ +# +# Copyright OpenEmbedded Contributors +# +# SPDX-License-Identifier: MIT +# + +# +# This class is used by recipes installing mime types +# + +DEPENDS += "${@bb.utils.contains('BPN', 'shared-mime-info', '', 'shared-mime-info', d)}" +PACKAGE_WRITE_DEPS += "shared-mime-info-native" +MIMEDIR = "${datadir}/mime" + +mime_postinst() { +if [ "x$D" != "x" ]; then + $INTERCEPT_DIR/postinst_intercept update_mime_database ${PKG} \ + mlprefix=${MLPREFIX} \ + mimedir=${MIMEDIR} +else + echo "Updating MIME database... this may take a while." + update-mime-database $D${MIMEDIR} +fi +} + +mime_postrm() { +if [ "x$D" != "x" ]; then + $INTERCEPT_DIR/postinst_intercept update_mime_database ${PKG} \ + mlprefix=${MLPREFIX} \ + mimedir=${MIMEDIR} +else + echo "Updating MIME database... this may take a while." + # $D${MIMEDIR}/packages belong to package shared-mime-info-data, + # packages like libfm-mime depend on shared-mime-info-data. + # after shared-mime-info-data uninstalled, $D${MIMEDIR}/packages + # is removed, but update-mime-database need this dir to update + # database, workaround to create one and remove it later + if [ ! -d $D${MIMEDIR}/packages ]; then + mkdir -p $D${MIMEDIR}/packages + update-mime-database $D${MIMEDIR} + rmdir --ignore-fail-on-non-empty $D${MIMEDIR}/packages + else + update-mime-database $D${MIMEDIR} +fi +fi +} + +python populate_packages:append () { + packages = d.getVar('PACKAGES').split() + pkgdest = d.getVar('PKGDEST') + mimedir = d.getVar('MIMEDIR') + + for pkg in packages: + mime_packages_dir = '%s/%s%s/packages' % (pkgdest, pkg, mimedir) + mimes_types_found = False + if os.path.exists(mime_packages_dir): + for f in os.listdir(mime_packages_dir): + if f.endswith('.xml'): + mimes_types_found = True + break + if mimes_types_found: + bb.note("adding mime postinst and postrm scripts to %s" % pkg) + postinst = d.getVar('pkg_postinst:%s' % pkg) + if not postinst: + postinst = '#!/bin/sh\n' + postinst += d.getVar('mime_postinst') + d.setVar('pkg_postinst:%s' % pkg, postinst) + postrm = d.getVar('pkg_postrm:%s' % pkg) + if not postrm: + postrm = '#!/bin/sh\n' + postrm += d.getVar('mime_postrm') + d.setVar('pkg_postrm:%s' % pkg, postrm) + if pkg != 'shared-mime-info-data': + bb.note("adding shared-mime-info-data dependency to %s" % pkg) + d.appendVar('RDEPENDS:' + pkg, " " + d.getVar('MLPREFIX')+"shared-mime-info-data") +} |