From patchwork Mon May 30 14:54:21 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [15/17] package.bbclass: add Qt translation support into package_do_split_locales Date: Mon, 30 May 2011 14:54:21 -0000 From: Otavio Salvador X-Patchwork-Id: 5075 Message-Id: <1306767263-29895-16-git-send-email-otavio@ossystems.com.br> To: openembedded-devel@lists.openembedded.org Cc: Otavio Salvador Signed-off-by: Otavio Salvador --- classes/package.bbclass | 41 +++++++++++++++++++++++++++++++++++++---- 1 files changed, 37 insertions(+), 4 deletions(-) diff --git a/classes/package.bbclass b/classes/package.bbclass index 2b98049..f45b4d8 100644 --- a/classes/package.bbclass +++ b/classes/package.bbclass @@ -314,6 +314,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) @@ -329,12 +331,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... @@ -343,11 +362,25 @@ 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) + 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('DESCRIPTION_' + pkg, '%s translation for %s' % (l, pn), d)