From 82492f5d765b70cc87385fb887008df89fac878e Mon Sep 17 00:00:00 2001 From: Patrick Griffis Date: Fri, 7 Apr 2017 20:57:52 -0400 Subject: i18n: Add data_dirs kwarg to merge_file() For parity with gettext() Fixes #1565 --- mesonbuild/modules/i18n.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'mesonbuild/modules') diff --git a/mesonbuild/modules/i18n.py b/mesonbuild/modules/i18n.py index 5738cb3..78112fc 100644 --- a/mesonbuild/modules/i18n.py +++ b/mesonbuild/modules/i18n.py @@ -60,8 +60,15 @@ class I18nModule(ExtensionModule): if file_type not in VALID_TYPES: raise MesonException('i18n: "{}" is not a valid type {}'.format(file_type, VALID_TYPES)) - kwargs['command'] = ['msgfmt', '--' + file_type, - '--template', '@INPUT@', '-d', podir, '-o', '@OUTPUT@'] + datadirs = mesonlib.stringlistify(kwargs.pop('data_dirs', [])) + datadirs = '--datadirs=' + ':'.join(datadirs) if datadirs else None + + command = [state.environment.get_build_command(), '--internal', 'msgfmthelper', + '@INPUT@', '@OUTPUT@', file_type, podir] + if datadirs: + command.append(datadirs) + + kwargs['command'] = command ct = build.CustomTarget(kwargs['output'] + '_merge', state.subdir, kwargs) return ModuleReturnValue(ct, [ct]) -- cgit v1.1 From 12504b23854e8ce839d2373a024ca3704b3db559 Mon Sep 17 00:00:00 2001 From: Patrick Griffis Date: Fri, 7 Apr 2017 21:24:35 -0400 Subject: i18n: Fix handling relative data_dirs --- mesonbuild/modules/i18n.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'mesonbuild/modules') diff --git a/mesonbuild/modules/i18n.py b/mesonbuild/modules/i18n.py index 78112fc..c4e29cf 100644 --- a/mesonbuild/modules/i18n.py +++ b/mesonbuild/modules/i18n.py @@ -49,6 +49,12 @@ PRESET_ARGS = { class I18nModule(ExtensionModule): + @staticmethod + def _get_data_dirs(state, dirs): + """Returns source directories of relative paths""" + src_dir = path.join(state.environment.get_source_dir(), state.subdir) + return [path.join(src_dir, d) for d in dirs] + def merge_file(self, state, args, kwargs): podir = kwargs.pop('po_dir', None) if not podir: @@ -60,7 +66,7 @@ class I18nModule(ExtensionModule): if file_type not in VALID_TYPES: raise MesonException('i18n: "{}" is not a valid type {}'.format(file_type, VALID_TYPES)) - datadirs = mesonlib.stringlistify(kwargs.pop('data_dirs', [])) + datadirs = self._get_data_dirs(state, mesonlib.stringlistify(kwargs.pop('data_dirs', []))) datadirs = '--datadirs=' + ':'.join(datadirs) if datadirs else None command = [state.environment.get_build_command(), '--internal', 'msgfmthelper', @@ -79,7 +85,7 @@ class I18nModule(ExtensionModule): raise coredata.MesonException('Can not do gettext because xgettext is not installed.') packagename = args[0] languages = mesonlib.stringlistify(kwargs.get('languages', [])) - datadirs = mesonlib.stringlistify(kwargs.get('data_dirs', [])) + datadirs = self._get_data_dirs(state, mesonlib.stringlistify(kwargs.get('data_dirs', []))) extra_args = mesonlib.stringlistify(kwargs.get('args', [])) preset = kwargs.pop('preset', None) -- cgit v1.1