2012/10/17 Richard Purdie <richard.pur...@linuxfoundation.org>: > On Wed, 2012-10-17 at 17:24 +0200, Samuel Stirtzel wrote: >> This is used by: >> openembedded-core/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_git.bb >> meta-openembedded/meta-oe/recipes-support/maliit/maliit-framework_git.bb >> >> Signed-off-by: Samuel Stirtzel <s.stirt...@googlemail.com> >> --- >> meta/classes/gtk-immodules-cache.bbclass | 70 >> ++++++++++++++++++++++++++++++ >> 1 file changed, 70 insertions(+) >> create mode 100644 meta/classes/gtk-immodules-cache.bbclass >> >> diff --git a/meta/classes/gtk-immodules-cache.bbclass >> b/meta/classes/gtk-immodules-cache.bbclass >> new file mode 100644 >> index 0000000..833eefe >> --- /dev/null >> +++ b/meta/classes/gtk-immodules-cache.bbclass >> @@ -0,0 +1,70 @@ >> +# This class will update the inputmethod module cache for virtual keyboards >> +# >> +# Usage: Set GTKIMMODULES_PACKAGES to the packages that needs to update the >> inputmethod modules >> + >> +gtk_immodule_cache_postinst() { >> +if [ "x$D" != "x" ]; then >> + exit 1 >> +fi >> +if [ ! -z `which gtk-query-immodules-2.0` ]; then >> + gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules >> +fi >> +if [ ! -z `which gtk-query-immodules-3.0` ]; then >> + gtk-query-immodules-3.0 > /etc/gtk-3.0/gtk.immodules >> +fi >> +} >> + >> +gtk_immodule_cache_postrm() { >> +if [ "x$D" != "x" ]; then >> + exit 1 >> +fi >> +if [ ! -z `which gtk-query-immodules-2.0` ]; then >> + gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules >> +fi >> +if [ ! -z `which gtk-query-immodules-3.0` ]; then >> + gtk-query-immodules-3.0 > /etc/gtk-3.0/gtk.immodules >> +fi >> +} >> + >> +python populate_packages_append () { >> + gtkimmodules_pkgs = d.getVar('GTKIMMODULES_PACKAGES', True).split() >> + >> + for pkg in gtkimmodules_pkgs: >> + bb.note("adding gtk-immodule-cache postinst and postrm scripts >> to %s" % pkg) >> + >> + postinst = d.getVar('pkg_postinst_%s' % pkg, True) or >> d.getVar('pkg_postinst', True) >> + if not postinst: >> + postinst = '#!/bin/sh\n' >> + postinst += d.getVar('gtk_immodule_cache_postinst', True) >> + d.setVar('pkg_postinst_%s' % pkg, postinst) >> + >> + postrm = d.getVar('pkg_postrm_%s' % pkg, True) or >> d.getVar('pkg_postrm', True) >> + if not postrm: >> + postrm = '#!/bin/sh\n' >> + postrm += d.getVar('gtk_immodule_cache_postrm', True) >> + d.setVar('pkg_postrm_%s' % pkg, postrm) >> +} >> + >> +def gtkimmodules_after_parse(d): >> + def gtkimmodules_check_vars(): >> + if d.getVar('BB_WORKERCONTEXT', True) is not None: >> + return >> + >> + bb_filename = d.getVar('FILE') >> + packages = d.getVar('PACKAGES', True) >> + >> + # check gtk-immodules package >> + gtkimmodules_check = d.getVar('GTKIMMODULES_PACKAGES', True) or "" >> + if gtkimmodules_check == "": >> + raise bb.build.FuncFailed, "\n\n\nERROR: %s inherits >> gtk-immodule-cache but doesn't set GTKIMMODULES_PACKAGE" % bb_filename >> + >> + bpn = d.getVar('BPN', 1) >> + if bpn + "-native" != d.getVar('PN', 1) and \ >> + bpn + "-cross" != d.getVar('PN', 1) and \ >> + bpn + "-nativesdk" != d.getVar('PN', 1): >> + gtkimmodules_check_vars() >> + >> +python __anonymous() { >> + gtkimmodules_after_parse(d) >> +} >> + > > Sorry, but the after_parse code above is horrible. How about something > more simple like: > > python __anonymous() { > if not bb.data.inherits_class('native', d) and not > bb.data.inherits_class('cross', d): > gtkimmodules_check = d.getVar('GTKIMMODULES_PACKAGES') > if not gtkimmodules_check: > bb_filename = d.getVar('FILE') > raise bb.build.FuncFailed, "\n\n\nERROR: %s inherits > gtk-immodule-cache but doesn't set GTKIMMODULES_PACKAGE" % bb_filename > }
Well this looks better, I'll send a v3. > > I'd like to know where you got the inspiration for the original as I'd > like to simplify that too! > It was original from systemd.bbclass: https://github.com/openembedded/meta-oe/blob/master/meta-systemd/classes/systemd.bbclass A quick grep shows this is used on some other classes: meta-kde/classes/kde_exports.bbclass:def kde_exports_after_parse(d): meta-openembedded/meta-systemd/classes/systemd.bbclass:def systemd_after_parse(d): openembedded-core/meta/classes/update-alternatives.bbclass:def update_alternatives_after_parse(d): openembedded-core/meta/classes/update-rc.d.bbclass:def update_rc_after_parse(d): openembedded-core/meta/classes/gtk-immodules-cache.bbclass:def gtkimmodules_after_parse(d): openembedded-core/meta/classes/useradd.bbclass:def update_useradd_after_parse(d): For meta-kde and gtk-immodules-cache I can change this to your suggestion, maybe the others need some work too? -- Regards Samuel _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core