diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2013-09-12 19:53:32 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2013-09-12 19:53:32 +0300 |
commit | 0e19d90e9734c7243cd6f3cf322d7105eed9d008 (patch) | |
tree | 1f8f0476f985c7056927d56c77a270853b9b8a23 | |
parent | b422afac9baed97e0a603c08a2fb22369249b834 (diff) | |
download | meson-0e19d90e9734c7243cd6f3cf322d7105eed9d008.zip meson-0e19d90e9734c7243cd6f3cf322d7105eed9d008.tar.gz meson-0e19d90e9734c7243cd6f3cf322d7105eed9d008.tar.bz2 |
Now can generate mo files from po files and install them.
-rw-r--r-- | backends.py | 31 | ||||
-rw-r--r-- | coredata.py | 1 | ||||
-rwxr-xr-x | meson_install.py | 18 | ||||
-rw-r--r-- | test cases/frameworks/6 gettext/po/de.po | 2 | ||||
-rw-r--r-- | test cases/frameworks/6 gettext/po/fi.po | 2 | ||||
-rw-r--r-- | test cases/frameworks/6 gettext/src/meson.build | 2 |
6 files changed, 50 insertions, 6 deletions
diff --git a/backends.py b/backends.py index 7095321..aa79c7d 100644 --- a/backends.py +++ b/backends.py @@ -339,6 +339,13 @@ class NinjaBackend(Backend): elem.add_item('FILELIST', os.path.join(self.environment.get_source_dir(), input_file)) elem.add_item('OUTDIR', os.path.join(self.environment.get_source_dir(), subdir)) elem.write(outfile) + for l in languages: + infile = os.path.join(self.environment.get_source_dir(), subdir, l + '.po') + outfilename = os.path.join(subdir, l + '.gmo') + lelem = NinjaBuildElement(outfilename, 'GEN_GMO', infile) + lelem.add_item('INFILE', infile) + lelem.add_item('OUTFILE', outfilename) + lelem.write(outfile) def generate_coverage_rules(self, outfile): (gcovr_exe, lcov_exe, genhtml_exe) = environment.find_coverage_tools() @@ -382,15 +389,27 @@ class NinjaBackend(Backend): elem.add_dep('all') elem.add_item('DESC', 'Installing files.') elem.add_item('COMMAND', [sys.executable, install_script, install_data_file]) - elem.write(outfile) - self.generate_target_install(d) self.generate_header_install(d) self.generate_man_install(d) self.generate_data_install(d) + self.generate_po_install(d, elem) + elem.write(outfile) + ofile = open(install_data_file, 'wb') pickle.dump(d, ofile) + def generate_po_install(self, d, elem): + for p in self.build.pot: + (package_name, languages, subdir) = p + # FIXME: assumes only one po package per source + d.po_package_name = package_name + for lang in languages: + rel_src = os.path.join(subdir, lang + '.gmo') + src_file = os.path.join(self.environment.get_build_dir(), rel_src) + d.po.append((src_file, self.environment.coredata.localedir, lang)) + elem.add_dep(rel_src) + def generate_target_install(self, d): libdir = self.environment.get_libdir() bindir = self.environment.get_bindir() @@ -530,6 +549,14 @@ class NinjaBackend(Backend): outfile.write(rule) outfile.write(command) outfile.write(desc) + outfile.write('\n') + rule = 'rule GEN_GMO\n' + command = ' command = msgfmt $INFILE -o $OUTFILE\n' + desc = ' description = Generating gmo file $OUTFILE\n' + outfile.write(rule) + outfile.write(command) + outfile.write(desc) + outfile.write('\n') def generate_static_link_rules(self, is_cross, outfile): if is_cross: diff --git a/coredata.py b/coredata.py index bfbcb4c..2e34728 100644 --- a/coredata.py +++ b/coredata.py @@ -30,6 +30,7 @@ class CoreData(): self.includedir = options.includedir self.datadir = options.datadir self.mandir = options.mandir + self.localedir = options.localedir self.backend = options.backend self.buildtype = options.buildtype self.strip = options.strip diff --git a/meson_install.py b/meson_install.py index 38ca621..54d56a3 100755 --- a/meson_install.py +++ b/meson_install.py @@ -25,6 +25,8 @@ class InstallData(): self.headers = [] self.man = [] self.data = [] + self.po_package_name = '' + self.po = [] def do_install(datafilename): ifile = open(datafilename, 'rb') @@ -40,6 +42,20 @@ def do_install(datafilename): install_headers(d) install_man(d) install_data(d) + install_po(d) + +def install_po(d): + packagename = d.po_package_name + for f in d.po: + srcfile = f[0] + localedir = f[1] + languagename = f[2] + outfile = os.path.join(d.prefix, localedir, languagename, 'LC_MESSAGES', + packagename + '.mo') + os.makedirs(os.path.split(outfile)[0], exist_ok=True) + shutil.copyfile(srcfile, outfile) + shutil.copystat(srcfile, outfile) + print('Installing %s to %s.' % (srcfile, outfile)) def install_data(d): for i in d.data: @@ -88,7 +104,7 @@ def install_targets(d): fname = t[0] outdir = os.path.join(d.prefix, t[1]) aliases = t[2] - outname = os.path.join(outdir, fname) + outname = os.path.join(outdir, os.path.split(fname)[-1]) should_strip = t[3] print('Installing %s to %s' % (fname, outname)) os.makedirs(outdir, exist_ok=True) diff --git a/test cases/frameworks/6 gettext/po/de.po b/test cases/frameworks/6 gettext/po/de.po index 1b3f2ae..8d9d6e7 100644 --- a/test cases/frameworks/6 gettext/po/de.po +++ b/test cases/frameworks/6 gettext/po/de.po @@ -19,4 +19,4 @@ msgstr "" #: src/intlmain.c:15 msgid "International greeting." -msgstr "Internationale GruĂ." +msgstr "Internationale Gruss." diff --git a/test cases/frameworks/6 gettext/po/fi.po b/test cases/frameworks/6 gettext/po/fi.po index 362ac43..114cb10 100644 --- a/test cases/frameworks/6 gettext/po/fi.po +++ b/test cases/frameworks/6 gettext/po/fi.po @@ -19,4 +19,4 @@ msgstr "" #: src/intlmain.c:15 msgid "International greeting." -msgstr "KansainvĂ€linen tervehdys." +msgstr "Maailman tervehdys." diff --git a/test cases/frameworks/6 gettext/src/meson.build b/test cases/frameworks/6 gettext/src/meson.build index c53f566..db2490f 100644 --- a/test cases/frameworks/6 gettext/src/meson.build +++ b/test cases/frameworks/6 gettext/src/meson.build @@ -1 +1 @@ -executable('intlprog', 'intlmain.c') +executable('intlprog', 'intlmain.c', install : true) |