diff options
Diffstat (limited to 'meta/classes-recipe/gsettings.bbclass')
-rw-r--r-- | meta/classes-recipe/gsettings.bbclass | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/meta/classes-recipe/gsettings.bbclass b/meta/classes-recipe/gsettings.bbclass new file mode 100644 index 0000000000..adb027ea0a --- /dev/null +++ b/meta/classes-recipe/gsettings.bbclass | |||
@@ -0,0 +1,48 @@ | |||
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 | |||
16 | GSETTINGS_PACKAGE ?= "${PN}" | ||
17 | |||
18 | python __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 | |||
26 | gsettings_postinstrm () { | ||
27 | glib-compile-schemas $D${datadir}/glib-2.0/schemas | ||
28 | } | ||
29 | |||
30 | python 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 | } | ||