1# 2# Copyright OpenEmbedded Contributors 3# 4# SPDX-License-Identifier: MIT 5# 6 7# A bbclass to handle installed GSettings (glib) schemas, updated the compiled 8# form on package install and remove. 9# 10# The compiled schemas are platform-agnostic, so we can depend on 11# glib-2.0-native for the native tool and run the postinst script when the 12# rootfs builds to save a little time on first boot. 13 14# TODO use a trigger so that this runs once per package operation run 15 16GSETTINGS_PACKAGE ?= "${PN}" 17 18python __anonymous() { 19 pkg = d.getVar("GSETTINGS_PACKAGE") 20 if pkg: 21 d.appendVar("PACKAGE_WRITE_DEPS", " glib-2.0-native") 22 d.appendVar("RDEPENDS:" + pkg, " ${MLPREFIX}glib-2.0-utils") 23 d.appendVar("FILES:" + pkg, " ${datadir}/glib-2.0/schemas") 24} 25 26gsettings_postinstrm () { 27 glib-compile-schemas $D${datadir}/glib-2.0/schemas 28} 29 30python populate_packages:append () { 31 pkg = d.getVar('GSETTINGS_PACKAGE') 32 if pkg: 33 bb.note("adding gsettings postinst scripts to %s" % pkg) 34 35 postinst = d.getVar('pkg_postinst:%s' % pkg) or d.getVar('pkg_postinst') 36 if not postinst: 37 postinst = '#!/bin/sh\n' 38 postinst += d.getVar('gsettings_postinstrm') 39 d.setVar('pkg_postinst:%s' % pkg, postinst) 40 41 bb.note("adding gsettings postrm scripts to %s" % pkg) 42 43 postrm = d.getVar('pkg_postrm:%s' % pkg) or d.getVar('pkg_postrm') 44 if not postrm: 45 postrm = '#!/bin/sh\n' 46 postrm += d.getVar('gsettings_postinstrm') 47 d.setVar('pkg_postrm:%s' % pkg, postrm) 48} 49