[OE-core] [CONSOLIDATED PULL 01/22] package.bbclass: add support to split Qt translation files
Saul Wold
sgw at linux.intel.com
Tue Jul 19 06:50:48 UTC 2011
From: Otavio Salvador <otavio at ossystems.com.br>
There're many Qt applications that provide translation files in '.qm'
format however those weren't being splitted as GetText based
ones.
Signed-off-by: Otavio Salvador <otavio at ossystems.com.br>
---
meta/classes/package.bbclass | 41 +++++++++++++++++++++++++++++++++++++----
1 files changed, 37 insertions(+), 4 deletions(-)
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index f2950e2..56f79f6 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -345,6 +345,8 @@ python package_do_split_locales() {
bb.debug(1, "package requested not splitting locales")
return
+ import re
+
packages = (bb.data.getVar('PACKAGES', d, True) or "").split()
datadir = bb.data.getVar('datadir', d, True)
@@ -360,12 +362,29 @@ python package_do_split_locales() {
localedir = os.path.join(dvar + datadir, 'locale')
- if not os.path.isdir(localedir):
+ locales = []
+ if os.path.isdir(localedir):
+ locales = os.listdir(localedir)
+
+ # Check of Qt translation files
+ qm_re = re.compile("(.*)\.qm$")
+ qm_files = {}
+ for root, dirs, files in os.walk(dvar):
+ for file in files:
+ qm_file = qm_re.match(file)
+ if qm_file:
+ locale = qm_file.group(1)
+ relpath = os.path.join(root, file).replace(dvar, '', 1)
+ if relpath:
+ if not qm_files.has_key(locale):
+ qm_files[locale] = []
+
+ qm_files[locale].append(relpath)
+
+ if len(locales) == 0 and len(qm_files) == 0:
bb.debug(1, "No locale files in this package")
return
- locales = os.listdir(localedir)
-
# This is *really* broken
mainpkg = packages[0]
# At least try and patch it up I guess...
@@ -374,13 +393,27 @@ python package_do_split_locales() {
if mainpkg.find('-dev'):
mainpkg = mainpkg.replace('-dev', '')
+ # Queue Qt locales for spliting
+ for l in qm_files.keys():
+ if l not in locales:
+ locales.append(l)
+
+ # Split the locales into different packages
summary = bb.data.getVar('SUMMARY', d, True) or pn
description = bb.data.getVar('DESCRIPTION', d, True) or ""
for l in locales:
ln = legitimize_package_name(l)
pkg = pn + '-locale-' + ln
packages.append(pkg)
- bb.data.setVar('FILES_' + pkg, os.path.join(datadir, 'locale', l), d)
+ files = []
+ files.append(os.path.join(datadir, 'locale', l))
+
+ if qm_files.has_key(l):
+ locale_re = re.compile("^.*([a-z]{2}(_[A-Z]{2})?)$")
+ ln = legitimize_package_name(locale_re.match(l).group(1))
+ files += qm_files[l]
+
+ bb.data.setVar('FILES_' + pkg, " ".join(files), d)
bb.data.setVar('RDEPENDS_' + pkg, '%s virtual-locale-%s' % (mainpkg, ln), d)
bb.data.setVar('RPROVIDES_' + pkg, '%s-locale %s-translation' % (pn, ln), d)
bb.data.setVar('SUMMARY_' + pkg, '%s - %s translations' % (summary, l), d)
--
1.7.3.4
More information about the Openembedded-core
mailing list