[OE-core] [CONSOLIDATED PULL 10/20] package.bbclass: add support to split Qt translation files

2011-06-06 Thread Saul Wold
From: Otavio Salvador ota...@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 ota...@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 1e6a872..e4be20f 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -343,6 +343,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)
@@ -358,12 +360,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...
@@ -372,13 +391,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


___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core


Re: [OE-core] [CONSOLIDATED PULL 10/20] package.bbclass: add support to split Qt translation files

2011-06-06 Thread Otavio Salvador
On Mon, Jun 6, 2011 at 17:14, Richard Purdie
richard.pur...@linuxfoundation.org wrote:
 On Sun, 2011-06-05 at 23:44 -0700, Saul Wold wrote:
 From: Otavio Salvador ota...@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 ota...@ossystems.com.br

 Am I right in assuming all these qt applications use one of the qt
 classes?

I'd expect it.

 I do wonder if this shouldn't be part of one of the qt classes as part
 of a package_do_split_locales_append() or prepend() style function from
 a code separation point of view.

I believe there's going to have a lot of code duplication between the
two to do that.

 I do appreciate the need to influence
 the list of locales although you could do that through directory
 creation or an extra variable but we could enhance package.bbclass to
 support that.

I don't understand what you meant by this. Mind to elaborate it a bit more?

...
 +             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]

 Regardless, this is changing ln under some weird circumstances.
 Shouldn't the code adding this to the locales list be handling this
 translation? I can see potential duplication between the arrays and a
 host of other nasty bugs with this code as it stands :/. Please take
 that regexp out of this loop at the very least.

Where do you suggest me to move the regexp to?

-- 
Otavio Salvador                             O.S. Systems
E-mail: ota...@ossystems.com.br  http://www.ossystems.com.br
Mobile: +55 53 9981-7854              http://projetos.ossystems.com.br

___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core