1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #
- # This class creates mime <-> application associations based on entry
- # 'MimeType' in *.desktop files
- #
- DEPENDS += "desktop-file-utils"
- PACKAGE_WRITE_DEPS += "desktop-file-utils-native"
- DESKTOPDIR = "${datadir}/applications"
- # There are recipes out there installing their .desktop files as absolute
- # symlinks. For us these are dangling and cannot be introspected for "MymeType"
- # easily. By addding package-names to MIME_XDG_PACKAGES, packager can force
- # proper update-desktop-database handling. Note that all introspection is
- # skipped for MIME_XDG_PACKAGES not empty
- MIME_XDG_PACKAGES ?= ""
- mime_xdg_postinst() {
- if [ "x$D" != "x" ]; then
- $INTERCEPT_DIR/postinst_intercept update_desktop_database ${PKG} \
- mlprefix=${MLPREFIX} \
- desktop_dir=${DESKTOPDIR}
- else
- update-desktop-database $D${DESKTOPDIR}
- fi
- }
- mime_xdg_postrm() {
- if [ "x$D" != "x" ]; then
- $INTERCEPT_DIR/postinst_intercept update_desktop_database ${PKG} \
- mlprefix=${MLPREFIX} \
- desktop_dir=${DESKTOPDIR}
- else
- update-desktop-database $D${DESKTOPDIR}
- fi
- }
- python populate_packages_append () {
- packages = d.getVar('PACKAGES').split()
- pkgdest = d.getVar('PKGDEST')
- desktop_base = d.getVar('DESKTOPDIR')
- forced_mime_xdg_pkgs = (d.getVar('MIME_XDG_PACKAGES') or '').split()
- for pkg in packages:
- desktops_with_mime_found = pkg in forced_mime_xdg_pkgs
- if d.getVar('MIME_XDG_PACKAGES') == '':
- desktop_dir = '%s/%s%s' % (pkgdest, pkg, desktop_base)
- if os.path.exists(desktop_dir):
- for df in os.listdir(desktop_dir):
- if df.endswith('.desktop'):
- try:
- with open(desktop_dir + '/'+ df, 'r') as f:
- for line in f.read().split('\n'):
- if 'MimeType' in line:
- desktops_with_mime_found = True
- break;
- except:
- bb.warn('Could not open %s. Set MIME_XDG_PACKAGES in recipe or add mime-xdg to INSANE_SKIP.' % desktop_dir + '/'+ df)
- if desktops_with_mime_found:
- break
- if desktops_with_mime_found:
- bb.note("adding mime-xdg 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_xdg_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_xdg_postrm')
- d.setVar('pkg_postrm_%s' % pkg, postrm)
- bb.note("adding desktop-file-utils dependency to %s" % pkg)
- d.appendVar('RDEPENDS_' + pkg, " " + d.getVar('MLPREFIX')+"desktop-file-utils")
- }
|