From: Dylan Baker Date: Fri, 24 Aug 2018 13:49:55 +0000 (-0700) Subject: util/xmlpool: Update for meson generation X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0621e91a8c975e34f2c2092ad3013d6ff81b5ac2;p=mesa.git util/xmlpool: Update for meson generation Meson won't put the .gmo files in the layout that python's gettext.translation() expects, it puts them in the build directory in a flat layout. This modifies android and autotools to do the same (scons doesn't work with translations at all) v3: - Squash 4 patches into this patch Reviewed-by: Emil Velikov --- diff --git a/src/util/Android.mk b/src/util/Android.mk index e463b63e101..993a7f179f4 100644 --- a/src/util/Android.mk +++ b/src/util/Android.mk @@ -87,13 +87,13 @@ $(MESA_DRI_OPTIONS_LANGS:%=$(intermediates)/xmlpool/%.po): $(intermediates)/xmlp PRIVATE_SCRIPT := $(LOCAL_PATH)/xmlpool/gen_xmlpool.py PRIVATE_LOCALEDIR := $(intermediates)/xmlpool PRIVATE_TEMPLATE_HEADER := $(LOCAL_PATH)/xmlpool/t_options.h -PRIVATE_MO_FILES := $(MESA_DRI_OPTIONS_LANGS:%=$(intermediates)/xmlpool/%/LC_MESSAGES/options.mo) +PRIVATE_MO_FILES := $(MESA_DRI_OPTIONS_LANGS:%=$(intermediates)/xmlpool/%.gmo) LOCAL_GENERATED_SOURCES += $(PRIVATE_MO_FILES) $(LOCAL_GENERATED_SOURCES): PRIVATE_PYTHON := $(MESA_PYTHON2) -$(PRIVATE_MO_FILES): $(intermediates)/xmlpool/%/LC_MESSAGES/options.mo: $(intermediates)/xmlpool/%.po +$(PRIVATE_MO_FILES): $(intermediates)/xmlpool/%.gmo: $(intermediates)/xmlpool/%.po mkdir -p $(dir $@) msgfmt -o $@ $< diff --git a/src/util/xmlpool/Makefile.am b/src/util/xmlpool/Makefile.am index 1c14311dcf5..f993070ef67 100644 --- a/src/util/xmlpool/Makefile.am +++ b/src/util/xmlpool/Makefile.am @@ -47,10 +47,10 @@ POS=ca.po de.po es.po nl.po fr.po sv.po # Don't change anything below, unless you know what you're doing. # LANGS=$(POS:%.po=%) -MOS=$(POS:%.po=%/LC_MESSAGES/options.mo) +MOS=$(POS:%.po=%.gmo) POT=xmlpool.pot -.PHONY: all clean pot po mo +.PHONY: all clean clean-local pot po mo EXTRA_DIST = \ gen_xmlpool.py \ @@ -69,17 +69,19 @@ CLEANFILES = \ $(POS) \ $(MOS) +clean-local: + rm -f $(MOS) + # Default target options.h LOCALEDIR := . options.h: t_options.h $(MOS) $(AM_V_GEN) $(PYTHON) $(PYTHON_FLAGS) $(srcdir)/gen_xmlpool.py $(srcdir)/t_options.h $(LOCALEDIR) $(LANGS) > options.h # Update .mo files from the corresponding .po files. -%/LC_MESSAGES/options.mo: %.po +%.gmo: %.po @mo="$@"; \ lang=$${mo%%/*}; \ echo "Updating ($$lang) $@ from $?."; \ - $(MKDIR_P) $$lang/LC_MESSAGES; \ msgfmt -o $@ $? # Use this target to create or update .po files with new messages in diff --git a/src/util/xmlpool/gen_xmlpool.py b/src/util/xmlpool/gen_xmlpool.py index b40f295738e..0ad51eaa785 100644 --- a/src/util/xmlpool/gen_xmlpool.py +++ b/src/util/xmlpool/gen_xmlpool.py @@ -8,12 +8,12 @@ # from __future__ import print_function - import argparse -import io -import sys import gettext +import io +import os import re +import sys parser = argparse.ArgumentParser() parser.add_argument('template') @@ -166,8 +166,10 @@ def expandMatches (matches, translations, end=None): translations = [("en", gettext.NullTranslations())] for lang in args.languages: try: - trans = gettext.translation ("options", args.localedir, [lang]) - except IOError: + filename = os.path.join(args.localedir, '{}.gmo'.format(lang)) + with io.open(filename, 'rb') as f: + trans = gettext.GNUTranslations(f) + except (IOError, OSError): sys.stderr.write ("Warning: language '%s' not found.\n" % lang) continue translations.append ((lang, trans)) diff --git a/src/util/xmlpool/meson.build b/src/util/xmlpool/meson.build index 8d645ce385f..ae7c951a097 100644 --- a/src/util/xmlpool/meson.build +++ b/src/util/xmlpool/meson.build @@ -30,7 +30,7 @@ xmlpool_options_h = custom_target( input : ['gen_xmlpool.py', 't_options.h'], output : 'options.h', command : [ - prog_python, '@INPUT@', meson.current_source_dir(), _langs, + prog_python, '@INPUT@', meson.current_build_dir(), _langs, ], capture : true, depend_files : _langs_po_files,