From ab66222195745b200efcb6eda760fddb4b80de7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=BCller?= Date: Mon, 27 Jul 2015 19:11:14 +0200 Subject: [PATCH] lxqt.bbclass: add a way to ship translation files in the same way as locales MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Andreas Müller --- classes/lxqt.bbclass | 82 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 74 insertions(+), 8 deletions(-) diff --git a/classes/lxqt.bbclass b/classes/lxqt.bbclass index c882acf2..d8204298 100644 --- a/classes/lxqt.bbclass +++ b/classes/lxqt.bbclass @@ -10,12 +10,78 @@ S = "${WORKDIR}/git" # REVISIT: configure to use only ${libdir}/cmake FILES_${PN}-dev += "${datadir}/cmake ${libdir}/cmake" -#REVISIT pack translations per language to use image linguas -PACKAGES =+ "${PN}-translations" -ALLOW_EMPTY_${PN}-translations = "1" -FILES_${PN}-translations = " \ - ${datadir}/lxqt/translations/${BPN}* \ - ${datadir}/lxqt/translations/lxqt-config-* \ -" -REDEPENDS_${PN}-translations = "${PN}" +# translations -> locale packages + +# default location +LXQT_TRANSLATION_FILES ??= "${datadir}/*/translations/*.qm ${datadir}/*/translations/*/*.qm ${datadir}/*/translations/*/*/*.qm" + +FILES_${PN}-locale = "${datadir}/*/translations" + +# bitbake.conf sets ${datadir}/${BPN} so overwrite +FILES_${PN} = "${bindir}/* ${sbindir}/* ${libexecdir}/* ${libdir}/lib*${SOLIBS} \ + ${sysconfdir} ${sharedstatedir} ${localstatedir} \ + ${base_bindir}/* ${base_sbindir}/* \ + ${base_libdir}/*${SOLIBS} \ + ${base_prefix}/lib/udev/rules.d ${prefix}/lib/udev/rules.d \ + ${libdir}/${BPN}/* \ + ${datadir}/pixmaps ${datadir}/applications \ +" + +python lxqt_do_split_locales() { + import glob + + if (d.getVar('PACKAGE_NO_LOCALE', True) == '1'): + bb.debug(1, "package requested not splitting locales") + return + + packages = (d.getVar('PACKAGES', True) or "").split() + + datadir = d.getVar('datadir', True) + if not datadir: + bb.note("datadir not defined") + return + + dvar = d.getVar('PKGD', True) + pn = d.getVar('LOCALEBASEPN', True) + + if pn + '-locale' in packages: + packages.remove(pn + '-locale') + + # extract locales from *.qm files into list in locales + locales = [] + for transvar in d.getVar('LXQT_TRANSLATION_FILES', True).split(): + translocation = '%s%s' % (dvar, transvar) + transfiles = glob.glob(translocation) + for l in sorted(transfiles): + lib, locale = l.replace('.qm', '').split("_",1) + if not locale in locales: + locales.append(locale) + + if not locales: + bb.debug(1, "No locale files in this package") + return + + summary = d.getVar('SUMMARY', True) or pn + description = d.getVar('DESCRIPTION', True) or "" + locale_section = d.getVar('LOCALE_SECTION', True) + mlprefix = d.getVar('MLPREFIX', True) or "" + for l in sorted(locales): + ln = legitimize_package_name(l) + pkg = pn + '-locale-' + ln + packages.append(pkg) + files = '' + for transvar in d.getVar('LXQT_TRANSLATION_FILES', True).split(): + files = '%s %s' % (files, transvar.replace('*.qm', '*_%s.qm' % l)) + d.setVar('FILES_' + pkg, files ) + d.setVar('RRECOMMENDS_' + pkg, '%svirtual-locale-%s' % (mlprefix, ln)) + d.setVar('RPROVIDES_' + pkg, '%s-locale %s%s-translation' % (pn, mlprefix, ln)) + d.setVar('SUMMARY_' + pkg, '%s - %s translations' % (summary, l)) + d.setVar('DESCRIPTION_' + pkg, '%s This package contains language translation files for the %s locale.' % (description, l)) + if locale_section: + d.setVar('SECTION_' + pkg, locale_section) + + d.setVar('PACKAGES', ' '.join(packages)) +} + +PACKAGESPLITFUNCS_prepend = "lxqt_do_split_locales "