1# 2# Copyright OpenEmbedded Contributors 3# 4# SPDX-License-Identifier: MIT 5# 6 7# 8# This class is used by recipes installing mime types 9# 10 11DEPENDS += "${@bb.utils.contains('BPN', 'shared-mime-info', '', 'shared-mime-info', d)}" 12PACKAGE_WRITE_DEPS += "shared-mime-info-native" 13MIMEDIR = "${datadir}/mime" 14 15mime_postinst() { 16if [ "x$D" != "x" ]; then 17 $INTERCEPT_DIR/postinst_intercept update_mime_database ${PKG} \ 18 mlprefix=${MLPREFIX} \ 19 mimedir=${MIMEDIR} 20else 21 echo "Updating MIME database... this may take a while." 22 update-mime-database $D${MIMEDIR} 23fi 24} 25 26mime_postrm() { 27if [ "x$D" != "x" ]; then 28 $INTERCEPT_DIR/postinst_intercept update_mime_database ${PKG} \ 29 mlprefix=${MLPREFIX} \ 30 mimedir=${MIMEDIR} 31else 32 echo "Updating MIME database... this may take a while." 33 # $D${MIMEDIR}/packages belong to package shared-mime-info-data, 34 # packages like libfm-mime depend on shared-mime-info-data. 35 # after shared-mime-info-data uninstalled, $D${MIMEDIR}/packages 36 # is removed, but update-mime-database need this dir to update 37 # database, workaround to create one and remove it later 38 if [ ! -d $D${MIMEDIR}/packages ]; then 39 mkdir -p $D${MIMEDIR}/packages 40 update-mime-database $D${MIMEDIR} 41 rmdir --ignore-fail-on-non-empty $D${MIMEDIR}/packages 42 else 43 update-mime-database $D${MIMEDIR} 44fi 45fi 46} 47 48python populate_packages:append () { 49 packages = d.getVar('PACKAGES').split() 50 pkgdest = d.getVar('PKGDEST') 51 mimedir = d.getVar('MIMEDIR') 52 53 for pkg in packages: 54 mime_packages_dir = '%s/%s%s/packages' % (pkgdest, pkg, mimedir) 55 mimes_types_found = False 56 if os.path.exists(mime_packages_dir): 57 for f in os.listdir(mime_packages_dir): 58 if f.endswith('.xml'): 59 mimes_types_found = True 60 break 61 if mimes_types_found: 62 bb.note("adding mime postinst and postrm scripts to %s" % pkg) 63 postinst = d.getVar('pkg_postinst:%s' % pkg) 64 if not postinst: 65 postinst = '#!/bin/sh\n' 66 postinst += d.getVar('mime_postinst') 67 d.setVar('pkg_postinst:%s' % pkg, postinst) 68 postrm = d.getVar('pkg_postrm:%s' % pkg) 69 if not postrm: 70 postrm = '#!/bin/sh\n' 71 postrm += d.getVar('mime_postrm') 72 d.setVar('pkg_postrm:%s' % pkg, postrm) 73 if pkg != 'shared-mime-info-data': 74 bb.note("adding shared-mime-info-data dependency to %s" % pkg) 75 d.appendVar('RDEPENDS:' + pkg, " " + d.getVar('MLPREFIX')+"shared-mime-info-data") 76} 77